diff --git a/.gitmodules b/.gitmodules index 108a5773e..eeb2b007d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -18,3 +18,7 @@ path = external/glslang url = https://github.com/KhronosGroup/glslang/ branch = 11.1.0 +[submodule "external/fmt"] + path = external/fmt + url = https://github.com/fmtlib/fmt + branch = 7.1.3 diff --git a/CMakeLists.txt b/CMakeLists.txt index 4f35414a6..480ec445f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,10 +27,16 @@ if(KOMPUTE_OPT_ENABLE_SPDLOG) set(KOMPUTE_EXTRA_CXX_FLAGS "${KOMPUTE_EXTRA_CXX_FLAGS} -DKOMPUTE_ENABLE_SPDLOG=1") if(KOMPUTE_OPT_INSTALL) # Enable install parameters for spdlog (overrides parameters passed) - set(SPDLOG_INSTALL ON CACHE BOOL "Enables install of glslang" FORCE) + set(SPDLOG_INSTALL ON CACHE BOOL "Enables install of spdlot" FORCE) + set(SPDLOG_FMT_EXTERNAL ON CACHE BOOL "Enables external fmt as its current dep" FORCE) endif() endif() +if(KOMPUTE_OPT_INSTALL) + # Enable install parameters for fmt (overrides parameters passed) + set(FMT_INSTALL ON CACHE BOOL "Enables install of fmt" FORCE) +endif() + if(KOMPUTE_OPT_ANDOID_BUILD) set(KOMPUTE_EXTRA_CXX_FLAGS "${KOMPUTE_EXTRA_CXX_FLAGS} -DVK_USE_PLATFORM_ANDROID_KHR") endif() diff --git a/Makefile b/Makefile index 8f39a254a..76a896fee 100644 --- a/Makefile +++ b/Makefile @@ -67,7 +67,7 @@ mk_cmake: -DKOMPUTE_OPT_BUILD_DOCS=1 \ -DKOMPUTE_OPT_BUILD_SHADERS=1 \ -DKOMPUTE_OPT_BUILD_SINGLE_HEADER=1 \ - -DKOMPUTE_OPT_ENABLE_SPDLOG=1 \ + -DKOMPUTE_OPT_ENABLE_SPDLOG=0 \ -DKOMPUTE_OPT_CODE_COVERAGE=1 \ -G "Unix Makefiles" diff --git a/external/fmt b/external/fmt new file mode 160000 index 000000000..7bdf0628b --- /dev/null +++ b/external/fmt @@ -0,0 +1 @@ +Subproject commit 7bdf0628b1276379886c7f6dda2cef2b3b374f0b diff --git a/single_include/kompute/Kompute.hpp b/single_include/kompute/Kompute.hpp index 3aaeb0409..b33101cd1 100755 --- a/single_include/kompute/Kompute.hpp +++ b/single_include/kompute/Kompute.hpp @@ -1,6 +1,6 @@ #pragma once -#ifdef VK_USE_PLATFORM_ANDROID_KHR +#if VK_USE_PLATFORM_ANDROID_KHR #include #include // VK_NO_PROTOTYPES required before vulkan import but after wrapper.hpp @@ -8,6 +8,8 @@ static const char* KOMPUTE_LOG_TAG = "KomputeLog"; #endif +#include + #include // Typedefs to simplify interaction with core types @@ -51,57 +53,54 @@ extern py::object kp_debug, kp_info, kp_warning, kp_error; #else #include #if SPDLOG_ACTIVE_LEVEL > 1 -#define SPDLOG_DEBUG(message, ...) +#define SPDLOG_DEBUG(...) #else #if defined(VK_USE_PLATFORM_ANDROID_KHR) -#define SPDLOG_DEBUG(message, ...) \ - ((void)__android_log_print(ANDROID_LOG_DEBUG, KOMPUTE_LOG_TAG, message)) +#define SPDLOG_DEBUG(...) \ + ((void)__android_log_print(ANDROID_LOG_DEBUG, KOMPUTE_LOG_TAG, fmt::format(__VA_ARGS__))) #elif defined(KOMPUTE_BUILD_PYTHON) -#define SPDLOG_DEBUG(message, ...) kp_debug(message); +#define SPDLOG_DEBUG(...) kp_debug(fmt::format(__VA_ARGS__)) #else -#define SPDLOG_DEBUG(message, ...) \ - std::cout << "DEBUG: " << message << std::endl +#define SPDLOG_DEBUG(...) fmt::print("[{} {}] [debug] [{}:{}] {}\n", __DATE__, __TIME__, __FILE__, __LINE__, fmt::format(__VA_ARGS__)) #endif // VK_USE_PLATFORM_ANDROID_KHR #endif // SPDLOG_ACTIVE_LEVEL > 1 #if SPDLOG_ACTIVE_LEVEL > 2 -#define SPDLOG_INFO(message, ...) +#define SPDLOG_INFO(...) #else #if defined(VK_USE_PLATFORM_ANDROID_KHR) -#define SPDLOG_INFO(message, ...) \ - ((void)__android_log_print(ANDROID_LOG_INFO, KOMPUTE_LOG_TAG, message)) +#define SPDLOG_INFO(...) \ + ((void)__android_log_print(ANDROID_LOG_INFO, KOMPUTE_LOG_TAG, fmt::format(__VA_ARGS__))) #elif defined(KOMPUTE_BUILD_PYTHON) -#define SPDLOG_INFO(message, ...) kp_info(message); +#define SPDLOG_INFO(...) kp_info(fmt::format(__VA_ARGS__)) #else -#define SPDLOG_INFO(message, ...) std::cout << "INFO: " << message << std::endl +#define SPDLOG_INFO(...) fmt::print("[{} {}] [debug] [{}:{}] {}\n", __DATE__, __TIME__, __FILE__, __LINE__, fmt::format(__VA_ARGS__)) #endif // VK_USE_PLATFORM_ANDROID_KHR #endif // SPDLOG_ACTIVE_LEVEL > 2 #if SPDLOG_ACTIVE_LEVEL > 3 -#define SPDLOG_WARN(message, ...) +#define SPDLOG_WARN(...) #else #if defined(VK_USE_PLATFORM_ANDROID_KHR) -#define SPDLOG_WARN(message, ...) \ - ((void)__android_log_print(ANDROID_LOG_INFO, KOMPUTE_LOG_TAG, message)) +#define SPDLOG_WARN(...) \ + ((void)__android_log_print(ANDROID_LOG_WARN, KOMPUTE_LOG_TAG, fmt::format(__VA_ARGS__))) #elif defined(KOMPUTE_BUILD_PYTHON) -#define SPDLOG_WARN(message, ...) kp_warning(message); +#define SPDLOG_WARN(...) kp_warning(fmt::format(__VA_ARGS__)) #else -#define SPDLOG_WARN(message, ...) \ - std::cout << "WARNING: " << message << std::endl +#define SPDLOG_WARN(...) fmt::print("[{} {}] [debug] [{}:{}] {}\n", __DATE__, __TIME__, __FILE__, __LINE__, fmt::format(__VA_ARGS__)) #endif // VK_USE_PLATFORM_ANDROID_KHR #endif // SPDLOG_ACTIVE_LEVEL > 3 #if SPDLOG_ACTIVE_LEVEL > 4 -#define SPDLOG_ERROR(message, ...) +#define SPDLOG_ERROR(...) #else #if defined(VK_USE_PLATFORM_ANDROID_KHR) -#define SPDLOG_ERROR(message, ...) \ - ((void)__android_log_print(ANDROID_LOG_INFO, KOMPUTE_LOG_TAG, message)) +#define SPDLOG_ERROR(...) \ + ((void)__android_log_print(ANDROID_LOG_ERROR, KOMPUTE_LOG_TAG, fmt::format(__VA_ARGS__))) #elif defined(KOMPUTE_BUILD_PYTHON) -#define SPDLOG_ERROR(message, ...) kp_error(message); +#define SPDLOG_ERROR(...) kp_error(fmt::format(__VA_ARGS__)) #else -#define SPDLOG_ERROR(message, ...) \ - std::cout << "ERROR: " << message << std::endl +#define SPDLOG_ERROR(...) fmt::print("[{} {}] [debug] [{}:{}] {}\n", __DATE__, __TIME__, __FILE__, __LINE__, fmt::format(__VA_ARGS__)) #endif // VK_USE_PLATFORM_ANDROID_KHR #endif // SPDLOG_ACTIVE_LEVEL > 4 #endif // KOMPUTE_SPDLOG_ENABLED diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b3cbad3a3..dc36d722c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,13 +1,4 @@ -if(KOMPUTE_OPT_ENABLE_SPDLOG) - if(KOMPUTE_OPT_REPO_SUBMODULE_BUILD) - set(SPDLOG_INSTALL ON) - add_subdirectory(${PROJECT_SOURCE_DIR}/external/spdlog ${CMAKE_CURRENT_BINARY_DIR}/kompute_spdlog) - else() - find_package(spdlog REQUIRED) - endif() -endif() - if(KOMPUTE_OPT_ANDOID_BUILD) find_library(android android) endif() @@ -79,13 +70,42 @@ if(KOMPUTE_OPT_REPO_SUBMODULE_BUILD) $) endif() +##################################################### +#################### fmt ####################### +##################################################### + +if(KOMPUTE_OPT_REPO_SUBMODULE_BUILD) + add_subdirectory(${PROJECT_SOURCE_DIR}/external/fmt ${CMAKE_CURRENT_BINARY_DIR}/kompute_fmt) +else() + find_package(fmt REQUIRED) +endif() + +target_link_libraries( + kompute + fmt::fmt +) + +##################################################### +#################### SPDLOG ####################### +##################################################### + if(KOMPUTE_OPT_ENABLE_SPDLOG) + if(KOMPUTE_OPT_REPO_SUBMODULE_BUILD) + add_subdirectory(${PROJECT_SOURCE_DIR}/external/spdlog ${CMAKE_CURRENT_BINARY_DIR}/kompute_spdlog) + else() + find_package(spdlog REQUIRED) + endif() + target_link_libraries( kompute spdlog::spdlog ) endif() +##################################################### +#################### Android ####################### +##################################################### + if(KOMPUTE_OPT_ANDOID_BUILD) target_link_libraries( kompute @@ -95,11 +115,19 @@ if(KOMPUTE_OPT_ANDOID_BUILD) ) endif() +##################################################### +########## Built C++ Header SHADERS ################# +##################################################### + if(KOMPUTE_OPT_BUILD_SHADERS) add_dependencies(kompute build_shaders) endif() +##################################################### +#################### Single Header ####################### +##################################################### + if(KOMPUTE_OPT_BUILD_SINGLE_HEADER) add_dependencies(kompute build_single_header) diff --git a/src/include/kompute/Core.hpp b/src/include/kompute/Core.hpp index 9550d387b..c3ec7b9c6 100644 --- a/src/include/kompute/Core.hpp +++ b/src/include/kompute/Core.hpp @@ -8,6 +8,8 @@ static const char* KOMPUTE_LOG_TAG = "KomputeLog"; #endif +#include + #include // Typedefs to simplify interaction with core types @@ -51,57 +53,54 @@ extern py::object kp_debug, kp_info, kp_warning, kp_error; #else #include #if SPDLOG_ACTIVE_LEVEL > 1 -#define SPDLOG_DEBUG(message, ...) +#define SPDLOG_DEBUG(...) #else #if defined(VK_USE_PLATFORM_ANDROID_KHR) -#define SPDLOG_DEBUG(message, ...) \ - ((void)__android_log_print(ANDROID_LOG_DEBUG, KOMPUTE_LOG_TAG, message)) +#define SPDLOG_DEBUG(...) \ + ((void)__android_log_print(ANDROID_LOG_DEBUG, KOMPUTE_LOG_TAG, fmt::format(__VA_ARGS__))) #elif defined(KOMPUTE_BUILD_PYTHON) -#define SPDLOG_DEBUG(message, ...) kp_debug(message); +#define SPDLOG_DEBUG(...) kp_debug(fmt::format(__VA_ARGS__)) #else -#define SPDLOG_DEBUG(message, ...) \ - std::cout << "DEBUG: " << message << std::endl +#define SPDLOG_DEBUG(...) fmt::print("[{} {}] [debug] [{}:{}] {}\n", __DATE__, __TIME__, __FILE__, __LINE__, fmt::format(__VA_ARGS__)) #endif // VK_USE_PLATFORM_ANDROID_KHR #endif // SPDLOG_ACTIVE_LEVEL > 1 #if SPDLOG_ACTIVE_LEVEL > 2 -#define SPDLOG_INFO(message, ...) +#define SPDLOG_INFO(...) #else #if defined(VK_USE_PLATFORM_ANDROID_KHR) -#define SPDLOG_INFO(message, ...) \ - ((void)__android_log_print(ANDROID_LOG_INFO, KOMPUTE_LOG_TAG, message)) +#define SPDLOG_INFO(...) \ + ((void)__android_log_print(ANDROID_LOG_INFO, KOMPUTE_LOG_TAG, fmt::format(__VA_ARGS__))) #elif defined(KOMPUTE_BUILD_PYTHON) -#define SPDLOG_INFO(message, ...) kp_info(message); +#define SPDLOG_INFO(...) kp_info(fmt::format(__VA_ARGS__)) #else -#define SPDLOG_INFO(message, ...) std::cout << "INFO: " << message << std::endl +#define SPDLOG_INFO(...) fmt::print("[{} {}] [debug] [{}:{}] {}\n", __DATE__, __TIME__, __FILE__, __LINE__, fmt::format(__VA_ARGS__)) #endif // VK_USE_PLATFORM_ANDROID_KHR #endif // SPDLOG_ACTIVE_LEVEL > 2 #if SPDLOG_ACTIVE_LEVEL > 3 -#define SPDLOG_WARN(message, ...) +#define SPDLOG_WARN(...) #else #if defined(VK_USE_PLATFORM_ANDROID_KHR) -#define SPDLOG_WARN(message, ...) \ - ((void)__android_log_print(ANDROID_LOG_WARN, KOMPUTE_LOG_TAG, message)) +#define SPDLOG_WARN(...) \ + ((void)__android_log_print(ANDROID_LOG_WARN, KOMPUTE_LOG_TAG, fmt::format(__VA_ARGS__))) #elif defined(KOMPUTE_BUILD_PYTHON) -#define SPDLOG_WARN(message, ...) kp_warning(message); +#define SPDLOG_WARN(...) kp_warning(fmt::format(__VA_ARGS__)) #else -#define SPDLOG_WARN(message, ...) \ - std::cout << "WARNING: " << message << std::endl +#define SPDLOG_WARN(...) fmt::print("[{} {}] [debug] [{}:{}] {}\n", __DATE__, __TIME__, __FILE__, __LINE__, fmt::format(__VA_ARGS__)) #endif // VK_USE_PLATFORM_ANDROID_KHR #endif // SPDLOG_ACTIVE_LEVEL > 3 #if SPDLOG_ACTIVE_LEVEL > 4 -#define SPDLOG_ERROR(message, ...) +#define SPDLOG_ERROR(...) #else #if defined(VK_USE_PLATFORM_ANDROID_KHR) -#define SPDLOG_ERROR(message, ...) \ - ((void)__android_log_print(ANDROID_LOG_ERROR, KOMPUTE_LOG_TAG, message)) +#define SPDLOG_ERROR(...) \ + ((void)__android_log_print(ANDROID_LOG_ERROR, KOMPUTE_LOG_TAG, fmt::format(__VA_ARGS__))) #elif defined(KOMPUTE_BUILD_PYTHON) -#define SPDLOG_ERROR(message, ...) kp_error(message); +#define SPDLOG_ERROR(...) kp_error(fmt::format(__VA_ARGS__)) #else -#define SPDLOG_ERROR(message, ...) \ - std::cout << "ERROR: " << message << std::endl +#define SPDLOG_ERROR(...) fmt::print("[{} {}] [debug] [{}:{}] {}\n", __DATE__, __TIME__, __FILE__, __LINE__, fmt::format(__VA_ARGS__)) #endif // VK_USE_PLATFORM_ANDROID_KHR #endif // SPDLOG_ACTIVE_LEVEL > 4 #endif // KOMPUTE_SPDLOG_ENABLED