Fixed bug 2812 - Make libSDL2main.a usable on Android via a dummy symbol

Jonas Kulla

This eliminates the need to manually compile in SDL_main_android.c.
Instead, add "-lSDL2main -Wl,-u,SDL_main_dummy" when linking.

I don't know how the nkd-build process works, but unless it was
for some reason linking libSDL2main.a it should be unaffected.
This commit is contained in:
Sam Lantinga 2017-08-13 18:12:06 -07:00
parent e977225937
commit df2d299447
3 changed files with 7 additions and 0 deletions

2
configure vendored
View File

@ -23555,8 +23555,10 @@ case "$host" in
ANDROID_CFLAGS="-DGL_GLEXT_PROTOTYPES" ANDROID_CFLAGS="-DGL_GLEXT_PROTOTYPES"
CFLAGS="$CFLAGS $ANDROID_CFLAGS" CFLAGS="$CFLAGS $ANDROID_CFLAGS"
SDL_CFLAGS="$SDL_CFLAGS $ANDROID_CFLAGS" SDL_CFLAGS="$SDL_CFLAGS $ANDROID_CFLAGS"
SDL_LIBS="$SDL_LIBS -lSDL2main -Wl,-u,SDL_main_dummy"
EXTRA_CFLAGS="$EXTRA_CFLAGS $ANDROID_CFLAGS" EXTRA_CFLAGS="$EXTRA_CFLAGS $ANDROID_CFLAGS"
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -ldl -lGLESv1_CM -lGLESv2 -llog -landroid" EXTRA_LDFLAGS="$EXTRA_LDFLAGS -ldl -lGLESv1_CM -lGLESv2 -llog -landroid"
SDLMAIN_SOURCES="$srcdir/src/main/android/*.c"
if test x$enable_video = xyes; then if test x$enable_video = xyes; then
SOURCES="$SOURCES $srcdir/src/core/android/*.c $srcdir/src/video/android/*.c" SOURCES="$SOURCES $srcdir/src/core/android/*.c $srcdir/src/video/android/*.c"

View File

@ -3160,8 +3160,10 @@ case "$host" in
ANDROID_CFLAGS="-DGL_GLEXT_PROTOTYPES" ANDROID_CFLAGS="-DGL_GLEXT_PROTOTYPES"
CFLAGS="$CFLAGS $ANDROID_CFLAGS" CFLAGS="$CFLAGS $ANDROID_CFLAGS"
SDL_CFLAGS="$SDL_CFLAGS $ANDROID_CFLAGS" SDL_CFLAGS="$SDL_CFLAGS $ANDROID_CFLAGS"
SDL_LIBS="$SDL_LIBS -lSDL2main -Wl,-u,SDL_main_dummy"
EXTRA_CFLAGS="$EXTRA_CFLAGS $ANDROID_CFLAGS" EXTRA_CFLAGS="$EXTRA_CFLAGS $ANDROID_CFLAGS"
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -ldl -lGLESv1_CM -lGLESv2 -llog -landroid" EXTRA_LDFLAGS="$EXTRA_LDFLAGS -ldl -lGLESv1_CM -lGLESv2 -llog -landroid"
SDLMAIN_SOURCES="$srcdir/src/main/android/*.c"
if test x$enable_video = xyes; then if test x$enable_video = xyes; then
SOURCES="$SOURCES $srcdir/src/core/android/*.c $srcdir/src/video/android/*.c" SOURCES="$SOURCES $srcdir/src/core/android/*.c $srcdir/src/video/android/*.c"

View File

@ -15,6 +15,9 @@
*******************************************************************************/ *******************************************************************************/
#include <jni.h> #include <jni.h>
/* Dummy symbol so '-u SDL_main_dummy' forces ld to link in libSDL2main.a */
JNIEXPORT int SDL_main_dummy;
/* Called before SDL_main() to initialize JNI bindings in SDL library */ /* Called before SDL_main() to initialize JNI bindings in SDL library */
extern void SDL_Android_Init(JNIEnv* env, jclass cls); extern void SDL_Android_Init(JNIEnv* env, jclass cls);