Merge branch 'sdl_android' of github.com:pelya/commandergenius into sdl_android

This commit is contained in:
Gerhard Stein
2017-04-07 20:36:59 +02:00
44 changed files with 319 additions and 79 deletions

View File

@@ -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
}

View File

@@ -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

View File

@@ -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)

View File

@@ -0,0 +1 @@
#!/bin/sh

View File

@@ -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/

View File

@@ -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

View File

@@ -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

View File

@@ -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 \

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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));

View File

@@ -40,6 +40,7 @@ typedef struct _globals4es {
#endif
int texmat;
int novaocache;
int beginend;
char version[50];
} globals4es_t;

View File

@@ -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) {

View File

@@ -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");

View File

@@ -18,4 +18,7 @@ static inline GLfloat* getTexMat(int tmu) {
static inline GLfloat* getMVMat() {
return glstate->modelview_matrix->stack+glstate->modelview_matrix->top*16;
}
}
void gl4es_immediateMVBegin();
void gl4es_immediateMVEnd();

View File

@@ -194,6 +194,7 @@ typedef struct {
int shared_cnt;
light_state_t light;
material_state_t material;
int immediateMV;
} glstate_t;
#endif

View File

@@ -3,6 +3,6 @@
#define MAJOR 0
#define MINOR 9
#define REVISION 4
#define REVISION 5
#endif //_GL4ES_VERSION_H

View File

@@ -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

View File

@@ -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

View File

@@ -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) */

View File

@@ -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); \
}

View File

@@ -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;

View File

@@ -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

View File

@@ -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

View File

@@ -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;

View File

@@ -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

View File

@@ -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 */
/*

View File

@@ -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

View File

@@ -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);

View File

@@ -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

View File

@@ -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 */

View File

@@ -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)",

Binary file not shown.

View File

@@ -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" \
"$@"

View File

@@ -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);

14
reinstall-apk.sh Executable file
View File

@@ -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