From: Marcus Comstedt Date: Mon, 25 Aug 2014 18:00:02 +0000 (+0200) Subject: sigrok-cross-android: Use new repos for PV and androidutils X-Git-Url: https://sigrok.org/gitweb/?p=sigrok-util.git;a=commitdiff_plain;h=7d3d2c0cdc60b8e7c88a2a29289aa14d775af81d sigrok-cross-android: Use new repos for PV and androidutils --- diff --git a/cross-compile/android/pulseview-cpp.patch b/cross-compile/android/pulseview-cpp.patch deleted file mode 100644 index dd03e21..0000000 --- a/cross-compile/android/pulseview-cpp.patch +++ /dev/null @@ -1,175 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 3d63ecd..c386a60 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -333,12 +333,25 @@ if(WIN32) - list(APPEND PULSEVIEW_LINK_LIBS "-lqsvg") - endif() - -+if(ANDROID) -+ list(APPEND PULSEVIEW_LINK_LIBS "-llog") -+endif() -+ -+if(ANDROID) -+add_library(${PROJECT_NAME} SHARED -+ ${pulseview_SOURCES} -+ ${pulseview_HEADERS_MOC} -+ ${pulseview_FORMS_HEADERS} -+ ${pulseview_RESOURCES_RCC} -+) -+else() - add_executable(${PROJECT_NAME} - ${pulseview_SOURCES} - ${pulseview_HEADERS_MOC} - ${pulseview_FORMS_HEADERS} - ${pulseview_RESOURCES_RCC} - ) -+endif() - - target_link_libraries(${PROJECT_NAME} ${PULSEVIEW_LINK_LIBS}) - -diff --git a/main.cpp b/main.cpp -index 23f3f62..ea5e5e1 100644 ---- a/main.cpp -+++ b/main.cpp -@@ -20,6 +20,13 @@ - - #ifdef ENABLE_DECODE - #include /* First, so we avoid a _POSIX_C_SOURCE warning. */ -+#ifdef ANDROID -+#include -+#endif -+#endif -+ -+#ifdef ANDROID -+#include - #endif - - #include -@@ -45,6 +52,112 @@ - Q_IMPORT_PLUGIN(qsvg) - #endif - -+#if defined(ENABLE_DECODE) && defined(ANDROID) -+jint JNI_OnLoad(JavaVM *vm, void *reserved) -+{ -+ JNIEnv* env; -+ -+ (void)reserved; -+ -+ if (vm->GetEnv((void **)&env, JNI_VERSION_1_6) != JNI_OK) { -+ return -1; -+ } -+ -+ jclass envc = env->FindClass("org/sigrok/androidutils/Environment"); -+ jmethodID getEnv = env->GetStaticMethodID(envc, "getEnvironment", -+ "()[Ljava/lang/String;"); -+ jobjectArray envs = -+ (jobjectArray)env->CallStaticObjectMethod(envc, getEnv); -+ jsize i, envn = env->GetArrayLength(envs); -+ for (i=0; iGetObjectArrayElement(envs, i); -+ jstring value = (jstring)env->GetObjectArrayElement(envs, i+1); -+ const char *utfkey = env->GetStringUTFChars(key, 0); -+ const char *utfvalue = env->GetStringUTFChars(value, 0); -+ setenv(utfkey, utfvalue, 1); -+ env->ReleaseStringUTFChars(value, utfvalue); -+ env->ReleaseStringUTFChars(key, utfkey); -+ env->DeleteLocalRef(value); -+ env->DeleteLocalRef(key); -+ } -+ env->DeleteLocalRef(envs); -+ env->DeleteLocalRef(envc); -+ -+ return JNI_VERSION_1_6; -+} -+ -+void JNI_OnUnload(JavaVM *vm, void *reserved) -+{ -+ (void)vm; -+ (void)reserved; -+} -+#endif -+ -+#ifdef ANDROID -+extern "C" { -+static int sr_log_callback_android(void *cb_data, int loglevel, const char *format, va_list args) -+{ -+ static const int prio[] = { -+ [SR_LOG_NONE] = ANDROID_LOG_SILENT, -+ [SR_LOG_ERR] = ANDROID_LOG_ERROR, -+ [SR_LOG_WARN] = ANDROID_LOG_WARN, -+ [SR_LOG_INFO] = ANDROID_LOG_INFO, -+ [SR_LOG_DBG] = ANDROID_LOG_DEBUG, -+ [SR_LOG_SPEW] = ANDROID_LOG_VERBOSE, -+ }; -+ int ret; -+ -+ /* This specific log callback doesn't need the void pointer data. */ -+ (void)cb_data; -+ -+ /* Only output messages of at least the selected loglevel(s). */ -+ if (loglevel > sr_log_loglevel_get()) -+ return SR_OK; /* TODO? */ -+ -+ if (loglevel < SR_LOG_NONE) -+ loglevel = SR_LOG_NONE; -+ else if (loglevel > SR_LOG_SPEW) -+ loglevel = SR_LOG_SPEW; -+ -+ ret = __android_log_vprint(prio[loglevel], "sr", format, args); -+ -+ return ret; -+} -+ -+#ifdef ENABLE_DECODE -+static int srd_log_callback_android(void *cb_data, int loglevel, const char *format, -+ va_list args) -+{ -+ static const int prio[] = { -+ [SRD_LOG_NONE] = ANDROID_LOG_SILENT, -+ [SRD_LOG_ERR] = ANDROID_LOG_ERROR, -+ [SRD_LOG_WARN] = ANDROID_LOG_WARN, -+ [SRD_LOG_INFO] = ANDROID_LOG_INFO, -+ [SRD_LOG_DBG] = ANDROID_LOG_DEBUG, -+ [SRD_LOG_SPEW] = ANDROID_LOG_VERBOSE, -+ }; -+ int ret; -+ -+ /* This specific log callback doesn't need the void pointer data. */ -+ (void)cb_data; -+ -+ /* Only output messages of at least the selected loglevel(s). */ -+ if (loglevel > srd_log_loglevel_get()) -+ return SRD_OK; /* TODO? */ -+ -+ if (loglevel < SRD_LOG_NONE) -+ loglevel = SRD_LOG_NONE; -+ else if (loglevel > SRD_LOG_SPEW) -+ loglevel = SRD_LOG_SPEW; -+ -+ ret = __android_log_vprint(prio[loglevel], "srd", format, args); -+ -+ return ret; -+} -+#endif -+} -+#endif -+ - void usage() - { - fprintf(stdout, -@@ -71,6 +184,13 @@ int main(int argc, char *argv[]) - QApplication::setApplicationName("PulseView"); - QApplication::setOrganizationDomain("sigrok.org"); - -+#ifdef ANDROID -+ sr_log_callback_set(sr_log_callback_android, NULL); -+#ifdef ENABLE_DECODE -+ srd_log_callback_set(srd_log_callback_android, NULL); -+#endif -+#endif -+ - // Parse arguments - while (1) { - static const struct option long_options[] = { diff --git a/cross-compile/android/sigrok-cross-android b/cross-compile/android/sigrok-cross-android index 538b690..93b3871 100755 --- a/cross-compile/android/sigrok-cross-android +++ b/cross-compile/android/sigrok-cross-android @@ -311,13 +311,21 @@ make $PARALLEL make install cd .. +# sigrok-androidutils +$GIT_CLONE git://github.com/zeldin/sigrok-androidutils +cd sigrok-androidutils +./autogen.sh +./configure $C --with-android-sdk="${ANDROID_SDK}" +make +make install +cd .. + # PulseView -$GIT_CLONE git://sigrok.org/pulseview +$GIT_CLONE -b android git://github.com/zeldin/pulseview +# $GIT_CLONE git://sigrok.org/pulseview cd pulseview -patch -p1 < ../../pulseview-cpp.patch cmake $CM -DANDROID_STL_PATH=${ANDROID_NDK}/sources/cxx-stl . make $PARALLEL -git clone https://github.com/zeldin/pulseview_android_java android cd android "$ANDROID_TOOLS/android" update project -p . -t android-14 -n PulseView ant debug