From f89cf97596eab2d80dab0bddf6f9b056c415997e Mon Sep 17 00:00:00 2001 From: Raul Tambre Date: Tue, 22 Oct 2019 20:02:11 +0300 Subject: [PATCH] #1278: Allow forcing ansicolor sinks on Windows --- CMakeLists.txt | 8 +++++++- include/spdlog/details/registry-inl.h | 4 ++-- include/spdlog/sinks/stdout_color_sinks.h | 4 ++-- src/color_sinks.cpp | 2 +- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5946b2a0..40386220 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -66,7 +66,8 @@ option(SPDLOG_FMT_EXTERNAL "Use external fmt library instead of bundled" OFF) if(WIN32) option(SPDLOG_WCHAR_SUPPORT "Support wchar api" OFF) - option(SPDLOG_WCHAR_FILENAMES "Support wchar filenames" OFF) + option(SPDLOG_WCHAR_FILENAMES "Support wchar filenames" OFF) + option(SPDLOG_FORCE_ANSICOLOR "Use VT100 instead of winapi for colored sinks" OFF) endif() option(SPDLOG_NO_EXCEPTIONS "Compile with -fno-exceptions. Call abort() on any spdlog exceptions" OFF) @@ -150,6 +151,11 @@ if(SPDLOG_WCHAR_SUPPORT) target_compile_definitions(spdlog_header_only INTERFACE SPDLOG_WCHAR_FILENAMES) endif() +if(WIN32 AND NOT SPDLOG_FORCE_ANSICOLOR) + target_compile_definitions(spdlog PUBLIC SPDLOG_WINCOLOR) + target_compile_definitions(spdlog_header_only INTERFACE SPDLOG_WINCOLOR) +endif() + if(SPDLOG_NO_EXCEPTIONS) target_compile_definitions(spdlog PUBLIC SPDLOG_NO_EXCEPTIONS) diff --git a/include/spdlog/details/registry-inl.h b/include/spdlog/details/registry-inl.h index 784ec237..3974f105 100644 --- a/include/spdlog/details/registry-inl.h +++ b/include/spdlog/details/registry-inl.h @@ -14,7 +14,7 @@ #ifndef SPDLOG_DISABLE_DEFAULT_LOGGER // support for the default stdout color logger -#ifdef _WIN32 +#ifdef SPDLOG_WINCOLOR #include "spdlog/sinks/wincolor_sink.h" #else #include "spdlog/sinks/ansicolor_sink.h" @@ -36,7 +36,7 @@ SPDLOG_INLINE registry::registry() #ifndef SPDLOG_DISABLE_DEFAULT_LOGGER // create default logger (ansicolor_stdout_sink_mt or wincolor_stdout_sink_mt in windows). -#ifdef _WIN32 +#ifdef SPDLOG_WINCOLOR auto color_sink = std::make_shared(); #else auto color_sink = std::make_shared(); diff --git a/include/spdlog/sinks/stdout_color_sinks.h b/include/spdlog/sinks/stdout_color_sinks.h index d11ec0a1..a9875c7a 100644 --- a/include/spdlog/sinks/stdout_color_sinks.h +++ b/include/spdlog/sinks/stdout_color_sinks.h @@ -3,7 +3,7 @@ #pragma once -#ifdef _WIN32 +#ifdef SPDLOG_WINCOLOR #include "spdlog/sinks/wincolor_sink.h" #else #include "spdlog/sinks/ansicolor_sink.h" @@ -13,7 +13,7 @@ namespace spdlog { namespace sinks { -#ifdef _WIN32 +#ifdef SPDLOG_WINCOLOR using stdout_color_sink_mt = wincolor_stdout_sink_mt; using stdout_color_sink_st = wincolor_stdout_sink_st; using stderr_color_sink_mt = wincolor_stderr_sink_mt; diff --git a/src/color_sinks.cpp b/src/color_sinks.cpp index 3a335a77..75f73e2f 100644 --- a/src/color_sinks.cpp +++ b/src/color_sinks.cpp @@ -12,7 +12,7 @@ // // color sinks // -#ifdef _WIN32 +#ifdef SPDLOG_WINCOLOR #include "spdlog/sinks/wincolor_sink-inl.h" template class spdlog::sinks::wincolor_sink; template class spdlog::sinks::wincolor_sink;