From d21e4dacf7341b924fa534523ba31348ff6789ad Mon Sep 17 00:00:00 2001 From: faketruth Date: Wed, 15 Aug 2012 21:24:11 +0000 Subject: Compiles on Android! Added Eclipse project, import it into your workspace and it should be runnable on Android! Disabled Squirrel for Android cLog now logs to Android LogCat as well Fixed Lua so it compiles on Android Removed/commented out exceptions in JsonCpp so it compiles on Android git-svn-id: http://mc-server.googlecode.com/svn/trunk@741 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- jni/Android.mk | 44 +++++++++++++++++++++++++++ jni/Application.mk | 4 +++ jni/app-android.cpp | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 135 insertions(+) create mode 100644 jni/Android.mk create mode 100644 jni/Application.mk create mode 100644 jni/app-android.cpp (limited to 'jni') diff --git a/jni/Android.mk b/jni/Android.mk new file mode 100644 index 000000000..b55990005 --- /dev/null +++ b/jni/Android.mk @@ -0,0 +1,44 @@ +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) +LOCAL_MODULE := mcserver + + + +LOCAL_SRC_FILES := $(shell find lua-5.1.4 jsoncpp-src-0.5.0 zlib-1.2.7 source squirrel_3_0_1_stable tolua++-1.0.93 iniFile WebServer '(' -name '*.cpp' -o -name '*.c' ')') +LOCAL_SRC_FILES := $(filter-out %SquirrelFunctions.cpp %SquirrelBindings.cpp %cPlugin_Squirrel.cpp %cSquirrelCommandBinder.cpp %minigzip.c %lua.c %tolua.c %toluabind.c %LeakFinder.cpp %StackWalker.cpp %example.c,$(LOCAL_SRC_FILES)) +LOCAL_SRC_FILES := $(patsubst %.cpp,../%.cpp,$(LOCAL_SRC_FILES)) +LOCAL_SRC_FILES := $(patsubst %.c,../%.c,$(LOCAL_SRC_FILES)) +LOCAL_SRC_FILES += app-android.cpp + +LOCAL_CFLAGS := -DANDROID_NDK \ + -ffast-math \ + -O3 \ + -funroll-loops \ + -mfloat-abi=softfp -mfpu=neon \ + + +LOCAL_STATIC_LIBRARIES := cpufeatures + +LOCAL_C_INCLUDES := ./source \ + ./source/md5 \ + ./WebServer \ + ./source/packets \ + ./source/items \ + ./source/blocks \ + ./tolua++-1.0.93/src/lib \ + ./lua-5.1.4/src \ + ./zlib-1.2.7 \ + ./iniFile \ + ./tolua++-1.0.93/include \ + ./jsoncpp-src-0.5.0/include \ + ./jsoncpp-src-0.5.0/src/lib_json \ + ./squirrel_3_0_1_stable/include \ + ./squirrel_3_0_1_stable \ + ./squirrel_3_0_1_stable/sqrat \ + + +LOCAL_LDLIBS := -ldl -llog + +include $(BUILD_SHARED_LIBRARY) +$(call import-module,cpufeatures) diff --git a/jni/Application.mk b/jni/Application.mk new file mode 100644 index 000000000..c68dfe204 --- /dev/null +++ b/jni/Application.mk @@ -0,0 +1,4 @@ +# Build both ARMv5TE and ARMv7-A machine code. +APP_MODULES := mcserver +# APP_ABI := armeabi armeabi-v7a +APP_STL := stlport_static \ No newline at end of file diff --git a/jni/app-android.cpp b/jni/app-android.cpp new file mode 100644 index 000000000..d874f0fb0 --- /dev/null +++ b/jni/app-android.cpp @@ -0,0 +1,87 @@ +#include "Globals.h" + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "cCriticalSection.h" +#include "cRoot.h" + +#include + +cCriticalSection g_CriticalSection; + +JNIEnv* g_CurrentJNIEnv = 0; +jobject g_JavaRenderer = 0; + +/* Called when program/activity is created */ +extern "C" void Java_com_mcserver_MainThread_NativeOnCreate( JNIEnv* env ) +{ + g_CriticalSection.Lock(); + g_CurrentJNIEnv = env; + //if( !cLogger::GetSingletonPtr() ) new cLogger(); + __android_log_print(ANDROID_LOG_ERROR,"Arashi", "%s", "Logging from C++!"); + g_CriticalSection.Unlock(); + + cRoot Root; + Root.Start(); +} + +extern "C" void Java_com_mcserver_MCServerActivity_NativeCleanUp( JNIEnv* env ) +{ + g_CriticalSection.Lock(); + g_CurrentJNIEnv = env; + + g_CriticalSection.Unlock(); +} + +/* Call to initialize the graphics state */ +extern "C" void Java_com_ballz_CppWrapperRenderer_NativeInitGL( JNIEnv* env, jobject thiz ) +{ + g_CriticalSection.Lock(); + g_CurrentJNIEnv = env; + g_JavaRenderer = thiz; + + g_CriticalSection.Unlock(); +} + +extern "C" void Java_com_ballz_CppWrapperRenderer_NativeResize( JNIEnv* env, jobject thiz, jint w, jint h ) +{ + g_CriticalSection.Lock(); + g_CurrentJNIEnv = env; + g_JavaRenderer = thiz; + + g_CriticalSection.Unlock(); +} + +extern "C" void Java_com_ballz_CppWrapperRenderer_NativeRender( JNIEnv* env, jobject thiz ) +{ + g_CriticalSection.Lock(); + g_CurrentJNIEnv = env; + g_JavaRenderer = thiz; + + + g_CriticalSection.Unlock(); +} + +extern "C" void Java_com_ballz_CppWrapperGLSurfaceView_NativeTouchScreen( JNIEnv* env, jobject thiz, jint mouseid, jint touched ) +{ + g_CriticalSection.Lock(); + g_CurrentJNIEnv = env; + + g_CriticalSection.Unlock(); +} + +extern "C" void Java_com_ballz_CppWrapperGLSurfaceView_NativeTouchEvent( JNIEnv* env, jobject thiz, jint mouseid, jfloat x, jfloat y ) +{ + g_CriticalSection.Lock(); + g_CurrentJNIEnv = env; + + g_CriticalSection.Unlock(); +} \ No newline at end of file -- cgit v1.2.3