diff --git a/build.sh b/build.sh index eb899092f..2a0913285 100755 --- a/build.sh +++ b/build.sh @@ -93,7 +93,7 @@ else fi [ -e project/local.properties ] || { - android update project -p project -t android-23 || exit 1 + android update project -p project -t android-25 || exit 1 rm -f project/src/Globals.java } diff --git a/changeAppSettings.sh b/changeAppSettings.sh index d08103d41..d09d782cc 100755 --- a/changeAppSettings.sh +++ b/changeAppSettings.sh @@ -979,7 +979,8 @@ if [ "$GooglePlayGameServicesId" = "n" -o -z "$GooglePlayGameServicesId" ] ; the $SEDI "/==GOOGLEPLAYGAMESERVICES==/ d" project/AndroidManifest.xml GooglePlayGameServicesId="" grep '=play-services' project/local.properties > /dev/null && { - $SEDI 's/.*=play-services.*//g' project/local.properties + echo "sdk.dir=$SDK_DIR" > project/local.properties + echo 'proguard.config=proguard.cfg;proguard-local.cfg' >> project/local.properties rm -f project/libs/android-support-v4.jar } else @@ -990,10 +991,12 @@ else cat $F | sed "s/^package .*;/package $AppFullName;/" >> project/src/$OUT done - PLAY_SERVICES_VER=9.4.0 + PLAY_SERVICES_VER=10.2.1 + SUPPORT_V4_VER=24.0.0 rm -rf project/play-services CURDIR=`pwd` + cd $SDK_DIR/extras/google/m2repository/com/google/android/gms/play-services-games/$PLAY_SERVICES_VER || exit 1 $CURDIR/aar2jar.py -o $CURDIR/project/play-services/games -i play-services-games-$PLAY_SERVICES_VER || exit 1 cd $SDK_DIR/extras/google/m2repository/com/google/android/gms/play-services-drive/$PLAY_SERVICES_VER || exit 1 @@ -1004,10 +1007,19 @@ else $CURDIR/aar2jar.py -o $CURDIR/project/play-services/tasks -i play-services-tasks-$PLAY_SERVICES_VER || exit 1 cd $SDK_DIR/extras/google/m2repository/com/google/android/gms/play-services-basement/$PLAY_SERVICES_VER || exit 1 $CURDIR/aar2jar.py -o $CURDIR/project/play-services/basement -i play-services-basement-$PLAY_SERVICES_VER || exit 1 + #cd $SDK_DIR/extras/android/m2repository/com/android/support/support-core-utils/$SUPPORT_V4_VER || exit 1 + #$CURDIR/aar2jar.py -o $CURDIR/project/play-services/support-core-utils -i support-core-utils-$SUPPORT_V4_VER || exit 1 + #cd $SDK_DIR/extras/android/m2repository/com/android/support/support-compat/$SUPPORT_V4_VER || exit 1 + #$CURDIR/aar2jar.py -o $CURDIR/project/play-services/support-compat -i support-compat-$SUPPORT_V4_VER || exit 1 + cd $SDK_DIR/extras/android/m2repository/com/android/support/support-v4/$SUPPORT_V4_VER || exit 1 + $CURDIR/aar2jar.py -o $CURDIR/project/play-services/support-v4 -i support-v4-$SUPPORT_V4_VER || exit 1 + cd $CURDIR + ln -s -f $SDK_DIR/extras/android/m2repository/com/android/support/support-annotations/$SUPPORT_V4_VER/support-annotations-$SUPPORT_V4_VER.jar project/libs/android-support-v4.jar || exit 1 + $SEDI "s/==GOOGLEPLAYGAMESERVICES_APP_ID==/$GooglePlayGameServicesId/g" project/res/values/strings.xml - grep 'play-services' project/local.properties > /dev/null || { + grep "play-services-games-$PLAY_SERVICES_VER" project/local.properties > /dev/null || { PROGUARD=`which android` PROGUARD=`dirname $PROGUARD`/proguard/lib/proguard.jar @@ -1019,17 +1031,16 @@ else exit 1 } + # Ant is way too smart, and adds current project path in front of the ${sdk.dir} + echo "sdk.dir=$SDK_DIR" > project/local.properties + echo 'proguard.config=proguard.cfg;proguard-local.cfg' >> project/local.properties echo "android.library.reference.1=play-services/games/play-services-games-$PLAY_SERVICES_VER" >> project/local.properties echo "android.library.reference.2=play-services/drive/play-services-drive-$PLAY_SERVICES_VER" >> project/local.properties echo "android.library.reference.3=play-services/base/play-services-base-$PLAY_SERVICES_VER" >> project/local.properties echo "android.library.reference.4=play-services/tasks/play-services-tasks-$PLAY_SERVICES_VER" >> project/local.properties echo "android.library.reference.5=play-services/basement/play-services-basement-$PLAY_SERVICES_VER" >> project/local.properties - #echo 'android.library.reference.6=../../../../../../../../../../../../../../${sdk.dir}/extras/android/compatibility/v7/mediarouter' >> project/local.properties - #echo 'android.library.reference.7=../../../../../../../../../../../../../../${sdk.dir}/extras/android/compatibility/v7/appcompat' >> project/local.properties - #echo 'android.library.reference.8=../../../../../../../../../../../../../../${sdk.dir}/extras/android/compatibility/v7/palette' >> project/local.properties - echo 'proguard.config=proguard.cfg;proguard-local.cfg' >> project/local.properties - ln -s -f $SDK_DIR/extras/android/compatibility/v4/android-support-v4.jar project/libs + echo "android.library.reference.6=play-services/support-v4/support-v4-$SUPPORT_V4_VER" >> project/local.properties } fi diff --git a/project/jni/Makefile.prebuilt b/project/jni/Makefile.prebuilt index e3daa851a..f154aae99 100644 --- a/project/jni/Makefile.prebuilt +++ b/project/jni/Makefile.prebuilt @@ -2,7 +2,7 @@ # TODO: libboost, libffmpeg, libpython (used only in GemRB) ARCHES32 := armeabi armeabi-v7a x86 mips -ARCHES64 := arm64-v8a +ARCHES64 := arm64-v8a x86_64 ICONV := $(foreach ARCH, $(ARCHES32), iconv/lib/$(ARCH)/libiconv.so iconv/lib/$(ARCH)/libcharset.so) diff --git a/project/jni/application/curl-config b/project/jni/application/curl-config new file mode 100755 index 000000000..1a2485251 --- /dev/null +++ b/project/jni/application/curl-config @@ -0,0 +1 @@ +#!/bin/sh diff --git a/project/jni/application/ninslash/AndroidAppSettings.cfg b/project/jni/application/ninslash/AndroidAppSettings.cfg index 5c9f09372..48deea184 100644 --- a/project/jni/application/ninslash/AndroidAppSettings.cfg +++ b/project/jni/application/ninslash/AndroidAppSettings.cfg @@ -7,10 +7,10 @@ AppName="Ninslash" AppFullName=ninslash.com # Application version code (integer) -AppVersionCode=02220 +AppVersionCode=02321 # Application user-visible version name (string) -AppVersionName="0.2.2.20" +AppVersionName="0.2.3.21" # 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 @@ -24,7 +24,7 @@ AppDataDownloadUrl="!!Game data|data.zip" ResetSdlConfigForThisVersion=n # Delete application data files when upgrading (specify file/dir paths separated by spaces) -DeleteFilesOnUpgrade="libsdl-DownloadFinished-0.flag" +DeleteFilesOnUpgrade="libsdl-DownloadFinished-0.flag data" # Here you may type readme text, which will be shown during startup. Format is: # Text in English, use \\\\n to separate lines (that's four backslashes)^de:Text in Deutsch^ru:Text in Russian^button:Button that will open some URL:http://url-to-open/ diff --git a/project/jni/application/ninslash/src b/project/jni/application/ninslash/src index 58d9dd865..0e47d0a1c 160000 --- a/project/jni/application/ninslash/src +++ b/project/jni/application/ninslash/src @@ -1 +1 @@ -Subproject commit 58d9dd8655282adef12d648841f9ed837016a153 +Subproject commit 0e47d0a1c16ab04799a45776ea25190f3e79361a diff --git a/project/jni/application/openttd/AndroidAppSettings.cfg b/project/jni/application/openttd/AndroidAppSettings.cfg index e81fea1c3..c7aae2940 100644 --- a/project/jni/application/openttd/AndroidAppSettings.cfg +++ b/project/jni/application/openttd/AndroidAppSettings.cfg @@ -7,10 +7,10 @@ AppName="OpenTTD" AppFullName=org.openttd.sdl # Application version code (integer) -AppVersionCode=16164 +AppVersionCode=17069 # Application user-visible version name (string) -AppVersionName="1.6.1.64" +AppVersionName="1.7.0.69" # 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 @@ -18,7 +18,7 @@ AppVersionName="1.6.1.64" # If the URL does not contain 'http://' it is treated as file from 'project/jni/application/src/AndroidData' dir - # these files are put inside .apk package by build system # You can specify Google Play expansion files in the form 'obb:main.12345' or 'obb:patch.12345' where 12345 is the app version, first associated with the file -AppDataDownloadUrl="!!Data files - 20 Mb|openttd-data-1.6.1-1.zip.xz^!!Config file|:.openttd/openttd.cfg:openttd-1.4.0.30.cfg^!!MIDI music support (18 Mb)|timidity.zip.xz|http://sourceforge.net/projects/libsdl-android/files/timidity.zip.xz^!!Internationalization files|icudt52l.zip.xz|http://sourceforge.net/projects/libsdl-android/files/icudt52l.zip.xz^HD graphics - 220 Mb download|http://sourceforge.net/projects/libsdl-android/files/OpenTTD/abase-0.1.2-0.zip.xz/download|http://sourceforge.net/projects/libsdl-android/files/OpenTTD/zBase-v5588.zip.xz/download" +AppDataDownloadUrl="!!Data files - 20 Mb|openttd-data-1.7.0-0.zip.xz^!!Config file|:.openttd/openttd.cfg:openttd-1.4.0.30.cfg^!!MIDI music support (18 Mb)|timidity.zip.xz|http://sourceforge.net/projects/libsdl-android/files/timidity.zip.xz^!!Internationalization files|icudt52l.zip.xz|http://sourceforge.net/projects/libsdl-android/files/icudt52l.zip.xz^HD graphics (optional) - 220 Mb download|http://sourceforge.net/projects/libsdl-android/files/OpenTTD/abase-0.1.2-0.zip.xz/download|http://sourceforge.net/projects/libsdl-android/files/OpenTTD/zBase-v5588.zip.xz/download" # Reset SDL config when updating application to the new version (y) / (n) ResetSdlConfigForThisVersion=n @@ -109,7 +109,7 @@ CompatibilityHacksTouchscreenKeyboardSaveRestoreOpenGLState= # Application uses SDL_UpdateRects() properly, and does not draw in any region outside those rects. # This improves drawing speed, but I know only one application that does that, and it's written by me (y)/(n) -CompatibilityHacksProperUsageOfSDL_UpdateRects= +CompatibilityHacksProperUsageOfSDL_UpdateRects=n # Application uses mouse (y) or (n), this will show mouse emulation dialog to the user AppUsesMouse=y diff --git a/project/jni/application/openttd/AndroidData/openttd-1.4.0.30.cfg b/project/jni/application/openttd/AndroidData/openttd-1.4.0.30.cfg index 99738634a..5d5d6ecb2 100644 --- a/project/jni/application/openttd/AndroidData/openttd-1.4.0.30.cfg +++ b/project/jni/application/openttd/AndroidData/openttd-1.4.0.30.cfg @@ -12,11 +12,13 @@ small_aa = true medium_aa = true large_aa = true mono_aa = true -min_button_size = 40 -min_step_size = 40 +min_button_size = 48 +min_step_size = 48 [gui] left_mouse_btn_scrolling = true osk_activation = disabled auto_scrolling = 0 reverse_scroll = true +windows_titlebars = false +windows_decorations = true diff --git a/project/jni/application/openttd/build-pc.sh b/project/jni/application/openttd/build-pc.sh index 06a7aea8c..f15d7db1b 100755 --- a/project/jni/application/openttd/build-pc.sh +++ b/project/jni/application/openttd/build-pc.sh @@ -18,7 +18,7 @@ cd bin export LD_LIBRARY_PATH=/usr/local/lib if [ -z "$1" ]; then - ./openttd -d 2 -r 854x480 #-g opntitle.sav + ./openttd -d 2 -r 854x480 # -g opntitle.sav else #gdb -ex run --args \ valgrind --track-fds=yes --log-file=valgrind.log --leak-check=full \ diff --git a/project/jni/application/openttd/pack-data.sh b/project/jni/application/openttd/pack-data.sh index a22a208b2..2c74a2481 100755 --- a/project/jni/application/openttd/pack-data.sh +++ b/project/jni/application/openttd/pack-data.sh @@ -1,6 +1,6 @@ #!/bin/sh -VER=1.6.1-1 +VER=1.7.0-0 cd data rm -f ../AndroidData/openttd-data-*.zip.xz ../AndroidData/openttd-data-*.zip diff --git a/project/jni/application/openttd/src b/project/jni/application/openttd/src index 6fe577996..3364c4288 160000 --- a/project/jni/application/openttd/src +++ b/project/jni/application/openttd/src @@ -1 +1 @@ -Subproject commit 6fe5779964d63624cfc3f0541ad46ad1d65ccc69 +Subproject commit 3364c4288db1e040a9e98dd5d30a8d7b20c16dcc diff --git a/project/jni/gl4es/README.md b/project/jni/gl4es/README.md index cf6f33e6f..5d4c21e9e 100755 --- a/project/jni/gl4es/README.md +++ b/project/jni/gl4es/README.md @@ -3,11 +3,11 @@ gl4es This is a library providing OpenGL 1.x functionality for OpenGL ES accelerated hardware. -This is a fork a glshim (https://github.com/lunixbochs/glshim). Go check this lib if you need things like RemoteGL or if need support for TinyGLES (for 100% software rendering). +This is a fork a glshim (https://github.com/lunixbochs/glshim). Go check this lib if you need things like RemoteGL or TinyGLES (for 100% software rendering). -The focusse is on compatibility with a wide selection of game and software, as well as speed. +The focus is on compatibility with a wide selection of game and software, as well as speed. -It has been tested successfully of a large selection of games and software, including: Mincraft, OpenMW, SeriousSam, RVGL, TSMC, TORCS, SpeedDreams, GL-117, Blender 2.68 and many more. +It has been tested successfully of a large selection of games and software, including: Mincraft, OpenMW, SeriousSam, RVGL, TSMC, TORCS, SpeedDreams, GL-117, Foobillard(plus), Blender 2.68 and many more. Most function of OpenGL up to 1.5 are supported, with some notable exceptions: * Reading of Depth or Stencil buffer will not work @@ -235,13 +235,19 @@ Vertex Array BGRA extension * 0 : Default, GL_ARB_vertex_array_bgra not exposed (still emulated) * 1 : Extension exposed may be faster in some cases (Arx Libertatis mainly) +##### LIBGL_BEGINEND +Merge of subsequent glBegin/glEnd blocks (will be non-effective if BATCH mode is used) + * 0 : Don't try to merge + * 1 : Try to merge, even if there is a glColor / glNormal in between (default) + * 2 : Try hard to merge, even if there is a glColor / glNormal or Matrix operations in between + ---- Version history ---- -##### Current version - * Added some optimisations for sequencial glBegin/glEnd blocks +##### 0.9.5 + * Added some optimisations for sequencial glBegin/glEnd blocks, with a switch to control them * Fixed many issue with Lights introduced with 0.9.4 * Fixed Android build introduced with 0.9.4 diff --git a/project/jni/gl4es/include/gl4eshint.h b/project/jni/gl4es/include/gl4eshint.h index 04c9ee0a0..5c72988cc 100755 --- a/project/jni/gl4es/include/gl4eshint.h +++ b/project/jni/gl4es/include/gl4eshint.h @@ -25,5 +25,9 @@ #define GL_NOERROR_HINT_GL4ES 0xA10A // same as using LIBGL_NODOWNSAMPLING=x #define GL_NODOWNSAMPLING_HINT_GL4ES 0xA10B +// same as using LIBGL_NOVAOCACHE=x +#define GL_NOVAOCACHE_HINT_GL4ES 0xA10C +// same as using LIBGL_BEGINEND=x +#define GL_BEGINEND_HINT_GL4ES 0xA10D #endif \ No newline at end of file diff --git a/project/jni/gl4es/src/gl/getter.c b/project/jni/gl4es/src/gl/getter.c index 3854e9332..dd80633d8 100755 --- a/project/jni/gl4es/src/gl/getter.c +++ b/project/jni/gl4es/src/gl/getter.c @@ -525,6 +525,12 @@ void gl4es_glGetFloatv(GLenum pname, GLfloat *params) { case GL_NODOWNSAMPLING_HINT_GL4ES: *params=globals4es.nodownsampling; break; + case GL_NOVAOCACHE_HINT_GL4ES: + *params=globals4es.novaocache; + break; + case GL_BEGINEND_HINT_GL4ES: + *params=globals4es.beginend; + break; default: errorGL(); gles_glGetFloatv(pname, params); diff --git a/project/jni/gl4es/src/gl/gl.c b/project/jni/gl4es/src/gl/gl.c index 00f09dab1..0247bdb15 100755 --- a/project/jni/gl4es/src/gl/gl.c +++ b/project/jni/gl4es/src/gl/gl.c @@ -2,6 +2,7 @@ #include "debug.h" #include "../glx/hardext.h" #include "init.h" +#include "matrix.h" glstate_t *glstate = NULL; @@ -1036,6 +1037,10 @@ void gl4es_glBegin(GLenum mode) { glstate->list.active->mode = mode; glstate->list.active->mode_init = mode; noerrorShim(); // TODO, check Enum validity + if (!(glstate->list.compiling || glstate->gl_batch) && (globals4es.beginend==2) && !(glstate->polygon_mode==GL_LINE)) { //TODO: check TexGen? + // immediate MV matrix handling + gl4es_immediateMVBegin(); + } } void glBegin(GLenum mode) AliasExport("gl4es_glBegin"); @@ -1047,7 +1052,7 @@ void gl4es_glEnd() { if (glstate->enable.texture[a] && ((glstate->list.active->tex[a]==0) && !(glstate->enable.texgen_s[a] || glstate->texture.pscoordreplace[a]))) rlMultiTexCoord4f(glstate->list.active, GL_TEXTURE0+a, glstate->texcoord[a][0], glstate->texcoord[a][1], glstate->texcoord[a][2], glstate->texcoord[a][3]); // render if we're not in a display list - if (!(glstate->list.compiling || glstate->gl_batch) && (!(globals4es.mergelist) || (glstate->polygon_mode==GL_LINE))) { + if (!(glstate->list.compiling || glstate->gl_batch) && (!(globals4es.beginend) || (glstate->polygon_mode==GL_LINE))) { renderlist_t *mylist = glstate->list.active; glstate->list.active = NULL; mylist = end_renderlist(mylist); @@ -1600,6 +1605,8 @@ void flush() { free_renderlist(mylist); glstate->gl_batch = old; } + if(glstate->immediateMV) + gl4es_immediateMVEnd(); init_statebatch(); glstate->list.active = (glstate->gl_batch)?alloc_renderlist():NULL; } diff --git a/project/jni/gl4es/src/gl/hint.c b/project/jni/gl4es/src/gl/hint.c index 253833bef..9ec81015c 100755 --- a/project/jni/gl4es/src/gl/hint.c +++ b/project/jni/gl4es/src/gl/hint.c @@ -78,6 +78,17 @@ void gl4es_glHint(GLenum pname, GLenum mode) { else errorShim(GL_INVALID_ENUM); break; + case GL_NOVAOCACHE_HINT_GL4ES: + if (mode<=1) + globals4es.novaocache = mode; + else + errorShim(GL_INVALID_ENUM); + break; + case GL_BEGINEND_HINT_GL4ES: + if(mode<=2) + globals4es.beginend = mode; + else + errorShim(GL_INVALID_ENUM); default: errorGL(); gles_glHint(pname, mode); diff --git a/project/jni/gl4es/src/gl/init.c b/project/jni/gl4es/src/gl/init.c index 732a4e632..ae4e2c17b 100755 --- a/project/jni/gl4es/src/gl/init.c +++ b/project/jni/gl4es/src/gl/init.c @@ -45,6 +45,7 @@ void initialize_gl4es() { memset(&globals4es, 0, sizeof(globals4es)); globals4es.mergelist = 1; globals4es.queries = 1; + globals4es.beginend = 1; // overides by env. variables char *env_nobanner = getenv("LIBGL_NOBANNER"); if (env_nobanner && strcmp(env_nobanner, "1") == 0) @@ -266,7 +267,23 @@ void initialize_gl4es() { env(LIBGL_NOTEXMAT, globals4es.texmat, "Don't handle Texture Matrice internaly"); env(LIBGL_NOVAOCACHE, globals4es.novaocache, "Don't use VAO cache"); - + + char *env_beginend = getenv("LIBGL_BEGINEND"); + if(env_beginend) { + if (strcmp(env_beginend, "0") == 0) { + globals4es.beginend = 0; + SHUT(LOGD("LIBGL: Don't try to merge subsequent glBegin/glEnd blocks\n")); + } + if (strcmp(env_beginend, "1") == 0) { + globals4es.beginend = 1; + SHUT(LOGD("LIBGL: Try to merge subsequent glBegin/glEnd blocks, even if there is a glColor / glNormal in between\n")); + } + if (strcmp(env_beginend, "2") == 0) { + globals4es.beginend = 2; + SHUT(LOGD("LIBGL: Try hard to merge subsequent glBegin/glEnd blocks, even if there is a glColor / glNormal or Matrix operations in between\n")); + } + } + char cwd[1024]; if (getcwd(cwd, sizeof(cwd))!= NULL) SHUT(LOGD("LIBGL: Current folder is:%s\n", cwd)); diff --git a/project/jni/gl4es/src/gl/init.h b/project/jni/gl4es/src/gl/init.h index 5ee201397..3ec6f5fa4 100755 --- a/project/jni/gl4es/src/gl/init.h +++ b/project/jni/gl4es/src/gl/init.h @@ -40,6 +40,7 @@ typedef struct _globals4es { #endif int texmat; int novaocache; + int beginend; char version[50]; } globals4es_t; diff --git a/project/jni/gl4es/src/gl/list.c b/project/jni/gl4es/src/gl/list.c index 00e4d15ce..c0d85f5d9 100755 --- a/project/jni/gl4es/src/gl/list.c +++ b/project/jni/gl4es/src/gl/list.c @@ -1281,6 +1281,9 @@ void FASTMATH rlVertex4f(renderlist_t *list, GLfloat x, GLfloat y, GLfloat z, GL GLfloat * const vert = list->vert + (list->len++ * 4); vert[0] = x; vert[1] = y; vert[2] = z; vert[3] = w; + if(glstate->immediateMV) { // need to trasform the vector if immediateMV is active + vector_matrix(vert, getMVMat(), vert); + } } void rlNormal3f(renderlist_t *list, GLfloat x, GLfloat y, GLfloat z) { @@ -1296,6 +1299,9 @@ void rlNormal3f(renderlist_t *list, GLfloat x, GLfloat y, GLfloat z) { GLfloat *normal = list->lastNormal; normal[0] = x; normal[1] = y; normal[2] = z; + if(glstate->immediateMV) { // need to trasform the vector if immediateMV is active + vector3_matrix(normal, getMVMat(), normal); + } } void rlColor4f(renderlist_t *list, GLfloat r, GLfloat g, GLfloat b, GLfloat a) { diff --git a/project/jni/gl4es/src/gl/matrix.c b/project/jni/gl4es/src/gl/matrix.c index 8ef889d5f..3a7caccbd 100755 --- a/project/jni/gl4es/src/gl/matrix.c +++ b/project/jni/gl4es/src/gl/matrix.c @@ -48,7 +48,10 @@ static int send_to_hardware() { case GL_PROJECTION: return 1; case GL_MODELVIEW: - return 1; + if (glstate->immediateMV) + return 0; + else + return 1; case GL_TEXTURE: return (globals4es.texmat)?1:0; } @@ -88,7 +91,9 @@ DBG(printf("glMatrixMode(%s), list=%p\n", PrintEnum(mode), glstate->list.active) void gl4es_glPushMatrix() { DBG(printf("glPushMatrix(), list=%p\n", glstate->list.active);) - PUSH_IF_COMPILING(glPushMatrix); + /*if (glstate->list.active && !(glstate->immediateMV && glstate->matrix_mode==GL_MODELVIEW))*/ { + PUSH_IF_COMPILING(glPushMatrix); + } // get matrix mode GLint matrix_mode = glstate->matrix_mode; noerrorShim(); @@ -118,8 +123,9 @@ DBG(printf("glPushMatrix(), list=%p\n", glstate->list.active);) void gl4es_glPopMatrix() { DBG(printf("glPopMatrix(), list=%p\n", glstate->list.active);) - PUSH_IF_COMPILING(glPopMatrix); - LOAD_GLES(glLoadMatrixf); + /*if (glstate->list.active && !(glstate->immediateMV && glstate->matrix_mode==GL_MODELVIEW))*/ { + PUSH_IF_COMPILING(glPopMatrix); + } // get matrix mode GLint matrix_mode = glstate->matrix_mode; // go... @@ -128,7 +134,7 @@ DBG(printf("glPopMatrix(), list=%p\n", glstate->list.active);) #define P(A) if(glstate->A->top) { \ --glstate->A->top; \ glstate->A->identity = is_identity(update_current_mat()); \ - if (send_to_hardware()) gles_glLoadMatrixf(update_current_mat()); \ + if (send_to_hardware()) {LOAD_GLES(glLoadMatrixf); gles_glLoadMatrixf(update_current_mat()); } \ } else errorShim(GL_STACK_UNDERFLOW) case GL_PROJECTION: P(projection_matrix); @@ -151,10 +157,8 @@ DBG(printf("glPopMatrix(), list=%p\n", glstate->list.active);) void gl4es_glLoadMatrixf(const GLfloat * m) { DBG(printf("glLoadMatrix(%f, %f, %f, %f, %f, %f, %f...), list=%p\n", m[0], m[1], m[2], m[3], m[4], m[5], m[6], glstate->list.active);) - LOAD_GLES(glLoadMatrixf); - LOAD_GLES(glLoadIdentity); - if (glstate->list.active) { + if (glstate->list.active && !(glstate->immediateMV && glstate->matrix_mode==GL_MODELVIEW)) { if(glstate->list.pending) flush(); else { NewStage(glstate->list.active, STAGE_MATRIX); @@ -165,16 +169,17 @@ DBG(printf("glLoadMatrix(%f, %f, %f, %f, %f, %f, %f...), list=%p\n", m[0], m[1], } memcpy(update_current_mat(), m, 16*sizeof(GLfloat)); const int id = update_current_identity(0); - if(send_to_hardware()) + if(send_to_hardware()) { + LOAD_GLES(glLoadMatrixf); + LOAD_GLES(glLoadIdentity); if(id) gles_glLoadIdentity(); // in case the driver as some special optimisations else gles_glLoadMatrixf(m); + } } void gl4es_glMultMatrixf(const GLfloat * m) { DBG(printf("glMultMatrix(%f, %f, %f, %f, %f, %f, %f...), list=%p\n", m[0], m[1], m[2], m[3], m[4], m[5], m[6], glstate->list.active);) - LOAD_GLES(glLoadMatrixf); - LOAD_GLES(glLoadIdentity); - if (glstate->list.active) { + if (glstate->list.active && !(glstate->immediateMV && glstate->matrix_mode==GL_MODELVIEW)) { if(glstate->list.pending) flush(); else { if(glstate->list.active->stage == STAGE_MATRIX) { @@ -191,15 +196,17 @@ DBG(printf("glMultMatrix(%f, %f, %f, %f, %f, %f, %f...), list=%p\n", m[0], m[1], GLfloat *current_mat = update_current_mat(); matrix_mul(current_mat, m, current_mat); const int id = update_current_identity(0); - if(send_to_hardware()) + if(send_to_hardware()) { + LOAD_GLES(glLoadMatrixf); + LOAD_GLES(glLoadIdentity); if(id) gles_glLoadIdentity(); // in case the driver as some special optimisations else gles_glLoadMatrixf(current_mat); + } } void gl4es_glLoadIdentity() { DBG(printf("glLoadIdentity(), list=%p\n", glstate->list.active);) - LOAD_GLES(glLoadIdentity); - if (glstate->list.active) { + if (glstate->list.active && !(glstate->immediateMV && glstate->matrix_mode==GL_MODELVIEW)) { if(glstate->list.pending) flush(); else { NewStage(glstate->list.active, STAGE_MATRIX); @@ -210,7 +217,10 @@ DBG(printf("glLoadIdentity(), list=%p\n", glstate->list.active);) } set_identity(update_current_mat()); update_current_identity(1); - if(send_to_hardware()) gles_glLoadIdentity(); + if(send_to_hardware()) { + LOAD_GLES(glLoadIdentity); + gles_glLoadIdentity(); + } } void gl4es_glTranslatef(GLfloat x, GLfloat y, GLfloat z) { @@ -287,6 +297,42 @@ DBG(printf("glFrustumf(%f, %f, %f, %f, %f, %f) list=%p\n", left, right, top, bot gl4es_glMultMatrixf(tmp); } +void gl4es_immediateMVBegin() { + if(glstate->immediateMV) + return; // nothing to do... + + glstate->immediateMV = 1; + + // set MV matrix to identity + if(!glstate->modelview_matrix->identity) { + LOAD_GLES(glLoadIdentity); + LOAD_GLES(glMatrixMode); + if(glstate->matrix_mode!=GL_MODELVIEW) + gles_glMatrixMode(GL_MODELVIEW); + gles_glLoadIdentity(); + if(glstate->matrix_mode!=GL_MODELVIEW) + gles_glMatrixMode(glstate->matrix_mode); + } + +} +void gl4es_immediateMVEnd() { + if(glstate->immediateMV==0) + return; // nothing to do + + glstate->immediateMV=0; + + // send MV matrix back + if(!glstate->modelview_matrix->identity) { + LOAD_GLES(glLoadMatrixf); + LOAD_GLES(glMatrixMode); + if(glstate->matrix_mode!=GL_MODELVIEW) + gles_glMatrixMode(GL_MODELVIEW); + gles_glLoadMatrixf(getMVMat()); + if(glstate->matrix_mode!=GL_MODELVIEW) + gles_glMatrixMode(glstate->matrix_mode); + } +} + void glMatrixMode(GLenum mode) AliasExport("gl4es_glMatrixMode"); void glPushMatrix() AliasExport("gl4es_glPushMatrix"); void glPopMatrix() AliasExport("gl4es_glPopMatrix"); diff --git a/project/jni/gl4es/src/gl/matrix.h b/project/jni/gl4es/src/gl/matrix.h index 5c6d663b7..ea024e5ba 100755 --- a/project/jni/gl4es/src/gl/matrix.h +++ b/project/jni/gl4es/src/gl/matrix.h @@ -18,4 +18,7 @@ static inline GLfloat* getTexMat(int tmu) { static inline GLfloat* getMVMat() { return glstate->modelview_matrix->stack+glstate->modelview_matrix->top*16; -} \ No newline at end of file +} + +void gl4es_immediateMVBegin(); +void gl4es_immediateMVEnd(); \ No newline at end of file diff --git a/project/jni/gl4es/src/gl/state.h b/project/jni/gl4es/src/gl/state.h index 9c3a638dd..2e7bf64ff 100755 --- a/project/jni/gl4es/src/gl/state.h +++ b/project/jni/gl4es/src/gl/state.h @@ -194,6 +194,7 @@ typedef struct { int shared_cnt; light_state_t light; material_state_t material; + int immediateMV; } glstate_t; #endif diff --git a/project/jni/gl4es/version.h b/project/jni/gl4es/version.h index 60cb729aa..bafa84bdf 100755 --- a/project/jni/gl4es/version.h +++ b/project/jni/gl4es/version.h @@ -3,6 +3,6 @@ #define MAJOR 0 #define MINOR 9 -#define REVISION 4 +#define REVISION 5 #endif //_GL4ES_VERSION_H diff --git a/project/jni/openssl/Android.mk b/project/jni/openssl/Android.mk index 8f2a0cd9a..68d03dee7 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.1 # It clashes with s ifneq (openssl,$(LOCAL_MODULE)) -ifneq ($(filter arm mips x86 arm64, $(TARGET_ARCH)),) +ifneq ($(filter arm mips x86 arm64 x86_64, $(TARGET_ARCH)),) LOCAL_C_INCLUDES := $(LOCAL_PATH)/include LOCAL_SRC_FILES := lib-$(TARGET_ARCH_ABI)/lib$(LOCAL_MODULE).so.sdl.1.so diff --git a/project/jni/openssl/compile.sh b/project/jni/openssl/compile.sh index bb620269a..aba9e7439 100755 --- a/project/jni/openssl/compile.sh +++ b/project/jni/openssl/compile.sh @@ -1,6 +1,6 @@ #!/bin/sh -ARCH_LIST="arm64-v8a x86 mips armeabi-v7a armeabi" +ARCH_LIST="arm64-v8a x86_64 x86 mips armeabi-v7a armeabi" mkdir -p build @@ -21,7 +21,7 @@ build() { mkdir -p build/$ARCH cd build/$ARCH - tar -x -v -z -f ../../openssl-1.0.2h.tar.gz --strip=1 + tar -x -v -z -f ../../openssl-1.0.2k.tar.gz --strip=1 #sed -i.old 's/-Wl,-soname=[$][$]SHLIB[$][$]SHLIB_SOVER[$][$]SHLIB_SUFFIX//g' Makefile.shared ../../setCrossEnvironment-$ARCH.sh ./Configure shared zlib --prefix=`pwd`/dist $CONFIGURE_ARCH -fPIC || exit 1 # OpenSSL build system disables parallel compilation, -j4 won't do anything diff --git a/project/jni/openssl/include/openssl/bio.h b/project/jni/openssl/include/openssl/bio.h index 6790aed28..8f2438cda 100644 --- a/project/jni/openssl/include/openssl/bio.h +++ b/project/jni/openssl/include/openssl/bio.h @@ -559,11 +559,11 @@ int BIO_read_filename(BIO *b, const char *name); # define BIO_get_ssl(b,sslp) BIO_ctrl(b,BIO_C_GET_SSL,0,(char *)sslp) # define BIO_set_ssl_mode(b,client) BIO_ctrl(b,BIO_C_SSL_MODE,client,NULL) # define BIO_set_ssl_renegotiate_bytes(b,num) \ - BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_BYTES,num,NULL); + BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_BYTES,num,NULL) # define BIO_get_num_renegotiates(b) \ - BIO_ctrl(b,BIO_C_GET_SSL_NUM_RENEGOTIATES,0,NULL); + BIO_ctrl(b,BIO_C_GET_SSL_NUM_RENEGOTIATES,0,NULL) # define BIO_set_ssl_renegotiate_timeout(b,seconds) \ - BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT,seconds,NULL); + BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT,seconds,NULL) /* defined in evp.h */ /* #define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,1,(char *)md) */ diff --git a/project/jni/openssl/include/openssl/bn.h b/project/jni/openssl/include/openssl/bn.h index 86264ae63..633d1b1f6 100644 --- a/project/jni/openssl/include/openssl/bn.h +++ b/project/jni/openssl/include/openssl/bn.h @@ -842,6 +842,8 @@ int RAND_pseudo_bytes(unsigned char *buf, int num); if (*(ftl--)) break; \ (a)->top = tmp_top; \ } \ + if ((a)->top == 0) \ + (a)->neg = 0; \ bn_pollute(a); \ } diff --git a/project/jni/openssl/include/openssl/comp.h b/project/jni/openssl/include/openssl/comp.h index 60a073404..df599ba33 100644 --- a/project/jni/openssl/include/openssl/comp.h +++ b/project/jni/openssl/include/openssl/comp.h @@ -14,7 +14,7 @@ extern "C" { typedef struct comp_ctx_st COMP_CTX; -typedef struct comp_method_st { +struct comp_method_st { int type; /* NID for compression library */ const char *name; /* A text string to identify the library */ int (*init) (COMP_CTX *ctx); @@ -30,7 +30,7 @@ typedef struct comp_method_st { */ long (*ctrl) (void); long (*callback_ctrl) (void); -} COMP_METHOD; +}; struct comp_ctx_st { COMP_METHOD *meth; diff --git a/project/jni/openssl/include/openssl/evp.h b/project/jni/openssl/include/openssl/evp.h index 39ab7937d..d258ef870 100644 --- a/project/jni/openssl/include/openssl/evp.h +++ b/project/jni/openssl/include/openssl/evp.h @@ -1370,6 +1370,7 @@ void EVP_add_alg_module(void); * The following lines are auto generated by the script mkerr.pl. Any changes * made after this point may be overwritten when the script is next run. */ + void ERR_load_EVP_strings(void); /* Error codes for the EVP functions. */ @@ -1489,6 +1490,7 @@ void ERR_load_EVP_strings(void); # define EVP_R_INPUT_NOT_INITIALIZED 111 # define EVP_R_INVALID_DIGEST 152 # define EVP_R_INVALID_FIPS_MODE 168 +# define EVP_R_INVALID_KEY 171 # define EVP_R_INVALID_KEY_LENGTH 130 # define EVP_R_INVALID_OPERATION 148 # define EVP_R_IV_TOO_LARGE 102 @@ -1528,7 +1530,7 @@ void ERR_load_EVP_strings(void); # define EVP_R_WRONG_FINAL_BLOCK_LENGTH 109 # define EVP_R_WRONG_PUBLIC_KEY_TYPE 110 -#ifdef __cplusplus +# ifdef __cplusplus } -#endif +# endif #endif diff --git a/project/jni/openssl/include/openssl/opensslv.h b/project/jni/openssl/include/openssl/opensslv.h index 13fe44023..645dd0793 100644 --- a/project/jni/openssl/include/openssl/opensslv.h +++ b/project/jni/openssl/include/openssl/opensslv.h @@ -30,11 +30,11 @@ extern "C" { * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for * major minor fix final patch/beta) */ -# define OPENSSL_VERSION_NUMBER 0x1000208fL +# define OPENSSL_VERSION_NUMBER 0x100020bfL # ifdef OPENSSL_FIPS -# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2h-fips 3 May 2016" +# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2k-fips 26 Jan 2017" # else -# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2h 3 May 2016" +# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2k 26 Jan 2017" # endif # define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT diff --git a/project/jni/openssl/include/openssl/ossl_typ.h b/project/jni/openssl/include/openssl/ossl_typ.h index 9144ea2cf..364d26238 100644 --- a/project/jni/openssl/include/openssl/ossl_typ.h +++ b/project/jni/openssl/include/openssl/ossl_typ.h @@ -178,6 +178,8 @@ typedef struct engine_st ENGINE; typedef struct ssl_st SSL; typedef struct ssl_ctx_st SSL_CTX; +typedef struct comp_method_st COMP_METHOD; + typedef struct X509_POLICY_NODE_st X509_POLICY_NODE; typedef struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL; typedef struct X509_POLICY_TREE_st X509_POLICY_TREE; diff --git a/project/jni/openssl/include/openssl/pem.h b/project/jni/openssl/include/openssl/pem.h index d3b23fc99..aac72fb21 100644 --- a/project/jni/openssl/include/openssl/pem.h +++ b/project/jni/openssl/include/openssl/pem.h @@ -531,6 +531,7 @@ int i2b_PVK_bio(BIO *out, EVP_PKEY *pk, int enclevel, * The following lines are auto generated by the script mkerr.pl. Any changes * made after this point may be overwritten when the script is next run. */ + void ERR_load_PEM_strings(void); /* Error codes for the PEM functions. */ @@ -592,6 +593,7 @@ void ERR_load_PEM_strings(void); # define PEM_R_ERROR_CONVERTING_PRIVATE_KEY 115 # define PEM_R_EXPECTING_PRIVATE_KEY_BLOB 119 # define PEM_R_EXPECTING_PUBLIC_KEY_BLOB 120 +# define PEM_R_HEADER_TOO_LONG 128 # define PEM_R_INCONSISTENT_HEADER 121 # define PEM_R_KEYBLOB_HEADER_PARSE_ERROR 122 # define PEM_R_KEYBLOB_TOO_SHORT 123 @@ -609,7 +611,7 @@ void ERR_load_PEM_strings(void); # define PEM_R_UNSUPPORTED_ENCRYPTION 114 # define PEM_R_UNSUPPORTED_KEY_COMPONENTS 126 -#ifdef __cplusplus +# ifdef __cplusplus } -#endif +# endif #endif diff --git a/project/jni/openssl/include/openssl/pkcs12.h b/project/jni/openssl/include/openssl/pkcs12.h index a39adf5eb..21f1f62b3 100644 --- a/project/jni/openssl/include/openssl/pkcs12.h +++ b/project/jni/openssl/include/openssl/pkcs12.h @@ -270,7 +270,7 @@ int i2d_PKCS12_bio(BIO *bp, PKCS12 *p12); int i2d_PKCS12_fp(FILE *fp, PKCS12 *p12); PKCS12 *d2i_PKCS12_bio(BIO *bp, PKCS12 **p12); PKCS12 *d2i_PKCS12_fp(FILE *fp, PKCS12 **p12); -int PKCS12_newpass(PKCS12 *p12, char *oldpass, char *newpass); +int PKCS12_newpass(PKCS12 *p12, const char *oldpass, const char *newpass); /* BEGIN ERROR CODES */ /* diff --git a/project/jni/openssl/include/openssl/ssl.h b/project/jni/openssl/include/openssl/ssl.h index 5ef56faa5..90aeb0ce4 100644 --- a/project/jni/openssl/include/openssl/ssl.h +++ b/project/jni/openssl/include/openssl/ssl.h @@ -2532,7 +2532,6 @@ void SSL_set_tmp_ecdh_callback(SSL *ssl, int keylength)); # endif -# ifndef OPENSSL_NO_COMP const COMP_METHOD *SSL_get_current_compression(SSL *s); const COMP_METHOD *SSL_get_current_expansion(SSL *s); const char *SSL_COMP_get_name(const COMP_METHOD *comp); @@ -2541,13 +2540,6 @@ STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP) *meths); void SSL_COMP_free_compression_methods(void); int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm); -# else -const void *SSL_get_current_compression(SSL *s); -const void *SSL_get_current_expansion(SSL *s); -const char *SSL_COMP_get_name(const void *comp); -void *SSL_COMP_get_compression_methods(void); -int SSL_COMP_add_compression_method(int id, void *cm); -# endif const SSL_CIPHER *SSL_CIPHER_find(SSL *ssl, const unsigned char *ptr); @@ -2623,6 +2615,7 @@ void ERR_load_SSL_strings(void); # define SSL_F_DTLS1_HEARTBEAT 305 # define SSL_F_DTLS1_OUTPUT_CERT_CHAIN 255 # define SSL_F_DTLS1_PREPROCESS_FRAGMENT 288 +# define SSL_F_DTLS1_PROCESS_BUFFERED_RECORDS 424 # define SSL_F_DTLS1_PROCESS_OUT_OF_SEQ_MESSAGE 256 # define SSL_F_DTLS1_PROCESS_RECORD 257 # define SSL_F_DTLS1_READ_BYTES 258 @@ -3114,6 +3107,7 @@ void ERR_load_SSL_strings(void); # define SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST 157 # define SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST 233 # define SSL_R_TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG 234 +# define SSL_R_TOO_MANY_WARN_ALERTS 409 # define SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER 235 # define SSL_R_UNABLE_TO_DECODE_DH_CERTS 236 # define SSL_R_UNABLE_TO_DECODE_ECDH_CERTS 313 diff --git a/project/jni/openssl/include/openssl/ts.h b/project/jni/openssl/include/openssl/ts.h index 16eccbb38..2daa1b2fb 100644 --- a/project/jni/openssl/include/openssl/ts.h +++ b/project/jni/openssl/include/openssl/ts.h @@ -565,6 +565,9 @@ int TS_RESP_CTX_set_clock_precision_digits(TS_RESP_CTX *ctx, /* At most we accept usec precision. */ # define TS_MAX_CLOCK_PRECISION_DIGITS 6 +/* Maximum status message length */ +# define TS_MAX_STATUS_LENGTH (1024 * 1024) + /* No flags are set by default. */ void TS_RESP_CTX_add_flags(TS_RESP_CTX *ctx, int flags); diff --git a/project/jni/openssl/include/openssl/x509.h b/project/jni/openssl/include/openssl/x509.h index fc613ce63..6fa28ebad 100644 --- a/project/jni/openssl/include/openssl/x509.h +++ b/project/jni/openssl/include/openssl/x509.h @@ -1234,6 +1234,7 @@ int X509_TRUST_get_trust(X509_TRUST *xp); * The following lines are auto generated by the script mkerr.pl. Any changes * made after this point may be overwritten when the script is next run. */ + void ERR_load_X509_strings(void); /* Error codes for the X509 functions. */ @@ -1241,6 +1242,7 @@ void ERR_load_X509_strings(void); /* Function codes. */ # define X509_F_ADD_CERT_DIR 100 # define X509_F_BY_FILE_CTRL 101 +# define X509_F_CHECK_NAME_CONSTRAINTS 106 # define X509_F_CHECK_POLICY 145 # define X509_F_DIR_CTRL 102 # define X509_F_GET_CERT_BY_SUBJECT 103 @@ -1322,7 +1324,7 @@ void ERR_load_X509_strings(void); # define X509_R_WRONG_LOOKUP_TYPE 112 # define X509_R_WRONG_TYPE 122 -#ifdef __cplusplus +# ifdef __cplusplus } -#endif +# endif #endif diff --git a/project/jni/openssl/include/openssl/x509_vfy.h b/project/jni/openssl/include/openssl/x509_vfy.h index 2663e1c0a..50626826e 100644 --- a/project/jni/openssl/include/openssl/x509_vfy.h +++ b/project/jni/openssl/include/openssl/x509_vfy.h @@ -368,6 +368,7 @@ void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth); # define X509_V_ERR_PERMITTED_VIOLATION 47 # define X509_V_ERR_EXCLUDED_VIOLATION 48 # define X509_V_ERR_SUBTREE_MINMAX 49 +# define X509_V_ERR_APPLICATION_VERIFICATION 50 # define X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE 51 # define X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX 52 # define X509_V_ERR_UNSUPPORTED_NAME_SYNTAX 53 @@ -386,8 +387,12 @@ void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth); # define X509_V_ERR_EMAIL_MISMATCH 63 # define X509_V_ERR_IP_ADDRESS_MISMATCH 64 -/* The application is not happy */ -# define X509_V_ERR_APPLICATION_VERIFICATION 50 +/* Caller error */ +# define X509_V_ERR_INVALID_CALL 65 +/* Issuer lookup error */ +# define X509_V_ERR_STORE_LOOKUP 66 + +# define X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION 67 /* Certificate verify flags */ diff --git a/project/jni/openssl/openssl-1.0.2h.tar.gz b/project/jni/openssl/openssl-1.0.2h.tar.gz deleted file mode 100644 index 7eb74e70b..000000000 Binary files a/project/jni/openssl/openssl-1.0.2h.tar.gz and /dev/null differ diff --git a/project/jni/openssl/openssl-1.0.2k-android-x86_64.diff b/project/jni/openssl/openssl-1.0.2k-android-x86_64.diff new file mode 100644 index 000000000..86a2835eb --- /dev/null +++ b/project/jni/openssl/openssl-1.0.2k-android-x86_64.diff @@ -0,0 +1,11 @@ +diff -Nru orig/openssl-1.0.2k/Configure openssl-1.0.2k/Configure +--- orig/openssl-1.0.2k/Configure 2017-01-26 15:22:03.000000000 +0200 ++++ openssl-1.0.2k/Configure 2017-03-19 22:11:58.906136059 +0200 +@@ -475,6 +475,7 @@ + "android-x86","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:".eval{my $asm=${x86_elf_asm};$asm=~s/:elf/:android/;$asm}.":dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", + "android-armv7","gcc:-march=armv7-a -mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", + "android-mips","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips32_asm}:o32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"android-x86_64","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib64 -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", + + #### *BSD [do see comment about ${BSDthreads} above!] + "BSD-generic32","gcc:-O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", diff --git a/project/jni/openssl/openssl-1.0.2k.tar.gz b/project/jni/openssl/openssl-1.0.2k.tar.gz new file mode 100644 index 000000000..30ede7e4c Binary files /dev/null and b/project/jni/openssl/openssl-1.0.2k.tar.gz differ diff --git a/project/jni/openssl/setCrossEnvironment-x86_64.sh b/project/jni/openssl/setCrossEnvironment-x86_64.sh new file mode 100755 index 000000000..e20b27e8f --- /dev/null +++ b/project/jni/openssl/setCrossEnvironment-x86_64.sh @@ -0,0 +1,80 @@ +#!/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=x86_64-linux-android +GCCVER=${GCCVER:-4.9} +PLATFORMVER=${PLATFORMVER:-android-21} +LOCAL_PATH=`dirname $0` +if which realpath > /dev/null ; then + LOCAL_PATH=`realpath $LOCAL_PATH` +else + LOCAL_PATH=`cd $LOCAL_PATH && pwd` +fi +ARCH=x86_64 + +CFLAGS="\ +-fpic -ffunction-sections -funwind-tables -no-canonical-prefixes \ +-fstack-protector -O2 -g -DNDEBUG \ +-fomit-frame-pointer -fstrict-aliasing -funswitch-loops \ +-finline-limit=300 \ +-DANDROID -Wall -Wno-unused -Wa,--noexecstack -Wformat -Werror=format-security \ +-isystem$NDK/platforms/$PLATFORMVER/arch-x86_64/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-x86_64 \ +-L$NDK/platforms/$PLATFORMVER/arch-x86_64/usr/lib64 \ +-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 \ +-lsupc++ \ +$LDFLAGS" + +env PATH=$NDK/toolchains/$ARCH-$GCCVER/prebuilt/$MYARCH/bin:$LOCAL_PATH:$PATH \ +ANDROID_DEV=$NDK/platforms/$PLATFORMVER/arch-x86_64/usr \ +CFLAGS="$CFLAGS" \ +CXXFLAGS="$CXXFLAGS $CFLAGS" \ +LDFLAGS="$LDFLAGS" \ +CC="$NDK/toolchains/$ARCH-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-gcc" \ +CXX="$NDK/toolchains/$ARCH-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" \ +RANLIB="$NDK/toolchains/$ARCH-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-ranlib" \ +LD="$NDK/toolchains/$ARCH-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-ld" \ +AR="$NDK/toolchains/$ARCH-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-ar" \ +CPP="$NDK/toolchains/$ARCH-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-cpp $CFLAGS" \ +CXXCPP="$NDK/toolchains/$ARCH-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-cpp -x c++ $CFLAGS" \ +NM="$NDK/toolchains/$ARCH-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-nm" \ +AS="$NDK/toolchains/$ARCH-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-as" \ +STRIP="$NDK/toolchains/$ARCH-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-strip" \ +"$@" diff --git a/project/jni/sdl-1.2/src/video/android/SDL_androidvideo-1.2.c b/project/jni/sdl-1.2/src/video/android/SDL_androidvideo-1.2.c index f867c8ce9..6efa5649b 100644 --- a/project/jni/sdl-1.2/src/video/android/SDL_androidvideo-1.2.c +++ b/project/jni/sdl-1.2/src/video/android/SDL_androidvideo-1.2.c @@ -130,7 +130,7 @@ int ANDROID_ToggleFullScreen(_THIS, int fullscreen) return 1; } -enum { SDL_NUMMODES = 60 }; +enum { SDL_NUMMODES = 61 }; static SDL_Rect *SDL_modelist[SDL_NUMMODES+1]; //#define SDL_modelist (this->hidden->SDL_modelist) @@ -351,7 +351,8 @@ int ANDROID_VideoInit(_THIS, SDL_PixelFormat *vformat) SDL_modelist[57]->w = 960; SDL_modelist[57]->h = 540; // Virtual wide-screen mode SDL_modelist[58]->w = 720; SDL_modelist[58]->h = 400; // Virtual wide-screen mode SDL_modelist[59]->w = 480; SDL_modelist[59]->h = 272; // PSP - SDL_modelist[60] = NULL; + SDL_modelist[60]->w = 996; SDL_modelist[60]->h = 560; // For OpenTTD + SDL_modelist[61] = NULL; // If you going to add another video mode, increase SDL_NUMMODES constant SDL_VideoInit_1_3(NULL, 0); diff --git a/project/jni/shmem b/project/jni/shmem index f6b49516c..5375e8eee 160000 --- a/project/jni/shmem +++ b/project/jni/shmem @@ -1 +1 @@ -Subproject commit f6b49516cf4b13f455a19ec989626be5472830c5 +Subproject commit 5375e8eeea8bf79663a1c8c0d971bfe989a3c14a diff --git a/reinstall-apk.sh b/reinstall-apk.sh new file mode 100755 index 000000000..6434ba656 --- /dev/null +++ b/reinstall-apk.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +[ -z "$1" ] && { echo "Specify .apk file"; exit 1; } + +LOG=/tmp/reinstall-apk-$$.log + +adb install -r $1 | tee $LOG + +grep '^Failure' $LOG && { + adb uninstall `aapt dump badging $1 | grep 'package:' | sed "s/.*name='\([^']*\)'.*/\1/"` + adb install -r $1 +} + +rm -f $LOG