diff --git a/build.sh b/build.sh index 7e230e81d..aa1543f4d 100755 --- a/build.sh +++ b/build.sh @@ -129,13 +129,6 @@ strip_libs() { cp jni/application/src/libapplication-armeabi-v7a.so obj/local/armeabi-v7a/libapplication.so && \ cp jni/application/src/libapplication-armeabi-v7a.so libs/armeabi-v7a/libapplication.so && \ `which ndk-build | sed 's@/ndk-build@@'`/toolchains/arm-linux-androideabi-${NDK_TOOLCHAIN_VERSION}/prebuilt/$MYARCH/bin/arm-linux-androideabi-strip --strip-unneeded libs/armeabi-v7a/libapplication.so - grep "CustomBuildScript=y" ../AndroidAppSettings.cfg > /dev/null && \ - grep "MultiABI=" ../AndroidAppSettings.cfg | grep "armeabi-v7a-hard" > /dev/null && \ - echo Stripping libapplication-armeabi-v7a-hard.so by hand && \ - rm obj/local/armeabi-v7a-hard/libapplication.so && \ - cp jni/application/src/libapplication-armeabi-v7a-hard.so obj/local/armeabi-v7a-hard/libapplication.so && \ - cp jni/application/src/libapplication-armeabi-v7a-hard.so libs/armeabi-v7a/libapplication.so && \ - `which ndk-build | sed 's@/ndk-build@@'`/toolchains/arm-linux-androideabi-${NDK_TOOLCHAIN_VERSION}/prebuilt/$MYARCH/bin/arm-linux-androideabi-strip --strip-unneeded libs/armeabi-v7a/libapplication.so grep "CustomBuildScript=y" ../AndroidAppSettings.cfg > /dev/null && \ grep "MultiABI=" ../AndroidAppSettings.cfg | grep "all\\|mips" > /dev/null && \ echo Stripping libapplication-mips.so by hand && \ @@ -187,14 +180,14 @@ cd project && env PATH=$NDKBUILDPATH BUILD_NUM_CPUS=$NCPU nice -n19 ndk-build -j ./AndroidPostBuild.sh `pwd`/../../../bin/MainActivity-release-unsigned.apk || exit 1 ; \ cd ../../.. ; \ } || exit 1 ; \ - jarsigner -tsa http://timestamp.digicert.com -verbose -keystore ~/.android/debug.keystore -storepass android -sigalg MD5withRSA -digestalg SHA1 bin/MainActivity-release-unsigned.apk androiddebugkey || exit 1 ; \ + jarsigner -verbose -keystore ~/.android/debug.keystore -storepass android -sigalg MD5withRSA -digestalg SHA1 bin/MainActivity-release-unsigned.apk androiddebugkey || exit 1 ; \ rm -f bin/MainActivity-debug.apk ; \ zipalign 4 bin/MainActivity-release-unsigned.apk bin/MainActivity-debug.apk || exit 1 ; \ else \ $quick_rebuild && { \ ln -s -f libs lib ; \ zip -u -r bin/MainActivity-debug-unaligned.apk lib assets || exit 1 ; \ - jarsigner -tsa http://timestamp.digicert.com -verbose -keystore ~/.android/debug.keystore -storepass android -sigalg MD5withRSA -digestalg SHA1 bin/MainActivity-debug-unaligned.apk androiddebugkey || exit 1 ; \ + jarsigner -verbose -keystore ~/.android/debug.keystore -storepass android -sigalg MD5withRSA -digestalg SHA1 bin/MainActivity-debug-unaligned.apk androiddebugkey || exit 1 ; \ rm -f bin/MainActivity-debug.apk ; \ zipalign 4 bin/MainActivity-debug-unaligned.apk bin/MainActivity-debug.apk || exit 1 ; \ } || ant debug || exit 1 ; \ diff --git a/changeAppSettings.sh b/changeAppSettings.sh index bc4441acf..db618456a 100755 --- a/changeAppSettings.sh +++ b/changeAppSettings.sh @@ -369,11 +369,11 @@ echo >> AndroidAppSettings.cfg echo "# Minimum amount of RAM application requires, in Mb, SDL will print warning to user if it's lower" >> AndroidAppSettings.cfg echo AppMinimumRAM=$AppMinimumRAM >> AndroidAppSettings.cfg echo >> AndroidAppSettings.cfg -echo "# GCC version, 4.6 (default) or 4.8, CLANG is not supported yet" >> AndroidAppSettings.cfg +echo "# GCC version, or 'clang' for CLANG" >> AndroidAppSettings.cfg echo NDK_TOOLCHAIN_VERSION=$NDK_TOOLCHAIN_VERSION >> AndroidAppSettings.cfg echo >> AndroidAppSettings.cfg echo "# Specify architectures to compile, 'all' or 'y' to compile for all architectures." >> AndroidAppSettings.cfg -echo "# Available architectures: armeabi armeabi-v7a armeabi-v7a-hard x86 mips" >> AndroidAppSettings.cfg +echo "# Available architectures: armeabi armeabi-v7a x86 mips arm64-v8a" >> AndroidAppSettings.cfg echo MultiABI=\'$MultiABI\' >> AndroidAppSettings.cfg echo >> AndroidAppSettings.cfg echo "# Optional shared libraries to compile - removing some of them will save space" >> AndroidAppSettings.cfg @@ -943,6 +943,7 @@ if [ "$GooglePlayGameServicesId" = "n" -o -z "$GooglePlayGameServicesId" ] ; the grep 'google-play-services' project/local.properties > /dev/null && { $SEDI 's/.*google-play-services.*//g' project/local.properties rm -f project/libs/android-support-v4.jar + rm -f project/libs/play-services-games.jar } else for F in $JAVA_SRC_PATH/googleplaygameservices/*.java; do diff --git a/project/java/DataDownloader.java b/project/java/DataDownloader.java index e0484228d..5fa4a6a74 100644 --- a/project/java/DataDownloader.java +++ b/project/java/DataDownloader.java @@ -53,6 +53,9 @@ import android.text.SpannedString; import android.app.AlertDialog; import android.content.DialogInterface; +import android.Manifest; +import android.content.pm.PackageManager; + class CountingInputStream extends BufferedInputStream { @@ -328,6 +331,19 @@ class DataDownloader extends Thread Status.setText( downloadCount + "/" + downloadTotal + ": " + res.getString(R.string.connecting_to, url) ); if( url.indexOf("obb:") == 0 ) // APK expansion file provided by Google Play { + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) + { + int permissionCheck = Parent.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE); + if (permissionCheck != PackageManager.PERMISSION_GRANTED && !Parent.writeExternalStoragePermissionDialogAnswered) + { + Parent.requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 0); + while( !Parent.writeExternalStoragePermissionDialogAnswered ) + { + try{ Thread.sleep(300); } catch (InterruptedException e) {} + } + } + } + url = getObbFilePath(url); InputStream stream1 = null; try { diff --git a/project/java/MainActivity.java b/project/java/MainActivity.java index b3c0a880c..007cd8d2d 100644 --- a/project/java/MainActivity.java +++ b/project/java/MainActivity.java @@ -1580,6 +1580,11 @@ public class MainActivity extends Activity { Log.i("SDL", "libSDL: Record audio permission: " + (grantResults[0] == PackageManager.PERMISSION_GRANTED ? "GRANTED" : "DENIED")); } + if (Manifest.permission.WRITE_EXTERNAL_STORAGE.equals(permissions[0])) + { + Log.i("SDL", "libSDL: Write external storage permission: " + (grantResults[0] == PackageManager.PERMISSION_GRANTED ? "GRANTED" : "DENIED")); + writeExternalStoragePermissionDialogAnswered = true; + } } public FrameLayout getVideoLayout() { return _videoLayout; } @@ -1620,6 +1625,7 @@ public class MainActivity extends Activity public LinkedList textInput = new LinkedList (); public static MainActivity instance = null; + public boolean writeExternalStoragePermissionDialogAnswered = false; } // *** HONEYCOMB / ICS FIX FOR FULLSCREEN MODE, by lmak *** diff --git a/project/java/Video.java b/project/java/Video.java index 55b8bea00..9b54c4386 100644 --- a/project/java/Video.java +++ b/project/java/Video.java @@ -63,6 +63,8 @@ import android.content.Intent; import android.view.View; import android.view.Display; import android.net.Uri; +import android.Manifest; +import android.content.pm.PackageManager; class Mouse @@ -947,6 +949,18 @@ class DemoRenderer extends GLSurfaceView_SDL.Renderer Settings.setConfigOptionFromSDL(option, value); } + public void requestExternalStorageRuntimePermissionFromSDL() + { + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) + { + int permissionCheck = context.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE); + if (permissionCheck != PackageManager.PERMISSION_GRANTED && !context.writeExternalStoragePermissionDialogAnswered) + { + context.requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 0); + } + } + } + private int PowerOf2(int i) { int value = 1; diff --git a/project/jni/Application.mk b/project/jni/Application.mk index ea9e2e0ee..acf40500f 100644 --- a/project/jni/Application.mk +++ b/project/jni/Application.mk @@ -5,4 +5,4 @@ include jni/Settings.mk APP_STL := gnustl_static APP_CFLAGS := -O3 -DNDEBUG -g # arm-linux-androideabi-4.4.3 crashes in -O0 mode on SDL sources APP_PLATFORM := android-14 # Android 4.0, it should be backward compatible to previous versions -APP_PIE := false # This feature makes executables incompatible to Android API 15 or lower +APP_PIE := true # This feature makes executables incompatible to Android API 15 or lower, but executables without PIE will not run on Android 5.0 and newer diff --git a/project/jni/Makefile.prebuilt b/project/jni/Makefile.prebuilt index 97548c6e8..8747d16c0 100644 --- a/project/jni/Makefile.prebuilt +++ b/project/jni/Makefile.prebuilt @@ -2,14 +2,14 @@ # TODO: libboost, libffmpeg, libpython (used only in GemRB) ARCHES32 := armeabi armeabi-v7a x86 mips -ARCHES64 := arm64-v8a x86_64 +ARCHES64 := arm64-v8a ICONV := $(foreach ARCH, $(ARCHES32), iconv/lib/$(ARCH)/libiconv.so iconv/lib/$(ARCH)/libcharset.so) ICU_LIBS := data i18n io le lx test tu uc ICU := $(foreach ARCH, $(ARCHES32), $(foreach NAME, $(ICU_LIBS), icuuc/lib/$(ARCH)/libicu$(NAME).a)) -OPENSSL := $(foreach ARCH, $(ARCHES32), openssl/lib-$(ARCH)/libcrypto.so.sdl.0.so openssl/lib-$(ARCH)/libssl.so.sdl.0.so) +OPENSSL := $(foreach ARCH, $(ARCHES32) $(ARCHES64), openssl/lib-$(ARCH)/libcrypto.so.sdl.0.so openssl/lib-$(ARCH)/libssl.so.sdl.0.so) LIBS := $(ICONV) $(ICU) $(OPENSSL) diff --git a/project/jni/application/ballfield/AndroidAppSettings.cfg b/project/jni/application/ballfield/AndroidAppSettings.cfg index f386c57e0..e75462870 100644 --- a/project/jni/application/ballfield/AndroidAppSettings.cfg +++ b/project/jni/application/ballfield/AndroidAppSettings.cfg @@ -170,7 +170,7 @@ AppUsesMultitouch=y AppRecordsAudio=n # Application needs to access SD card. If your data files are bigger than 5 Mb, enable it. (y) / (n) -AccessSdCard= +AccessSdCard=y # Application needs Internet access. If you disable it, you'll have to bundle all your data files inside .apk (y) / (n) AccessInternet= @@ -229,11 +229,11 @@ FirstStartMenuOptions='SettingsMenu.DummyMenu' AppMinimumRAM=0 # GCC version, 4.6 (default) or 4.8, CLANG is not supported yet -NDK_TOOLCHAIN_VERSION= +NDK_TOOLCHAIN_VERSION=clang # Specify architectures to compile, 'all' or 'y' to compile for all architectures. # Available architectures: armeabi armeabi-v7a armeabi-v7a-hard x86 mips -MultiABI='armeabi-v7a x86' +MultiABI='all' # Optional shared libraries to compile - removing some of them will save space # MP3 support by libMAD is encumbered by patents and libMAD is GPL-ed @@ -247,7 +247,7 @@ CustomBuildScript=n AppCflags='-O2 -finline-functions' # Additional LDFLAGS for application -AppLdflags='-fuse-ld=bfd' +AppLdflags='' # If application has headers with the same name as system headers, this option tries to fix compiler flags to make it compilable AppOverlapsSystemHeaders= diff --git a/project/jni/application/ballfield/ballfield.cpp b/project/jni/application/ballfield/ballfield.cpp index c50770387..d74dc789b 100644 --- a/project/jni/application/ballfield/ballfield.cpp +++ b/project/jni/application/ballfield/ballfield.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #define fprintf(X, ...) __android_log_print(ANDROID_LOG_INFO, "Ballfield", __VA_ARGS__) #define printf(...) __android_log_print(ANDROID_LOG_INFO, "Ballfield", __VA_ARGS__) @@ -686,7 +687,10 @@ int main(int argc, char* argv[]) if(evt.key.keysym.sym == SDLK_0) SDL_ANDROID_SetScreenKeyboardButtonShown(SDL_ANDROID_SCREENKEYBOARD_BUTTON_2, 1); if(evt.key.keysym.sym == SDLK_1) + { SDL_ANDROID_SetScreenKeyboardButtonShown(SDL_ANDROID_SCREENKEYBOARD_BUTTON_2, 0); + SDL_ANDROID_RequestExternalStorageRuntimePermission(); + } if(evt.key.keysym.sym == SDLK_2) { SDL_ANDROID_SetScreenKeyboardButtonShown(SDL_ANDROID_SCREENKEYBOARD_BUTTON_DPAD, 1); diff --git a/project/jni/application/openarena/AndroidAppSettings.cfg b/project/jni/application/openarena/AndroidAppSettings.cfg index 407336b0a..e9148fe76 100644 --- a/project/jni/application/openarena/AndroidAppSettings.cfg +++ b/project/jni/application/openarena/AndroidAppSettings.cfg @@ -64,7 +64,7 @@ SdlVideoResize=y SdlVideoResizeKeepAspect=n # Do not allow device to sleep when the application is in foreground, set this for video players or apps which use accelerometer -InhibitSuspend=n +InhibitSuspend=y # Create Android service, so the app is less likely to be killed while in background CreateService= @@ -238,7 +238,7 @@ FirstStartMenuOptions='' AppMinimumRAM=300 # GCC version, 4.6 (default) or 4.8, CLANG is not supported yet -NDK_TOOLCHAIN_VERSION= +NDK_TOOLCHAIN_VERSION=clang # Specify architectures to compile, 'all' or 'y' to compile for all architectures. # Available architectures: armeabi armeabi-v7a armeabi-v7a-hard x86 mips diff --git a/project/jni/application/openarena/AndroidBuild.sh b/project/jni/application/openarena/AndroidBuild.sh index d9068af31..adf998238 100755 --- a/project/jni/application/openarena/AndroidBuild.sh +++ b/project/jni/application/openarena/AndroidBuild.sh @@ -16,11 +16,12 @@ if [ "$1" = "armeabi-v7a" ]; then ( ) || exit 1 fi -env NO_SHARED_LIBS=1 V=1 ../setEnvironment-$1.sh make -C vm -j8 PLATFORM=android ARCH=$1 USE_LOCAL_HEADERS=0 BUILD_MISSIONPACK=0 || exit 1 +#env NO_SHARED_LIBS=1 V=1 ../setEnvironment-$1.sh make -C vm -j8 PLATFORM=android ARCH=$1 USE_LOCAL_HEADERS=0 BUILD_MISSIONPACK=0 || exit 1 # Do not generate shared game logic libs - QVM files are used instead # ../setEnvironment-armeabi.sh sh -c "cd vm/build/release-android-$1/baseq3 && \$STRIP --strip-unneeded *.so && zip ../../../../AndroidData/binaries.zip *.so" +env PATH=`pwd`/..:$PATH \ ../setEnvironment-$1.sh make -j8 -C engine release \ PLATFORM=android ARCH=$1 USE_GLES=1 USE_LOCAL_HEADERS=0 BUILD_CLIENT_SMP=0 \ USE_OPENAL=1 USE_OPENAL_DLOPEN=0 USE_VOIP=1 USE_CURL=1 USE_CURL_DLOPEN=0 USE_CODEC_VORBIS=1 USE_MUMBLE=0 USE_FREETYPE=1 \ diff --git a/project/jni/application/openarena/engine b/project/jni/application/openarena/engine index acd190733..3c94b5df0 160000 --- a/project/jni/application/openarena/engine +++ b/project/jni/application/openarena/engine @@ -1 +1 @@ -Subproject commit acd190733ec13c64ee2f46b36c4a66b5b5272e32 +Subproject commit 3c94b5df06ffe8755ce213a495ee99283714f3c1 diff --git a/project/jni/application/openarena/oa-reupload-vm.sh b/project/jni/application/openarena/oa-reupload-vm.sh index 24cdf6eec..9b8e901ee 100755 --- a/project/jni/application/openarena/oa-reupload-vm.sh +++ b/project/jni/application/openarena/oa-reupload-vm.sh @@ -1,3 +1,4 @@ #!/bin/sh adb shell rm /sdcard/Android/data/ws.openarena.sdl/files/libsdl-DownloadFinished-1.flag +adb shell rm /mnt/extSdCard/Android/data/ws.openarena.sdl/files/libsdl-DownloadFinished-1.flag [ -n "$1" ] && adb shell rm -r /sdcard/Android/data/ws.openarena.sdl/files/.openarena diff --git a/project/jni/application/openarena/vm b/project/jni/application/openarena/vm index 3c58263af..84ebfb59e 160000 --- a/project/jni/application/openarena/vm +++ b/project/jni/application/openarena/vm @@ -1 +1 @@ -Subproject commit 3c58263af7f8831df6e81d5a3bb0a2e487bcc807 +Subproject commit 84ebfb59e31c24134b865cbe0d0fa1eb7aa7c57d diff --git a/project/jni/application/openttd/AndroidAppSettings.cfg b/project/jni/application/openttd/AndroidAppSettings.cfg index ce698ab2b..7a66372b0 100644 --- a/project/jni/application/openttd/AndroidAppSettings.cfg +++ b/project/jni/application/openttd/AndroidAppSettings.cfg @@ -50,6 +50,9 @@ NeedStencilBuffer=n # you need this option only if you're developing 3-d app (y) or (n) NeedGles2=n +# Use glshim library for provide OpenGL 1.x functionality to OpenGL ES accelerated cards (y) or (n) +UseGlshim= + # Application uses software video buffer - you're calling SDL_SetVideoMode() without SDL_HWSURFACE and without SDL_OPENGL, # this will allow small speed optimization. Enable this even when you're using SDL_HWSURFACE. (y) or (n) SwVideoMode=y @@ -80,6 +83,14 @@ CompatibilityHacksStaticInit=y # On-screen Android soft text input emulates hardware keyboard, this will only work with Hackers Keyboard app (y)/(n) CompatibilityHacksTextInputEmulatesHwKeyboard=n +# Built-in text input keyboards with custom layouts for emulators, requires CompatibilityHacksTextInputEmulatesHwKeyboard=y +# 0 or empty - standard Android keyboard +# 1 - Simple QWERTY keyboard, no function keys, no arrow keys +# 2 - Commodore 64 keyboard +# 3 - Amiga keyboard +# 4 - Atari800 keyboard +TextInputKeyboard= + # Hack for broken devices: prevent audio chopping, by sleeping a bit after pushing each audio chunk (y)/(n) CompatibilityHacksPreventAudioChopping=n @@ -148,6 +159,9 @@ AppUsesAccelerometer=n # Application uses gyroscope (y) or (n), the gyroscope will be used as joystick 1 axes 2-4 AppUsesGyroscope=n +# Application uses orientation sensor (y) or (n), reported as joystick 1 axes 8-10 +AppUsesOrientationSensor= + # Use gyroscope to move mouse cursor (y) or (n), it eats battery, and can be disabled in settings, do not use with AppUsesGyroscope setting MoveMouseWithGyroscope= @@ -159,7 +173,7 @@ AppUsesMultitouch=n # This option will add additional permission to Android manifest (y)/(n) AppRecordsAudio=n -# Application needs to access SD card. If your data files are bigger than 5 Mb, enable it. (y) / (n) +# Application needs to access SD card. Always disable it, unless you want to access user photos and downloads. (y) / (n) AccessSdCard=n # Application needs Internet access. If you disable it, you'll have to bundle all your data files inside .apk (y) / (n) @@ -196,6 +210,11 @@ RedefinedKeysScreenKbNames="LALT RETURN KP_PLUS KP_MINUS SPACE DELETE KP_PLUS KP # 2 = Sun by Sirea (yellow, with round joystick) # 3 = Keen by Gerstrong (multicolor, with round joystick) # 4 = Retro by Santiago Radeff (red/white, with cross joystick) +# 5 = GameBoy from RetroArch +# 6 = PlayStation from RetroArch +# 7 = SuperNintendo from RetroArch +# 8 = DualShock from RetroArch +# 9 = Nintendo64 from RetroArch TouchscreenKeysTheme=2 # Redefine gamepad keys to SDL keysyms, button order is: @@ -206,24 +225,24 @@ RedefinedKeysGamepad="LALT RETURN KP_PLUS KP_MINUS MOUSE_RIGHT MOUSE_LEFT SPACE StartupMenuButtonTimeout=3000 # Menu items to hide from startup menu, available menu items: -# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout SettingsMenuKeyboard.ScreenKeyboardAdvanced +# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.CommandlineConfig SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout SettingsMenuKeyboard.ScreenKeyboardAdvanced HiddenMenuOptions='SettingsMenuMouse.DisplaySizeConfig' # Menu items to show at startup - this is Java code snippet, leave empty for default # new SettingsMenuMisc.ShowReadme(), (AppUsesMouse \&\& \! ForceRelativeMouseMode \? new SettingsMenuMouse.DisplaySizeConfig(true) : new SettingsMenu.DummyMenu()), new SettingsMenuMisc.OptionalDownloadConfig(true), new SettingsMenuMisc.GyroscopeCalibration() # Available menu items: -# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout SettingsMenuKeyboard.ScreenKeyboardAdvanced +# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.CommandlineConfig SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout SettingsMenuKeyboard.ScreenKeyboardAdvanced FirstStartMenuOptions='SettingsMenuMisc.OptionalDownloadConfig' # Minimum amount of RAM application requires, in Mb, SDL will print warning to user if it's lower AppMinimumRAM=0 -# GCC version, 4.6 (default) or 4.8, CLANG is not supported yet -NDK_TOOLCHAIN_VERSION= +# GCC version, or 'clang' for CLANG +NDK_TOOLCHAIN_VERSION=clang # Specify architectures to compile, 'all' or 'y' to compile for all architectures. -# Available architectures: armeabi armeabi-v7a armeabi-v7a-hard x86 mips -MultiABI='armeabi-v7a x86' +# Available architectures: armeabi armeabi-v7a x86 mips arm64-v8a x86_64 +MultiABI='armeabi armeabi-v7a x86 mips' # Optional shared libraries to compile - removing some of them will save space # MP3 support by libMAD is encumbered by patents and libMAD is GPL-ed diff --git a/project/jni/application/openttd/AndroidBuild.sh b/project/jni/application/openttd/AndroidBuild.sh index bbde9675e..0c4622d02 100755 --- a/project/jni/application/openttd/AndroidBuild.sh +++ b/project/jni/application/openttd/AndroidBuild.sh @@ -15,10 +15,14 @@ export ARCH=$1 [ -e openttd-$VER-$1/Makefile ] || { rm -f src/src/rev.cpp env PATH=$LOCAL_PATH/..:$PATH \ - ../setEnvironment-$1.sh sh -c "cd openttd-$VER-$1 && env ../src/configure --host=$2 --with-sdl --with-freetype --with-png --with-zlib --with-icu --with-libtimidity --with-lzo2=$LOCAL_PATH/../../../obj/local/$ARCH/liblzo2.so --prefix-dir='.' --data-dir='' --without-allegro --with-fontconfig --with-lzma --endian=LE" + env CLANG=1 ../setEnvironment-$1.sh sh -c "cd openttd-$VER-$1 && env ../src/configure --with-sdl --with-freetype --with-png --with-zlib --with-icu --with-libtimidity --with-lzo2=$LOCAL_PATH/../../../obj/local/$ARCH/liblzo2.so --prefix-dir='.' --data-dir='' --without-allegro --with-fontconfig --with-lzma --endian=LE" } || exit 1 NCPU=4 uname -s | grep -i "linux" > /dev/null && NCPU=`cat /proc/cpuinfo | grep -c -i processor` -../setEnvironment-$1.sh sh -c "cd openttd-$VER-$1 && make -j$NCPU VERBOSE=1 STRIP='' LIBS='-lsdl-1.2 -llzo2 -lpng -ltimidity -lfreetype -lfontconfig -lexpat -licui18n -liculx -licule -licuuc -licudata -lgcc -lz -lc -lgnustl_static -lsupc++'" && cp -f openttd-$VER-$1/objs/release/openttd libapplication-$1.so || exit 1 +# clang arm hack +LIBATOMIC= +echo $1 | grep 'arm' && LIBATOMIC=-latomic + +env CLANG=1 LIBATOMIC=$LIBATOMIC ../setEnvironment-$1.sh sh -c "cd openttd-$VER-$1 && make -j$NCPU VERBOSE=1 STRIP='' LIBS='-lsdl-1.2 -llzo2 -lpng -ltimidity -lfreetype -lfontconfig -lexpat -licui18n -liculx -licule -licuuc -licudata -lgcc -lz -lc -lgnustl_static -lsupc++ $LIBATOMIC'" && cp -f openttd-$VER-$1/objs/release/openttd libapplication-$1.so || exit 1 diff --git a/project/jni/application/pachi/AndroidAppSettings.cfg b/project/jni/application/pachi/AndroidAppSettings.cfg index 14caf0835..6f2143f60 100644 --- a/project/jni/application/pachi/AndroidAppSettings.cfg +++ b/project/jni/application/pachi/AndroidAppSettings.cfg @@ -7,10 +7,10 @@ AppName="Pachi el marciano" AppFullName=net.sourceforge.dragontech.pachi # Application version code (integer) -AppVersionCode=1071 +AppVersionCode=1078 # Application user-visible version name (string) -AppVersionName="1.07-mips" +AppVersionName="1.07-x86" # 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, other downloads should be selected by user from startup config menu @@ -242,7 +242,7 @@ NDK_TOOLCHAIN_VERSION= # Specify architectures to compile, 'all' or 'y' to compile for all architectures. # Available architectures: armeabi armeabi-v7a armeabi-v7a-hard x86 mips -MultiABI='mips' +MultiABI='armeabi-v7a' # Optional shared libraries to compile - removing some of them will save space # MP3 support by libMAD is encumbered by patents and libMAD is GPL-ed @@ -272,7 +272,7 @@ AppCmdline='' # Screen size is used by Google Play to prevent an app to be installed on devices with smaller screens # Minimum screen size that application supports: (s)mall / (m)edium / (l)arge -MinimumScreenSize=n +MinimumScreenSize=s # Your AdMob Publisher ID, (n) if you don't want advertisements AdmobPublisherId=n diff --git a/project/jni/application/pkg-config b/project/jni/application/pkg-config index 174e49ac8..3662fd779 100755 --- a/project/jni/application/pkg-config +++ b/project/jni/application/pkg-config @@ -88,11 +88,21 @@ while test $# -gt 0; do --cflags) echo -I${prefix}/include ;; - --libs) - echo -l$PKG - ;; - --static-libs) - echo -l$PKG + --libs|--static-libs) + case $PKG in + curl|libcurl) + echo -lcurl-sdl -l:libssl.so.sdl.0.so -l:libcrypto.so.sdl.0.so + ;; + crypto|libcrypto) + echo -l:libcrypto.so.sdl.0.so + ;; + openssl|ssl|libssl) + echo -l:libssl.so.sdl.0.so -l:libcrypto.so.sdl.0.so + ;; + *) + echo -l$PKG + ;; + esac ;; *) ;; diff --git a/project/jni/application/setEnvironment-arm64-v8a.sh b/project/jni/application/setEnvironment-arm64-v8a.sh index 3a987c783..f81ad461d 100755 --- a/project/jni/application/setEnvironment-arm64-v8a.sh +++ b/project/jni/application/setEnvironment-arm64-v8a.sh @@ -21,7 +21,7 @@ NDK=`readlink -f $NDK` #echo NDK $NDK GCCPREFIX=aarch64-linux-android [ -z "$NDK_TOOLCHAIN_VERSION" ] && NDK_TOOLCHAIN_VERSION=4.9 -[ -z "$PLATFORMVER" ] && PLATFORMVER=android-21 +[ -z "$PLATFORMVER" ] && PLATFORMVER=android-24 LOCAL_PATH=`dirname $0` if which realpath > /dev/null ; then LOCAL_PATH=`realpath $LOCAL_PATH` @@ -90,21 +90,43 @@ $SHARED \ -L$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/libs/$ARCH \ -lgnustl_static \ -no-canonical-prefixes $UNRESOLVED -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now \ +-Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings \ -lsupc++ \ $MISSING_LIB $LDFLAGS" -#echo env CFLAGS=\""$CFLAGS"\" LDFLAGS=\""$LDFLAGS"\" "$@" +CC="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-gcc" +CXX="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" +CPP="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-cpp $CFLAGS" + +if [ -n "$CLANG" ]; then + +CFLAGS="\ +-gcc-toolchain $NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH \ +-target aarch64-none-linux-android -Wno-invalid-command-line-argument -Wno-unused-command-line-argument \ +$CFLAGS" + +LDFLAGS="$LDFLAGS \ +-lgcc \ +-latomic \ +-gcc-toolchain $NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH \ +-target aarch64-none-linux-android" + +CC="$NDK/toolchains/llvm/prebuilt/$MYARCH/bin/clang" +CXX="$NDK/toolchains/llvm/prebuilt/$MYARCH/bin/clang++" +CPP="$CC -E $CFLAGS" + +fi env PATH=$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin:$LOCAL_PATH:$PATH \ CFLAGS="$CFLAGS" \ CXXFLAGS="$CXXFLAGS $CFLAGS -frtti -fexceptions" \ LDFLAGS="$LDFLAGS" \ -CC="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-gcc" \ -CXX="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" \ +CC="$CC" \ +CXX="$CXX" \ RANLIB="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-ranlib" \ -LD="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" \ +LD="$CXX" \ AR="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-ar" \ -CPP="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-cpp $CFLAGS" \ +CPP="$CPP" \ NM="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-nm" \ AS="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-as" \ STRIP="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-strip" \ diff --git a/project/jni/application/setEnvironment-armeabi-v7a-hard.sh b/project/jni/application/setEnvironment-armeabi-v7a-hard.sh deleted file mode 100755 index 9faec1b8e..000000000 --- a/project/jni/application/setEnvironment-armeabi-v7a-hard.sh +++ /dev/null @@ -1,112 +0,0 @@ -#!/bin/sh - -IFS=' -' - -MYARCH=linux-x86_64 -if uname -s | grep -i "linux" > /dev/null ; then - MYARCH=linux-x86_64 -fi -if uname -s | grep -i "darwin" > /dev/null ; then - MYARCH=darwin-x86_64 -fi -if uname -s | grep -i "windows" > /dev/null ; then - MYARCH=windows-x86_64 -fi - -NDK=`which ndk-build` -NDK=`dirname $NDK` -NDK=`readlink -f $NDK` - -#echo NDK $NDK -GCCPREFIX=arm-linux-androideabi -[ -z "$NDK_TOOLCHAIN_VERSION" ] && NDK_TOOLCHAIN_VERSION=4.9 -[ -z "$PLATFORMVER" ] && PLATFORMVER=android-14 -LOCAL_PATH=`dirname $0` -if which realpath > /dev/null ; then - LOCAL_PATH=`realpath $LOCAL_PATH` -else - LOCAL_PATH=`cd $LOCAL_PATH && pwd` -fi -ARCH=armeabi-v7a-hard - -APP_MODULES=`grep 'APP_MODULES [:][=]' $LOCAL_PATH/../Settings.mk | sed 's@.*[=]\(.*\)@\1@'` -APP_AVAILABLE_STATIC_LIBS=`grep 'APP_AVAILABLE_STATIC_LIBS [:][=]' $LOCAL_PATH/../Settings.mk | sed 's@.*[=]\(.*\)@\1@'` -APP_SHARED_LIBS=$( -echo $APP_MODULES | xargs -n 1 echo | while read LIB ; do - STATIC=`echo $APP_AVAILABLE_STATIC_LIBS application sdl_main stlport stdout-test | grep "\\\\b$LIB\\\\b"` - if [ -n "$STATIC" ] ; then true - else - case $LIB in - crypto) echo crypto.so.sdl.0;; - ssl) echo ssl.so.sdl.0;; - curl) echo curl-sdl;; - *) echo $LIB;; - esac - fi -done -) - - -MISSING_INCLUDE= -MISSING_LIB= - -CFLAGS="\ --fpic -ffunction-sections -funwind-tables -fstack-protector \ --no-canonical-prefixes -march=armv7-a -mhard-float -D_NDK_MATH_NO_SOFTFP=1 \ --mfpu=vfpv3-d16 -mthumb -O2 -g -DNDEBUG \ --fomit-frame-pointer -fno-strict-aliasing -finline-limit=300 \ --DANDROID -Wall -Wno-unused -Wa,--noexecstack -Wformat -Werror=format-security \ --isystem$NDK/platforms/$PLATFORMVER/arch-arm/usr/include \ --isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/include \ --isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/libs/$ARCH/include \ --isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/include/backward \ --isystem$LOCAL_PATH/../sdl-1.2/include \ -`echo $APP_MODULES | sed \"s@\([-a-zA-Z0-9_.]\+\)@-isystem$LOCAL_PATH/../\1/include@g\"` \ -$MISSING_INCLUDE $CFLAGS" - -if [ -z "$SHARED_LIBRARY_NAME" ]; then - SHARED_LIBRARY_NAME=libapplication.so -fi -UNRESOLVED="-Wl,--no-undefined" -SHARED="-shared -Wl,-soname,$SHARED_LIBRARY_NAME" -if [ -n "$BUILD_EXECUTABLE" ]; then - SHARED="-Wl,--gc-sections -Wl,-z,nocopyreloc -pie" -fi -if [ -n "$NO_SHARED_LIBS" ]; then - APP_SHARED_LIBS= -fi -if [ -n "$ALLOW_UNRESOLVED_SYMBOLS" ]; then - UNRESOLVED= -fi - -LDFLAGS="\ -$SHARED \ ---sysroot=$NDK/platforms/$PLATFORMVER/arch-arm \ --L$LOCAL_PATH/../../obj/local/$ARCH \ -`echo $APP_SHARED_LIBS | sed \"s@\([-a-zA-Z0-9_.]\+\)@$LOCAL_PATH/../../obj/local/$ARCH/lib\1.so@g\"` \ --L$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib \ --lc -lGLESv1_CM -ldl -llog -lz \ --Wl,--no-warn-mismatch -lm_hard \ --L$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/libs/$ARCH \ --lgnustl_static \ --no-canonical-prefixes -march=armv7-a -Wl,--fix-cortex-a8 $UNRESOLVED -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now \ --lsupc++ \ -$MISSING_LIB $LDFLAGS" - -#echo env CFLAGS=\""$CFLAGS"\" LDFLAGS=\""$LDFLAGS"\" "$@" - -env PATH=$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin:$LOCAL_PATH:$PATH \ -CFLAGS="$CFLAGS" \ -CXXFLAGS="$CXXFLAGS $CFLAGS -frtti -fexceptions" \ -LDFLAGS="$LDFLAGS" \ -CC="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-gcc" \ -CXX="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" \ -RANLIB="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-ranlib" \ -LD="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" \ -AR="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-ar" \ -CPP="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-cpp $CFLAGS" \ -NM="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-nm" \ -AS="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-as" \ -STRIP="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-strip" \ -"$@" diff --git a/project/jni/application/setEnvironment-armeabi-v7a.sh b/project/jni/application/setEnvironment-armeabi-v7a.sh index 4112f56d6..af5c60e30 100755 --- a/project/jni/application/setEnvironment-armeabi-v7a.sh +++ b/project/jni/application/setEnvironment-armeabi-v7a.sh @@ -21,7 +21,7 @@ NDK=`readlink -f $NDK` #echo NDK $NDK GCCPREFIX=arm-linux-androideabi [ -z "$NDK_TOOLCHAIN_VERSION" ] && NDK_TOOLCHAIN_VERSION=4.9 -[ -z "$PLATFORMVER" ] && PLATFORMVER=android-14 +[ -z "$PLATFORMVER" ] && PLATFORMVER=android-24 LOCAL_PATH=`dirname $0` if which realpath > /dev/null ; then LOCAL_PATH=`realpath $LOCAL_PATH` @@ -52,7 +52,7 @@ MISSING_INCLUDE= MISSING_LIB= CFLAGS="\ --fpic -ffunction-sections -funwind-tables -fstack-protector \ +-fpic -ffunction-sections -funwind-tables -fstack-protector-strong \ -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp \ -mfpu=vfpv3-d16 -mthumb -O2 -g -DNDEBUG \ -fomit-frame-pointer -fno-strict-aliasing -finline-limit=300 \ @@ -90,21 +90,43 @@ $SHARED \ -L$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/libs/$ARCH \ -lgnustl_static \ -no-canonical-prefixes -march=armv7-a -Wl,--fix-cortex-a8 $UNRESOLVED -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now \ +-Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings \ -lsupc++ \ $MISSING_LIB $LDFLAGS" -#echo env CFLAGS=\""$CFLAGS"\" LDFLAGS=\""$LDFLAGS"\" "$@" +CC="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-gcc" +CXX="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" +CPP="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-cpp $CFLAGS" + +if [ -n "$CLANG" ]; then + +CFLAGS="\ +-gcc-toolchain $NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH \ +-fno-integrated-as -target armv7-none-linux-androideabi -Wno-invalid-command-line-argument -Wno-unused-command-line-argument \ +$CFLAGS" + +LDFLAGS="$LDFLAGS \ +-lgcc \ +-latomic \ +-gcc-toolchain $NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH \ +-target armv7-none-linux-androideabi" + +CC="$NDK/toolchains/llvm/prebuilt/$MYARCH/bin/clang" +CXX="$NDK/toolchains/llvm/prebuilt/$MYARCH/bin/clang++" +CPP="$CC -E $CFLAGS" + +fi env PATH=$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin:$LOCAL_PATH:$PATH \ CFLAGS="$CFLAGS" \ CXXFLAGS="$CXXFLAGS $CFLAGS -frtti -fexceptions" \ LDFLAGS="$LDFLAGS" \ -CC="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-gcc" \ -CXX="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" \ +CC="$CC" \ +CXX="$CXX" \ RANLIB="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-ranlib" \ -LD="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" \ +LD="$CXX" \ AR="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-ar" \ -CPP="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-cpp $CFLAGS" \ +CPP="$CPP" \ NM="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-nm" \ AS="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-as" \ STRIP="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-strip" \ diff --git a/project/jni/application/setEnvironment-mips.sh b/project/jni/application/setEnvironment-mips.sh index 8a3d4f4df..dac520bfd 100755 --- a/project/jni/application/setEnvironment-mips.sh +++ b/project/jni/application/setEnvironment-mips.sh @@ -21,7 +21,7 @@ NDK=`readlink -f $NDK` #echo NDK $NDK GCCPREFIX=mipsel-linux-android [ -z "$NDK_TOOLCHAIN_VERSION" ] && NDK_TOOLCHAIN_VERSION=4.9 -[ -z "$PLATFORMVER" ] && PLATFORMVER=android-14 +[ -z "$PLATFORMVER" ] && PLATFORMVER=android-24 LOCAL_PATH=`dirname $0` if which realpath > /dev/null ; then LOCAL_PATH=`realpath $LOCAL_PATH` @@ -53,10 +53,9 @@ MISSING_LIB= CFLAGS="\ -fpic -fno-strict-aliasing -finline-functions -ffunction-sections \ --funwind-tables -fmessage-length=0 -fno-inline-functions-called-once \ --fgcse-after-reload -frerun-cse-after-loop -frename-registers \ +-funwind-tables -fstack-protector-strong -fmessage-length=0 \ -no-canonical-prefixes -O2 -g -DNDEBUG -fomit-frame-pointer \ --funswitch-loops -finline-limit=300 \ +-funswitch-loops -finline-limit=300 -mips32 \ -DANDROID -Wall -Wno-unused -Wa,--noexecstack -Wformat -Werror=format-security \ -isystem$NDK/platforms/$PLATFORMVER/arch-mips/usr/include \ -isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/include \ @@ -89,23 +88,44 @@ $SHARED \ -L$NDK/platforms/$PLATFORMVER/arch-mips/usr/lib \ -lc -lm -lGLESv1_CM -ldl -llog -lz \ -L$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/libs/$ARCH \ --lgnustl_static \ +-lgnustl_static -mips32 \ -no-canonical-prefixes $UNRESOLVED -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now \ +-Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings \ -lsupc++ \ $MISSING_LIB $LDFLAGS" -#echo env CFLAGS=\""$CFLAGS"\" LDFLAGS=\""$LDFLAGS"\" "$@" +CC="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-gcc" +CXX="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" +CPP="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-cpp $CFLAGS" + +if [ -n "$CLANG" ]; then + +CFLAGS="\ +-gcc-toolchain $NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH \ +-target mipsel-none-linux-android -Wno-invalid-command-line-argument -Wno-unused-command-line-argument \ +$CFLAGS" + +LDFLAGS="$LDFLAGS \ +-lgcc \ +-gcc-toolchain $NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH \ +-target mipsel-none-linux-android" + +CC="$NDK/toolchains/llvm/prebuilt/$MYARCH/bin/clang" +CXX="$NDK/toolchains/llvm/prebuilt/$MYARCH/bin/clang++" +CPP="$CC -E $CFLAGS" + +fi env PATH=$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin:$LOCAL_PATH:$PATH \ CFLAGS="$CFLAGS" \ CXXFLAGS="$CXXFLAGS $CFLAGS -frtti -fexceptions" \ LDFLAGS="$LDFLAGS" \ -CC="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-gcc" \ -CXX="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" \ +CC="$CC" \ +CXX="$CXX" \ RANLIB="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-ranlib" \ -LD="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" \ +LD="$CXX" \ AR="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-ar" \ -CPP="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-cpp $CFLAGS" \ +CPP="$CPP" \ NM="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-nm" \ AS="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-as" \ STRIP="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-strip" \ diff --git a/project/jni/application/setEnvironment-x86.sh b/project/jni/application/setEnvironment-x86.sh index 2892e9986..c21e07e09 100755 --- a/project/jni/application/setEnvironment-x86.sh +++ b/project/jni/application/setEnvironment-x86.sh @@ -21,7 +21,7 @@ NDK=`readlink -f $NDK` #echo NDK $NDK GCCPREFIX=i686-linux-android [ -z "$NDK_TOOLCHAIN_VERSION" ] && NDK_TOOLCHAIN_VERSION=4.9 -[ -z "$PLATFORMVER" ] && PLATFORMVER=android-14 +[ -z "$PLATFORMVER" ] && PLATFORMVER=android-24 LOCAL_PATH=`dirname $0` if which realpath > /dev/null ; then LOCAL_PATH=`realpath $LOCAL_PATH` @@ -53,7 +53,7 @@ MISSING_LIB= CFLAGS="\ -fpic -ffunction-sections -funwind-tables -no-canonical-prefixes \ --fstack-protector -O2 -g -DNDEBUG \ +-fstack-protector-strong -O2 -g -DNDEBUG \ -fomit-frame-pointer -fstrict-aliasing -funswitch-loops \ -finline-limit=300 \ -DANDROID -Wall -Wno-unused -Wa,--noexecstack -Wformat -Werror=format-security \ @@ -90,21 +90,42 @@ $SHARED \ -L$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/libs/$ARCH \ -lgnustl_static \ -no-canonical-prefixes $UNRESOLVED -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now \ +-Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings \ -lsupc++ \ $MISSING_LIB $LDFLAGS" -#echo env CFLAGS=\""$CFLAGS"\" LDFLAGS=\""$LDFLAGS"\" "$@" +CC="$NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-gcc" +CXX="$NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" +CPP="$NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-cpp $CFLAGS" + +if [ -n "$CLANG" ]; then + +CFLAGS="\ +-gcc-toolchain $NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH \ +-target i686-none-linux-android -Wno-invalid-command-line-argument -Wno-unused-command-line-argument \ +$CFLAGS" + +LDFLAGS="$LDFLAGS \ +-lgcc \ +-gcc-toolchain $NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH \ +-target i686-none-linux-android" + +CC="$NDK/toolchains/llvm/prebuilt/$MYARCH/bin/clang" +CXX="$NDK/toolchains/llvm/prebuilt/$MYARCH/bin/clang++" +CPP="$CC -E $CFLAGS" + +fi env PATH=$NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin:$LOCAL_PATH:$PATH \ CFLAGS="$CFLAGS" \ CXXFLAGS="$CXXFLAGS $CFLAGS -frtti -fexceptions" \ LDFLAGS="$LDFLAGS" \ -CC="$NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-gcc" \ -CXX="$NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" \ +CC="$CC" \ +CXX="$CXX" \ RANLIB="$NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-ranlib" \ -LD="$NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" \ +LD="$CXX" \ AR="$NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-ar" \ -CPP="$NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-cpp $CFLAGS" \ +CPP="$CPP" \ NM="$NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-nm" \ AS="$NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-as" \ STRIP="$NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-strip" \ diff --git a/project/jni/application/setEnvironment.sh b/project/jni/application/setEnvironment.sh index 046150126..4ebcf4a87 100755 --- a/project/jni/application/setEnvironment.sh +++ b/project/jni/application/setEnvironment.sh @@ -21,7 +21,7 @@ NDK=`readlink -f $NDK` #echo NDK $NDK GCCPREFIX=arm-linux-androideabi [ -z "$NDK_TOOLCHAIN_VERSION" ] && NDK_TOOLCHAIN_VERSION=4.9 -PLATFORMVER=android-14 +PLATFORMVER=android-24 LOCAL_PATH=`dirname $0` if which realpath > /dev/null ; then LOCAL_PATH=`realpath $LOCAL_PATH` @@ -52,7 +52,7 @@ MISSING_INCLUDE= MISSING_LIB= CFLAGS="\ --fpic -ffunction-sections -funwind-tables -fstack-protector \ +-fpic -ffunction-sections -funwind-tables -fstack-protector-strong \ -no-canonical-prefixes -march=armv5te -mtune=xscale -msoft-float \ -mthumb -O2 -g -DNDEBUG \ -fomit-frame-pointer -fno-strict-aliasing -finline-limit=300 \ @@ -90,21 +90,43 @@ $SHARED \ -L$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/libs/$ARCH \ -lgnustl_static \ -no-canonical-prefixes $UNRESOLVED -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now \ +-Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings \ -lsupc++ \ $MISSING_LIB $LDFLAGS" -#echo env CFLAGS=\""$CFLAGS"\" LDFLAGS=\""$LDFLAGS"\" "$@" +CC="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-gcc" +CXX="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" +CPP="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-cpp $CFLAGS" + +if [ -n "$CLANG" ]; then + +CFLAGS="\ +-gcc-toolchain $NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH \ +-target armv5te-none-linux-androideabi -Wno-invalid-command-line-argument -Wno-unused-command-line-argument \ +$CFLAGS" + +LDFLAGS="$LDFLAGS \ +-lgcc \ +-latomic \ +-gcc-toolchain $NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH \ +-target armv5te-none-linux-androideabi" + +CC="$NDK/toolchains/llvm/prebuilt/$MYARCH/bin/clang" +CXX="$NDK/toolchains/llvm/prebuilt/$MYARCH/bin/clang++" +CPP="$CC -E $CFLAGS" + +fi env PATH=$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin:$LOCAL_PATH:$PATH \ CFLAGS="$CFLAGS" \ CXXFLAGS="$CXXFLAGS $CFLAGS -frtti -fexceptions" \ LDFLAGS="$LDFLAGS" \ -CC="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-gcc" \ -CXX="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" \ +CC="$CC" \ +CXX="$CXX" \ RANLIB="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-ranlib" \ -LD="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" \ +LD="$CXX" \ AR="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-ar" \ -CPP="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-cpp $CFLAGS" \ +CPP="$CPP" \ NM="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-nm" \ AS="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-as" \ STRIP="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-strip" \ diff --git a/project/jni/application/xserver/AndroidBuild.sh b/project/jni/application/xserver/AndroidBuild.sh index 7e4d2175c..1a8d7280a 100755 --- a/project/jni/application/xserver/AndroidBuild.sh +++ b/project/jni/application/xserver/AndroidBuild.sh @@ -4,13 +4,13 @@ CURDIR=`pwd` PACKAGE_NAME=`grep AppFullName AndroidAppSettings.cfg | sed 's/.*=//'` -[ -e pulseaudio/android-build.sh ] && { +if [ -e pulseaudio/android-build.sh ]; then [ -e pulseaudio/$1/install/bin/pulseaudio ] || { cd pulseaudio ./android-build.sh || exit 1 cd .. } || exit 1 -} || exit 1 +fi ../setEnvironment-$1.sh sh -c '\ $CC $CFLAGS -Werror=format -c main.c -o main-'"$1.o" || exit 1 @@ -72,7 +72,7 @@ xkb/.libs/libxkbstubs.a \ composite/.libs/libcomposite.a \ os/.libs/libos.a \ hw/kdrive/linux/.libs/liblinux.a \ --lpixman-1 -lXfont -lXau -lXdmcp -lfontenc -lts -lfreetype -landroid-shmem -lcrypto' \ +-lpixman-1 -lXfont -lXau -lXdmcp -lfontenc -lts -lfreetype -landroid-shmem -l:libcrypto.so.sdl.0.so' \ || exit 1 rm -rf $CURDIR/tmp-$1 diff --git a/project/jni/application/xserver/pulseaudio b/project/jni/application/xserver/pulseaudio index f04d54127..37ce31ed3 160000 --- a/project/jni/application/xserver/pulseaudio +++ b/project/jni/application/xserver/pulseaudio @@ -1 +1 @@ -Subproject commit f04d541277106e3310e4da6f84ebf4a8d2cb54ef +Subproject commit 37ce31ed32cf34fcb2f2fdbda40b6f24a9dd3424 diff --git a/project/jni/application/xserver/xserver b/project/jni/application/xserver/xserver index ad7ad4873..6ea1ce707 160000 --- a/project/jni/application/xserver/xserver +++ b/project/jni/application/xserver/xserver @@ -1 +1 @@ -Subproject commit ad7ad4873dcf38f8581145e4578a011d0cda6483 +Subproject commit 6ea1ce707be8ae1b5260bf7c5e36db568c7431c9 diff --git a/project/jni/openssl/Android.mk b/project/jni/openssl/Android.mk index 70f14b96e..7a3f7b77c 100644 --- a/project/jni/openssl/Android.mk +++ b/project/jni/openssl/Android.mk @@ -7,7 +7,7 @@ LOCAL_MODULE_FILENAME := lib$(notdir $(LOCAL_PATH)).so.sdl.0 # It clashes with s ifneq (openssl,$(LOCAL_MODULE)) -ifneq ($(filter arm mips x86, $(TARGET_ARCH)),) +ifneq ($(filter arm mips x86 arm64, $(TARGET_ARCH)),) LOCAL_C_INCLUDES := $(LOCAL_PATH)/include LOCAL_SRC_FILES := lib-$(TARGET_ARCH_ABI)/lib$(LOCAL_MODULE).so.sdl.0.so diff --git a/project/jni/openssl/compile.sh b/project/jni/openssl/compile.sh index bba8faa58..5aab72da9 100755 --- a/project/jni/openssl/compile.sh +++ b/project/jni/openssl/compile.sh @@ -1,6 +1,6 @@ #!/bin/sh -ARCH_LIST="x86 mips armeabi-v7a armeabi" +ARCH_LIST="arm64-v8a x86 mips armeabi-v7a armeabi" mkdir -p build @@ -11,6 +11,8 @@ build() { CONFIGURE_ARCH=android-armv7;; armeabi) CONFIGURE_ARCH=android;; + arm64-v8a) + CONFIGURE_ARCH=android;; *) CONFIGURE_ARCH=android-$ARCH;; esac diff --git a/project/jni/openssl/lib-arm64-v8a/libcrypto.so.sdl.0.so b/project/jni/openssl/lib-arm64-v8a/libcrypto.so.sdl.0.so new file mode 100755 index 000000000..966c195c3 Binary files /dev/null and b/project/jni/openssl/lib-arm64-v8a/libcrypto.so.sdl.0.so differ diff --git a/project/jni/openssl/lib-arm64-v8a/libssl.so.sdl.0.so b/project/jni/openssl/lib-arm64-v8a/libssl.so.sdl.0.so new file mode 100755 index 000000000..644e003d5 Binary files /dev/null and b/project/jni/openssl/lib-arm64-v8a/libssl.so.sdl.0.so differ diff --git a/project/jni/openssl/setCrossEnvironment-arm64-v8a.sh b/project/jni/openssl/setCrossEnvironment-arm64-v8a.sh new file mode 100755 index 000000000..0d2a76716 --- /dev/null +++ b/project/jni/openssl/setCrossEnvironment-arm64-v8a.sh @@ -0,0 +1,81 @@ +#!/bin/sh + +IFS=' +' + +MYARCH=linux-x86_64 +if uname -s | grep -i "linux" > /dev/null ; then + MYARCH=linux-x86_64 +fi +if uname -s | grep -i "darwin" > /dev/null ; then + MYARCH=darwin-x86_64 +fi +if uname -s | grep -i "windows" > /dev/null ; then + MYARCH=windows-x86_64 +fi + +NDK=`which ndk-build` +NDK=`dirname $NDK` +NDK=`readlink -f $NDK` + +[ -z "$NDK" ] && { echo "You need Andorid NDK r8 or newer installed to run this script" ; exit 1 ; } +GCCPREFIX=aarch64-linux-android +GCCVER=${GCCVER:-4.9} +PLATFORMVER=${PLATFORMVER:-android-24} +LOCAL_PATH=`dirname $0` +if which realpath > /dev/null ; then + LOCAL_PATH=`realpath $LOCAL_PATH` +else + LOCAL_PATH=`cd $LOCAL_PATH && pwd` +fi +ARCH=arm64-v8a + +CFLAGS="\ +-fpic -ffunction-sections -funwind-tables -fstack-protector-strong \ +-no-canonical-prefixes \ +-O2 -g -DNDEBUG \ +-fomit-frame-pointer -fno-strict-aliasing -finline-limit=300 \ +-DANDROID -Wall -Wno-unused -Wa,--noexecstack -Wformat -Werror=format-security \ +-isystem$NDK/platforms/$PLATFORMVER/arch-arm64/usr/include \ +-isystem$NDK/sources/cxx-stl/gnu-libstdc++/$GCCVER/include \ +-isystem$NDK/sources/cxx-stl/gnu-libstdc++/$GCCVER/libs/$ARCH/include \ +$CFLAGS" + +UNRESOLVED="-Wl,--no-undefined" +SHARED="-Wl,--gc-sections -Wl,-z,nocopyreloc" +if [ -n "$BUILD_LIBRARY" ]; then + [ -z "$SHARED_LIBRARY_NAME" ] && SHARED_LIBRARY_NAME=libapplication.so + SHARED="-shared -Wl,-soname,$SHARED_LIBRARY_NAME" +fi +if [ -n "$ALLOW_UNRESOLVED_SYMBOLS" ]; then + UNRESOLVED= +fi + +LDFLAGS="\ +$SHARED \ +--sysroot=$NDK/platforms/$PLATFORMVER/arch-arm64 \ +-L$NDK/platforms/$PLATFORMVER/arch-arm64/usr/lib \ +-lc -lm -ldl -lz \ +-L$NDK/sources/cxx-stl/gnu-libstdc++/$GCCVER/libs/$ARCH \ +-lgnustl_static \ +-no-canonical-prefixes $UNRESOLVED -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now \ +-Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings \ +-lsupc++ \ +$LDFLAGS" + +env PATH=$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin:$LOCAL_PATH:$PATH \ +ANDROID_DEV=$NDK/platforms/$PLATFORMVER/arch-arm64/usr \ +CFLAGS="$CFLAGS" \ +CXXFLAGS="$CXXFLAGS $CFLAGS" \ +LDFLAGS="$LDFLAGS" \ +CC="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-gcc" \ +CXX="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" \ +RANLIB="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-ranlib" \ +LD="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-ld" \ +AR="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-ar" \ +CPP="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-cpp $CFLAGS" \ +CXXCPP="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-cpp -x c++ $CFLAGS" \ +NM="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-nm" \ +AS="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-as" \ +STRIP="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-strip" \ +"$@" diff --git a/project/jni/openssl/setCrossEnvironment-armeabi-v7a.sh b/project/jni/openssl/setCrossEnvironment-armeabi-v7a.sh index 28fb0d818..e5b3c84b3 100755 --- a/project/jni/openssl/setCrossEnvironment-armeabi-v7a.sh +++ b/project/jni/openssl/setCrossEnvironment-armeabi-v7a.sh @@ -21,7 +21,7 @@ NDK=`readlink -f $NDK` [ -z "$NDK" ] && { echo "You need Andorid NDK r8 or newer installed to run this script" ; exit 1 ; } GCCPREFIX=arm-linux-androideabi GCCVER=${GCCVER:-4.9} -PLATFORMVER=${PLATFORMVER:-android-14} +PLATFORMVER=${PLATFORMVER:-android-24} LOCAL_PATH=`dirname $0` if which realpath > /dev/null ; then LOCAL_PATH=`realpath $LOCAL_PATH` diff --git a/project/jni/openssl/setCrossEnvironment-armeabi.sh b/project/jni/openssl/setCrossEnvironment-armeabi.sh index 3064289c5..ce79ba52b 100755 --- a/project/jni/openssl/setCrossEnvironment-armeabi.sh +++ b/project/jni/openssl/setCrossEnvironment-armeabi.sh @@ -21,7 +21,7 @@ NDK=`readlink -f $NDK` [ -z "$NDK" ] && { echo "You need Andorid NDK r8 or newer installed to run this script" ; exit 1 ; } GCCPREFIX=arm-linux-androideabi GCCVER=${GCCVER:-4.9} -PLATFORMVER=${PLATFORMVER:-android-14} +PLATFORMVER=${PLATFORMVER:-android-24} LOCAL_PATH=`dirname $0` if which realpath > /dev/null ; then LOCAL_PATH=`realpath $LOCAL_PATH` diff --git a/project/jni/openssl/setCrossEnvironment-mips.sh b/project/jni/openssl/setCrossEnvironment-mips.sh index cf265a446..07167a7bb 100755 --- a/project/jni/openssl/setCrossEnvironment-mips.sh +++ b/project/jni/openssl/setCrossEnvironment-mips.sh @@ -21,7 +21,7 @@ NDK=`readlink -f $NDK` [ -z "$NDK" ] && { echo "You need Andorid NDK r8 or newer installed to run this script" ; exit 1 ; } GCCPREFIX=mipsel-linux-android GCCVER=${GCCVER:-4.9} -PLATFORMVER=${PLATFORMVER:-android-14} +PLATFORMVER=${PLATFORMVER:-android-24} LOCAL_PATH=`dirname $0` if which realpath > /dev/null ; then LOCAL_PATH=`realpath $LOCAL_PATH` diff --git a/project/jni/openssl/setCrossEnvironment-x86.sh b/project/jni/openssl/setCrossEnvironment-x86.sh index c14d3ef91..62763d202 100755 --- a/project/jni/openssl/setCrossEnvironment-x86.sh +++ b/project/jni/openssl/setCrossEnvironment-x86.sh @@ -21,7 +21,7 @@ NDK=`readlink -f $NDK` [ -z "$NDK" ] && { echo "You need Andorid NDK r8 or newer installed to run this script" ; exit 1 ; } GCCPREFIX=i686-linux-android GCCVER=${GCCVER:-4.9} -PLATFORMVER=${PLATFORMVER:-android-14} +PLATFORMVER=${PLATFORMVER:-android-24} LOCAL_PATH=`dirname $0` if which realpath > /dev/null ; then LOCAL_PATH=`realpath $LOCAL_PATH` diff --git a/project/jni/sdl-1.2/include/SDL_android.h b/project/jni/sdl-1.2/include/SDL_android.h index f7e268a46..5c1f284a8 100644 --- a/project/jni/sdl-1.2/include/SDL_android.h +++ b/project/jni/sdl-1.2/include/SDL_android.h @@ -134,6 +134,9 @@ enum { /* Set SDL Android-specifc option, such as video depth or mouse emulation mode. Most options require restarting the app. */ extern DECLSPEC void SDLCALL SDL_ANDROID_SetConfigOption(int option, int value); +/* Show runtime permission dialog for accessing SD card on Android 6.0 and above */ +extern DECLSPEC void SDLCALL SDL_ANDROID_RequestExternalStorageRuntimePermission(); + #ifdef __cplusplus } #endif diff --git a/project/jni/sdl-1.2/src/video/android/SDL_androidvideo.c b/project/jni/sdl-1.2/src/video/android/SDL_androidvideo.c index d72741986..876c3a220 100644 --- a/project/jni/sdl-1.2/src/video/android/SDL_androidvideo.c +++ b/project/jni/sdl-1.2/src/video/android/SDL_androidvideo.c @@ -88,6 +88,7 @@ static jmethodID JavaRequestCloudLoad = NULL; static jmethodID JavaRequestOpenExternalApp = NULL; static jmethodID JavaRequestRestartMyself = NULL; static jmethodID JavaRequestSetConfigOption = NULL; +static jmethodID JavaRequestExternalStorageRuntimePermission = NULL; static int glContextLost = 0; static int showScreenKeyboardDeferred = 0; static const char * showScreenKeyboardOldText = ""; @@ -361,6 +362,7 @@ JAVA_EXPORT_NAME(DemoRenderer_nativeInitJavaCallbacks) ( JNIEnv* env, jobject t JavaRequestOpenExternalApp = (*JavaEnv)->GetMethodID(JavaEnv, JavaRendererClass, "openExternalApp", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); JavaRequestRestartMyself = (*JavaEnv)->GetMethodID(JavaEnv, JavaRendererClass, "restartMyself", "(Ljava/lang/String;)V"); JavaRequestSetConfigOption = (*JavaEnv)->GetMethodID(JavaEnv, JavaRendererClass, "setConfigOptionFromSDL", "(II)V"); + JavaRequestExternalStorageRuntimePermission = (*JavaEnv)->GetMethodID(JavaEnv, JavaRendererClass, "requestExternalStorageRuntimePermissionFromSDL", "()V"); ANDROID_InitOSKeymap(); } @@ -607,6 +609,11 @@ void SDLCALL SDL_ANDROID_OpenExternalWebBrowser(const char *url) SDL_ANDROID_OpenExternalApp(NULL, NULL, url); } +void SDLCALL SDL_ANDROID_RequestExternalStorageRuntimePermission() +{ + (*JavaEnv)->CallVoidMethod( JavaEnv, JavaRenderer, JavaRequestExternalStorageRuntimePermission ); +} + // Dummy callback for SDL2 to satisfy linker extern void SDL_Android_Init(JNIEnv* env, jclass cls); void SDL_Android_Init(JNIEnv* env, jclass cls) diff --git a/sign.sh b/sign.sh index 0e1d3a903..c7e4d258e 100755 --- a/sign.sh +++ b/sign.sh @@ -15,7 +15,7 @@ zip -d Signed.apk "META-INF/*" # Sign with the new certificate echo Using keystore $ANDROID_KEYSTORE_FILE and alias $ANDROID_KEYSTORE_ALIAS stty -echo -jarsigner -verbose -keystore $ANDROID_KEYSTORE_FILE -sigalg MD5withRSA -digestalg SHA1 Signed.apk $ANDROID_KEYSTORE_ALIAS || exit 1 +jarsigner -verbose -tsa http://timestamp.digicert.com -keystore $ANDROID_KEYSTORE_FILE -sigalg MD5withRSA -digestalg SHA1 Signed.apk $ANDROID_KEYSTORE_ALIAS || exit 1 stty echo echo rm -f MainActivity-debug.apk