From df2d299447fd81b0691043b55ca8f8e83d6ff7a4 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 13 Aug 2017 18:12:06 -0700 Subject: [PATCH] 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. --- configure | 2 ++ configure.in | 2 ++ src/main/android/SDL_android_main.c | 3 +++ 3 files changed, 7 insertions(+) diff --git a/configure b/configure index 6c9bebda8caef..f8ee03db3adf6 100755 --- a/configure +++ b/configure @@ -23555,8 +23555,10 @@ case "$host" in ANDROID_CFLAGS="-DGL_GLEXT_PROTOTYPES" CFLAGS="$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_LDFLAGS="$EXTRA_LDFLAGS -ldl -lGLESv1_CM -lGLESv2 -llog -landroid" + SDLMAIN_SOURCES="$srcdir/src/main/android/*.c" if test x$enable_video = xyes; then SOURCES="$SOURCES $srcdir/src/core/android/*.c $srcdir/src/video/android/*.c" diff --git a/configure.in b/configure.in index 04f293318da82..a97ba7fb0be63 100644 --- a/configure.in +++ b/configure.in @@ -3160,8 +3160,10 @@ case "$host" in ANDROID_CFLAGS="-DGL_GLEXT_PROTOTYPES" CFLAGS="$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_LDFLAGS="$EXTRA_LDFLAGS -ldl -lGLESv1_CM -lGLESv2 -llog -landroid" + SDLMAIN_SOURCES="$srcdir/src/main/android/*.c" if test x$enable_video = xyes; then SOURCES="$SOURCES $srcdir/src/core/android/*.c $srcdir/src/video/android/*.c" diff --git a/src/main/android/SDL_android_main.c b/src/main/android/SDL_android_main.c index 9b90a38cb91e6..db6ae4fbb7d5b 100644 --- a/src/main/android/SDL_android_main.c +++ b/src/main/android/SDL_android_main.c @@ -15,6 +15,9 @@ *******************************************************************************/ #include +/* 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 */ extern void SDL_Android_Init(JNIEnv* env, jclass cls);