diff --git a/python/src/main.cpp b/python/src/main.cpp index 3f3f19d10..850a15a56 100644 --- a/python/src/main.cpp +++ b/python/src/main.cpp @@ -10,7 +10,7 @@ namespace py = pybind11; // used in Core.hpp -py::object kp_debug, kp_info, kp_warning, kp_error; +py::object kp_trace, kp_debug, kp_info, kp_warning, kp_error; std::unique_ptr opAlgoDispatchPyInit(std::shared_ptr& algorithm, @@ -53,6 +53,7 @@ PYBIND11_MODULE(kp, m) // The logging modules are used in the Kompute.hpp file py::module_ logging = py::module_::import("logging"); py::object kp_logger = logging.attr("getLogger")("kp"); + kp_trace = kp_logger.attr("trace"); kp_debug = kp_logger.attr("debug"); kp_info = kp_logger.attr("info"); kp_warning = kp_logger.attr("warning"); @@ -548,6 +549,7 @@ PYBIND11_MODULE(kp, m) auto atexit = py::module_::import("atexit"); atexit.attr("register")(py::cpp_function([]() { + kp_trace = py::none(); kp_debug = py::none(); kp_info = py::none(); kp_warning = py::none(); diff --git a/src/include/kompute/Core.hpp b/src/include/kompute/Core.hpp index 65936460d..307228d55 100644 --- a/src/include/kompute/Core.hpp +++ b/src/include/kompute/Core.hpp @@ -32,5 +32,5 @@ typedef std::vector Constants; #include namespace py = pybind11; // from python/src/main.cpp -extern py::object kp_debug, kp_info, kp_warning, kp_error; +extern py::object kp_trace, kp_debug, kp_info, kp_warning, kp_error; #endif diff --git a/src/include/kompute/logger/Logger.hpp b/src/include/kompute/logger/Logger.hpp index 43f119471..79b88a1bd 100644 --- a/src/include/kompute/logger/Logger.hpp +++ b/src/include/kompute/logger/Logger.hpp @@ -18,7 +18,22 @@ #else #if !KOMPUTE_OPT_USE_SPDLOG +#if VK_USE_PLATFORM_ANDROID_KHR +#include +#include +// VK_NO_PROTOTYPES required before vulkan import but after wrapper.hpp +#undef VK_NO_PROTOTYPES +static const char* KOMPUTE_LOG_TAG = "KomputeLog"; +#else +#if KOMPUTE_BUILD_PYTHON +#include +namespace py = pybind11; +// from python/src/main.cpp +extern py::object kp_trace, kp_debug, kp_info, kp_warning, kp_error; +#else #include +#endif // KOMPUTE_BUILD_PYTHON +#endif // VK_USE_PLATFORM_ANDROID_KHR #else #include #endif // !KOMPUTE_OPT_USE_SPDLOG @@ -37,6 +52,14 @@ setupLogger(); #ifndef KP_LOG_TRACE #if KOMPUTE_OPT_LOG_LEVEL <= KOMPUTE_LOG_LEVEL_TRACE +#if VK_USE_PLATFORM_ANDROID_KHR +#define KP_LOG_TRACE(...) \ + ((void)__android_log_write( \ + ANDROID_LOG_VERBOSE, KOMPUTE_LOG_TAG, fmt::format(__VA_ARGS__).c_str())) +#else +#if KOMPUTE_BUILD_PYTHON +#define KP_LOG_DEBUG(...) kp_trace(fmt::format(__VA_ARGS__)) +#else #define KP_LOG_TRACE(...) \ fmt::print("[{} {}] [trace] [{}:{}] {}\n", \ __DATE__, \ @@ -44,6 +67,8 @@ setupLogger(); __FILE__, \ __LINE__, \ fmt::format(__VA_ARGS__)) +#endif // KOMPUTE_BUILD_PYTHON +#endif // VK_USE_PLATFORM_ANDROID_KHR #else #define KP_LOG_TRACE(...) #endif @@ -51,6 +76,14 @@ setupLogger(); #ifndef KP_LOG_DEBUG #if KOMPUTE_OPT_LOG_LEVEL <= KOMPUTE_LOG_LEVEL_DEBUG +#if VK_USE_PLATFORM_ANDROID_KHR +#define KP_LOG_DEBUG(...) \ + ((void)__android_log_write( \ + ANDROID_LOG_DEBUG, KOMPUTE_LOG_TAG, fmt::format(__VA_ARGS__).c_str())) +#else +#if KOMPUTE_BUILD_PYTHON +#define KP_LOG_DEBUG(...) kp_debug(fmt::format(__VA_ARGS__)) +#else #define KP_LOG_DEBUG(...) \ fmt::print("[{} {}] [debug] [{}:{}] {}\n", \ __DATE__, \ @@ -58,6 +91,8 @@ setupLogger(); __FILE__, \ __LINE__, \ fmt::format(__VA_ARGS__)) +#endif // KOMPUTE_BUILD_PYTHON +#endif // VK_USE_PLATFORM_ANDROID_KHR #else #define KP_LOG_DEBUG(...) #endif @@ -65,6 +100,14 @@ setupLogger(); #ifndef KP_LOG_INFO #if KOMPUTE_OPT_LOG_LEVEL <= KOMPUTE_LOG_LEVEL_INFO +#if VK_USE_PLATFORM_ANDROID_KHR +#define KP_LOG_INFO(...) \ + ((void)__android_log_write( \ + ANDROID_LOG_INFO, KOMPUTE_LOG_TAG, fmt::format(__VA_ARGS__).c_str())) +#else +#if KOMPUTE_BUILD_PYTHON +#define KP_LOG_DEBUG(...) kp_info(fmt::format(__VA_ARGS__)) +#else #define KP_LOG_INFO(...) \ fmt::print("[{} {}] [info] [{}:{}] {}\n", \ __DATE__, \ @@ -72,6 +115,8 @@ setupLogger(); __FILE__, \ __LINE__, \ fmt::format(__VA_ARGS__)) +#endif // KOMPUTE_BUILD_PYTHON +#endif // VK_USE_PLATFORM_ANDROID_KHR #else #define KP_LOG_INFO(...) #endif @@ -79,6 +124,14 @@ setupLogger(); #ifndef KP_LOG_WARN #if KOMPUTE_OPT_LOG_LEVEL <= KOMPUTE_LOG_LEVEL_WARN +#if VK_USE_PLATFORM_ANDROID_KHR +#define KP_LOG_WARN(...) \ + ((void)__android_log_write( \ + ANDROID_LOG_WARN, KOMPUTE_LOG_TAG, fmt::format(__VA_ARGS__).c_str())) +#else +#if KOMPUTE_BUILD_PYTHON +#define KP_LOG_DEBUG(...) kp_warning(fmt::format(__VA_ARGS__)) +#else #define KP_LOG_WARN(...) \ fmt::print("[{} {}] [warn] [{}:{}] {}\n", \ __DATE__, \ @@ -86,6 +139,8 @@ setupLogger(); __FILE__, \ __LINE__, \ fmt::format(__VA_ARGS__)) +#endif // KOMPUTE_BUILD_PYTHON +#endif // VK_USE_PLATFORM_ANDROID_KHR #else #define KP_LOG_WARN(...) #endif @@ -93,6 +148,14 @@ setupLogger(); #ifndef KP_LOG_ERROR #if KOMPUTE_OPT_LOG_LEVEL <= KOMPUTE_LOG_LEVEL_ERROR +#if VK_USE_PLATFORM_ANDROID_KHR +#define KP_LOG_ERROR(...) \ + ((void)__android_log_write( \ + ANDROID_LOG_ERROR, KOMPUTE_LOG_TAG, fmt::format(__VA_ARGS__).c_str())) +#else +#if KOMPUTE_BUILD_PYTHON +#define KP_LOG_DEBUG(...) kp_error(fmt::format(__VA_ARGS__)) +#else #define KP_LOG_ERROR(...) \ fmt::print("[{} {}] [error] [{}:{}] {}\n", \ __DATE__, \ @@ -100,6 +163,8 @@ setupLogger(); __FILE__, \ __LINE__, \ fmt::format(__VA_ARGS__)) +#endif // KOMPUTE_BUILD_PYTHON +#endif // VK_USE_PLATFORM_ANDROID_KHR #else #define KP_LOG_ERROR(...) #endif diff --git a/src/logger/CMakeLists.txt b/src/logger/CMakeLists.txt index b73615a61..b4d2fea49 100644 --- a/src/logger/CMakeLists.txt +++ b/src/logger/CMakeLists.txt @@ -13,6 +13,14 @@ add_compile_definitions(KOMPUTE_LOG_LEVEL_ERROR=4) add_compile_definitions(KOMPUTE_LOG_LEVEL_CRITICAL=5) add_compile_definitions(KOMPUTE_LOG_LEVEL_OFF=6) +if(KOMPUTE_OPT_BUILD_PYTHON AND KOMPUTE_OPT_USE_SPDLOG) + message(FATAL_ERROR "'KOMPUTE_OPT_BUILD_PYTHON' is incompatible with 'KOMPUTE_OPT_USE_SPDLOG'. To continue set either one option to 'OFF'.") +endif() + +if(KOMPUTE_OPT_ANDROID_BUILD AND KOMPUTE_OPT_USE_SPDLOG) + message(FATAL_ERROR "'KOMPUTE_OPT_ANDROID_BUILD' is incompatible with 'KOMPUTE_OPT_USE_SPDLOG'. To continue set either one option to 'OFF'.") +endif() + if(${KOMPUTE_OPT_LOG_LEVEL} STREQUAL "Trace") set(KOMPUTE_OPT_LOG_LEVEL TRACE) message(STATUS "Using log level Trace")