From 82031cafa0ec212ec3e34fa9bd3f04f606c090b0 Mon Sep 17 00:00:00 2001 From: pelya Date: Thu, 17 Oct 2013 21:16:53 +0300 Subject: [PATCH] Fixed SDL 1.2 compilation, moved chmod/setenv/chdir helpers to separate lib --- changeAppSettings.sh | 6 ++-- project/javaSDL2/MainActivity.java | 4 +-- project/jni/SettingsTemplate.mk | 2 +- .../commandergenius/commandergenius | 2 +- project/jni/application/openarena/engine | 2 +- project/jni/application/openarena/vm | 2 +- project/jni/application/teeworlds/src | 2 +- .../src/video/android/SDL_androidvideo.c | 32 ++----------------- project/jni/sdl_main/Android.mk | 2 +- project/jni/sdl_native_helpers/Android.mk | 21 ++++++++++++ .../jni/sdl_native_helpers/jniwrapperstuff.h | 13 ++++++++ .../repoNatives.c | 16 ---------- 12 files changed, 48 insertions(+), 56 deletions(-) create mode 100644 project/jni/sdl_native_helpers/Android.mk create mode 100644 project/jni/sdl_native_helpers/jniwrapperstuff.h rename project/jni/{sdl_main => sdl_native_helpers}/repoNatives.c (76%) diff --git a/changeAppSettings.sh b/changeAppSettings.sh index d5b1d43ed..38de84104 100755 --- a/changeAppSettings.sh +++ b/changeAppSettings.sh @@ -1202,7 +1202,7 @@ else MultiABI="$MultiABI" # Eh okay fi -LibrariesToLoad="\\\"sdl-$LibSdlVersion\\\"" +LibrariesToLoad="\\\"sdl_native_helpers\\\", \\\"sdl-$LibSdlVersion\\\"" StaticLibraries=`grep 'APP_AVAILABLE_STATIC_LIBS' project/jni/SettingsTemplate.mk | sed 's/.*=\(.*\)/\1/'` for lib in $CompiledLibraries; do process=true @@ -1359,7 +1359,7 @@ $SEDI "s/public static String AppMainLibraries.*/public static String AppMainLib echo Patching project/jni/Settings.mk echo '# DO NOT EDIT THIS FILE - it is automatically generated, edit file SettingsTemplate.mk' > project/jni/Settings.mk cat project/jni/SettingsTemplate.mk | \ - sed "s/APP_MODULES := .*/APP_MODULES := application sdl-$LibSdlVersion sdl_main stlport jpeg png ogg flac vorbis freetype $CompiledLibraries/" | \ + sed "s/APP_MODULES := .*/APP_MODULES := application sdl-$LibSdlVersion sdl_main sdl_native_helpers jpeg png ogg flac vorbis freetype $CompiledLibraries/" | \ sed "s/APP_ABI := .*/APP_ABI := $MultiABI/" | \ sed "s/SDL_JAVA_PACKAGE_PATH := .*/SDL_JAVA_PACKAGE_PATH := $AppFullNameUnderscored/" | \ sed "s^SDL_CURDIR_PATH := .*^SDL_CURDIR_PATH := $DataPath^" | \ @@ -1397,7 +1397,7 @@ rm -rf project/$OUT/local/*/objs*/sdl-*/src/video/SDL_video.o rm -rf project/$OUT/local/*/objs*/sdl-*/SDL_renderer_gles.o rm -rf project/$OUT/local/*/objs*/sdl_* # Do not rebuild several huge libraries that do not depend on SDL version -for LIB in freetype intl jpeg png lua mad stlport tremor xerces xml2 curl lua mikmod \ +for LIB in freetype intl jpeg png lua mad tremor xerces xml2 curl lua mikmod \ boost boost_signals boost_thread boost_filesystem boost_date_time boost_system boost_regex boost_iostreams boost_program_options \ ffmpeg swscale avcodec avdevice avresample avutil avfilter swresample avformat; do for ARCH in armeabi armeabi-v7a; do diff --git a/project/javaSDL2/MainActivity.java b/project/javaSDL2/MainActivity.java index 2f7520ee4..21ac677d5 100644 --- a/project/javaSDL2/MainActivity.java +++ b/project/javaSDL2/MainActivity.java @@ -1057,7 +1057,7 @@ public class MainActivity extends SDLActivity out.flush(); out.close(); - //Settings.nativeChmod(path, 0755); -> TODO: DOes not work yet. + Settings.nativeChmod(path, 0755); //String chmod[] = { "/system/bin/chmod", "0755", path }; @@ -1074,7 +1074,7 @@ public class MainActivity extends SDLActivity public static void LoadApplicationLibrary(final Context context) { - //Settings.nativeChdir(Globals.DataDir); + Settings.nativeChdir(Globals.DataDir); for(String l : Globals.AppMainLibraries) { try diff --git a/project/jni/SettingsTemplate.mk b/project/jni/SettingsTemplate.mk index 07fe12147..a8319d162 100644 --- a/project/jni/SettingsTemplate.mk +++ b/project/jni/SettingsTemplate.mk @@ -1,6 +1,6 @@ # Available libraries: mad (GPL-ed!) sdl_mixer sdl_image sdl_ttf sdl_net sdl_blitpool sdl_gfx sdl_sound intl xml2 lua jpeg png ogg flac tremor vorbis freetype xerces curl theora fluidsynth lzma lzo2 mikmod openal timidity zzip bzip2 yaml-cpp python boost_date_time boost_filesystem boost_iostreams boost_program_options boost_regex boost_signals boost_system boost_thread glu avcodec avdevice avfilter avformat avresample avutil swscale swresample bzip2 -APP_MODULES := application sdl-1.2 sdl_main stlport jpeg png ogg flac vorbis freetype tremor ogg +APP_MODULES := application sdl-1.2 sdl_main sdl_native_helpers jpeg png ogg flac vorbis freetype tremor ogg # To filter out static libs from all libs in makefile APP_AVAILABLE_STATIC_LIBS := jpeg png tremor freetype xerces ogg tremor vorbis flac boost_date_time boost_filesystem boost_iostreams boost_program_options boost_regex boost_signals boost_system boost_thread glu diff --git a/project/jni/application/commandergenius/commandergenius b/project/jni/application/commandergenius/commandergenius index 5b13939a9..1bcbadd1e 160000 --- a/project/jni/application/commandergenius/commandergenius +++ b/project/jni/application/commandergenius/commandergenius @@ -1 +1 @@ -Subproject commit 5b13939a9f047ad7878825a4dfb19b439d69fa6b +Subproject commit 1bcbadd1eadd735235288463239c348f5b58f845 diff --git a/project/jni/application/openarena/engine b/project/jni/application/openarena/engine index 030eabf95..07c011b6c 160000 --- a/project/jni/application/openarena/engine +++ b/project/jni/application/openarena/engine @@ -1 +1 @@ -Subproject commit 030eabf95ab5815f471fae2d39bb2cc82f38da50 +Subproject commit 07c011b6ccb275fc2b69dbd6e7ee8dba6223e59a diff --git a/project/jni/application/openarena/vm b/project/jni/application/openarena/vm index 278f04520..4b83db91a 160000 --- a/project/jni/application/openarena/vm +++ b/project/jni/application/openarena/vm @@ -1 +1 @@ -Subproject commit 278f045202ff1bc0c1911b6c3d441909ba93ee87 +Subproject commit 4b83db91ab39b9cae27f087fe1a0a8ba9f30d43d diff --git a/project/jni/application/teeworlds/src b/project/jni/application/teeworlds/src index e5489c8c0..34b64249c 160000 --- a/project/jni/application/teeworlds/src +++ b/project/jni/application/teeworlds/src @@ -1 +1 @@ -Subproject commit e5489c8c089e57d88bbaa90df0176d5e5d4c6351 +Subproject commit 34b64249c46a90ce127f32b3ef41a565b8a70a61 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 dc078a8f2..3c4726e0b 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 @@ -432,34 +432,8 @@ int SDLCALL SDL_ANDROID_RequestNewAdvertisement(void) return 1; } - -/* -JNIEXPORT void JNICALL -JAVA_EXPORT_NAME(Settings_nativeSetEnv) ( JNIEnv* env, jobject thiz, jstring j_name, jstring j_value ) +// Dummy callback for SDL2 to satisfy linker +extern void SDL_Android_Init(JNIEnv* env, jclass cls); +void SDL_Android_Init(JNIEnv* env, jclass cls) { - jboolean iscopy; - const char *name = (*env)->GetStringUTFChars(env, j_name, &iscopy); - const char *value = (*env)->GetStringUTFChars(env, j_value, &iscopy); - setenv(name, value, 1); - (*env)->ReleaseStringUTFChars(env, j_name, name); - (*env)->ReleaseStringUTFChars(env, j_value, value); } - -JNIEXPORT jint JNICALL -JAVA_EXPORT_NAME(Settings_nativeChmod) ( JNIEnv* env, jobject thiz, jstring j_name, jint mode ) -{ - jboolean iscopy; - const char *name = (*env)->GetStringUTFChars(env, j_name, &iscopy); - int ret = chmod(name, mode); - (*env)->ReleaseStringUTFChars(env, j_name, name); - return (ret == 0); -} - -JNIEXPORT void JNICALL -JAVA_EXPORT_NAME(Settings_nativeChdir) ( JNIEnv* env, jobject thiz, jstring j_dir ) -{ - jboolean iscopy; - const char *dirname = (*env)->GetStringUTFChars(env, j_dir, &iscopy); - chdir(dirname); - (*env)->ReleaseStringUTFChars(env, j_dir, dirname); -}*/ diff --git a/project/jni/sdl_main/Android.mk b/project/jni/sdl_main/Android.mk index d87feb63f..c31d21623 100644 --- a/project/jni/sdl_main/Android.mk +++ b/project/jni/sdl_main/Android.mk @@ -13,7 +13,7 @@ LOCAL_CFLAGS := -DSDL_JAVA_PACKAGE_PATH=$(SDL_JAVA_PACKAGE_PATH) -DSDL_CURDIR_PA LOCAL_CPP_EXTENSION := .cpp -LOCAL_SRC_FILES := sdl_main.c SDL_android_main.cpp repoNatives.c +LOCAL_SRC_FILES := sdl_main.c SDL_android_main.cpp LOCAL_SHARED_LIBRARIES := sdl-$(SDL_VERSION) application LOCAL_LDLIBS := -llog diff --git a/project/jni/sdl_native_helpers/Android.mk b/project/jni/sdl_native_helpers/Android.mk new file mode 100644 index 000000000..3295ce839 --- /dev/null +++ b/project/jni/sdl_native_helpers/Android.mk @@ -0,0 +1,21 @@ +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_MODULE := sdl_native_helpers + +ifndef SDL_JAVA_PACKAGE_PATH +$(error Please define SDL_JAVA_PACKAGE_PATH to the path of your Java package with dots replaced with underscores, for example "com_example_SanAngeles") +endif + +LOCAL_C_INCLUDES := $(LOCAL_PATH)/../sdl-$(SDL_VERSION)/include +LOCAL_CFLAGS := -DSDL_JAVA_PACKAGE_PATH=$(SDL_JAVA_PACKAGE_PATH) -DSDL_CURDIR_PATH=\"$(SDL_CURDIR_PATH)\" + +LOCAL_CPP_EXTENSION := .cpp + +LOCAL_SRC_FILES := repoNatives.c + +LOCAL_SHARED_LIBRARIES := +LOCAL_LDLIBS := -llog + +include $(BUILD_SHARED_LIBRARY) diff --git a/project/jni/sdl_native_helpers/jniwrapperstuff.h b/project/jni/sdl_native_helpers/jniwrapperstuff.h new file mode 100644 index 000000000..6a37980aa --- /dev/null +++ b/project/jni/sdl_native_helpers/jniwrapperstuff.h @@ -0,0 +1,13 @@ + +/* JNI-C++ wrapper stuff */ +#ifndef _JNI_WRAPPER_STUFF_H_ +#define _JNI_WRAPPER_STUFF_H_ + +#ifndef SDL_JAVA_PACKAGE_PATH +#error You have to define SDL_JAVA_PACKAGE_PATH to your package path with dots replaced with underscores, for example "com_example_SanAngeles" +#endif +#define JAVA_EXPORT_NAME2(name,package) Java_##package##_##name +#define JAVA_EXPORT_NAME1(name,package) JAVA_EXPORT_NAME2(name,package) +#define JAVA_EXPORT_NAME(name) JAVA_EXPORT_NAME1(name,SDL_JAVA_PACKAGE_PATH) + +#endif diff --git a/project/jni/sdl_main/repoNatives.c b/project/jni/sdl_native_helpers/repoNatives.c similarity index 76% rename from project/jni/sdl_main/repoNatives.c rename to project/jni/sdl_native_helpers/repoNatives.c index 39515236b..aa38aff84 100644 --- a/project/jni/sdl_main/repoNatives.c +++ b/project/jni/sdl_native_helpers/repoNatives.c @@ -1,27 +1,11 @@ #include #include -//#include -//#include #include #include #include #include #include // for memset() -/*#include "SDL_config.h" -#include "SDL_version.h" - -#include "SDL_video.h" -#include "SDL_mouse.h" -#include "SDL_mutex.h" -#include "SDL_thread.h" -#include "SDL_android.h" -#include "../SDL_sysvideo.h" -#include "../SDL_pixels_c.h" -#include "../../events/SDL_events_c.h" - -#include "../SDL_sysvideo.h" -#include "SDL_androidvideo.h"*/ #include "jniwrapperstuff.h"