From 9f844a3d0c58367e9e5011b05053a4ba74188ece Mon Sep 17 00:00:00 2001 From: "zhou.weiguo" Date: Wed, 17 Apr 2024 17:12:40 +0800 Subject: [PATCH 1/4] log: refine log function for Android --- llama.cpp | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/llama.cpp b/llama.cpp index f4f4063cf6062..c94d01f18c177 100644 --- a/llama.cpp +++ b/llama.cpp @@ -94,6 +94,9 @@ #pragma warning(disable: 4244 4267) // possible loss of data #endif +#if (defined __ANDROID__) || (defined ANDROID) +#define LLAMA_ATTRIBUTE_FORMAT(...) +#else #ifdef __GNUC__ #ifdef __MINGW32__ #define LLAMA_ATTRIBUTE_FORMAT(...) __attribute__((format(gnu_printf, __VA_ARGS__))) @@ -103,6 +106,7 @@ #else #define LLAMA_ATTRIBUTE_FORMAT(...) #endif +#endif #define LLAMA_MAX_NODES 8192 #define LLAMA_MAX_EXPERTS 60 @@ -111,14 +115,18 @@ // // logging // +#if (defined __ANDROID__) || (defined ANDROID) +extern "C" int __android_log_print(int prio, const char * tag, const char * fmt, ...) + __attribute__((__format__(printf, 3, 4))); +#endif -LLAMA_ATTRIBUTE_FORMAT(2, 3) -static void llama_log_internal (ggml_log_level level, const char* format, ...); +LLAMA_ATTRIBUTE_FORMAT(5, 6) +static void llama_log_internal (ggml_log_level level, const char * file, const char * func, int line, const char * format, ...); static void llama_log_callback_default(ggml_log_level level, const char * text, void * user_data); -#define LLAMA_LOG_INFO(...) llama_log_internal(GGML_LOG_LEVEL_INFO , __VA_ARGS__) -#define LLAMA_LOG_WARN(...) llama_log_internal(GGML_LOG_LEVEL_WARN , __VA_ARGS__) -#define LLAMA_LOG_ERROR(...) llama_log_internal(GGML_LOG_LEVEL_ERROR, __VA_ARGS__) +#define LLAMA_LOG_INFO(...) llama_log_internal(GGML_LOG_LEVEL_INFO , __FILE__, __FUNCTION__, __LINE__, __VA_ARGS__) +#define LLAMA_LOG_WARN(...) llama_log_internal(GGML_LOG_LEVEL_WARN , __FILE__, __FUNCTION__, __LINE__, __VA_ARGS__) +#define LLAMA_LOG_ERROR(...) llama_log_internal(GGML_LOG_LEVEL_ERROR, __FILE__, __FUNCTION__, __LINE__, __VA_ARGS__) // // helpers @@ -17136,12 +17144,16 @@ void llama_log_set(ggml_log_callback log_callback, void * user_data) { #endif } -static void llama_log_internal_v(ggml_log_level level, const char * format, va_list args) { +static void llama_log_internal_v(ggml_log_level level, const char * file, const char * func, int line, const char * format, va_list args) { va_list args_copy; va_copy(args_copy, args); - char buffer[128]; - int len = vsnprintf(buffer, 128, format, args); - if (len < 128) { + char buffer[1024]; + int len_prefix = snprintf(buffer, 1024, "[%s, %d]: ", func, line); // param file not used in this file + int len = vsnprintf(buffer + len_prefix, 1024 - len, format, args); + if (len < (1024 - len_prefix)) { +#if (defined __ANDROID__) || (defined ANDROID) + __android_log_print(level, "llama.cpp", "%s", buffer); +#endif g_state.log_callback(level, buffer, g_state.log_callback_user_data); } else { char* buffer2 = new char[len+1]; From 8b11ef14260a102e51a4bc43a7d1be317e81bdb5 Mon Sep 17 00:00:00 2001 From: "zhou.weiguo" Date: Wed, 17 Apr 2024 17:23:39 +0800 Subject: [PATCH 2/4] fix build issue which reported by github CI system --- llama.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/llama.cpp b/llama.cpp index c94d01f18c177..360a8cf358792 100644 --- a/llama.cpp +++ b/llama.cpp @@ -17165,10 +17165,10 @@ static void llama_log_internal_v(ggml_log_level level, const char * file, const va_end(args_copy); } -static void llama_log_internal(ggml_log_level level, const char * format, ...) { +static void llama_log_internal(ggml_log_level level, const char * file, const char * func, int line, const char * format, ...) { va_list args; va_start(args, format); - llama_log_internal_v(level, format, args); + llama_log_internal_v(level, file, func, line, format, args); va_end(args); } From 6a8e2ddcec68886179dfe9bf3ece8e95fbf99758 Mon Sep 17 00:00:00 2001 From: "zhou.weiguo" Date: Wed, 17 Apr 2024 17:30:05 +0800 Subject: [PATCH 3/4] fix build issue which reported by github CI system --- llama.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llama.cpp b/llama.cpp index 360a8cf358792..a57fc709d02f4 100644 --- a/llama.cpp +++ b/llama.cpp @@ -17149,7 +17149,7 @@ static void llama_log_internal_v(ggml_log_level level, const char * file, const va_copy(args_copy, args); char buffer[1024]; int len_prefix = snprintf(buffer, 1024, "[%s, %d]: ", func, line); // param file not used in this file - int len = vsnprintf(buffer + len_prefix, 1024 - len, format, args); + int len = vsnprintf(buffer + len_prefix, 1024 - len_prefix, format, args); if (len < (1024 - len_prefix)) { #if (defined __ANDROID__) || (defined ANDROID) __android_log_print(level, "llama.cpp", "%s", buffer); From 8d4e096b09a9e124b8844456b3909200feb34cf7 Mon Sep 17 00:00:00 2001 From: "zhou.weiguo" Date: Wed, 17 Apr 2024 17:52:50 +0800 Subject: [PATCH 4/4] fix build issue which reported by github CI system --- llama.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/llama.cpp b/llama.cpp index a57fc709d02f4..a620fe53e05f6 100644 --- a/llama.cpp +++ b/llama.cpp @@ -17148,6 +17148,9 @@ static void llama_log_internal_v(ggml_log_level level, const char * file, const va_list args_copy; va_copy(args_copy, args); char buffer[1024]; + + GGML_UNUSED(file); + int len_prefix = snprintf(buffer, 1024, "[%s, %d]: ", func, line); // param file not used in this file int len = vsnprintf(buffer + len_prefix, 1024 - len_prefix, format, args); if (len < (1024 - len_prefix)) {