diff --git a/CMakeLists.txt b/CMakeLists.txt index 1dadcb43..19d777a3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,5 @@ - -# -# Copyright(c) 2015 Ruslan Baratov. +# Copyright(c) 2019 spdlog # Distributed under the MIT License (http://opensource.org/licenses/MIT) -# cmake_minimum_required(VERSION 3.1) project(spdlog VERSION 1.3.1 LANGUAGES CXX) @@ -47,48 +44,36 @@ if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) set(SPDLOG_MASTER_PROJECT ON) endif() -option(SPDLOG_HEADER_ONLY "Header only version. Turn OFF to build as static lib" OFF) +option(SPDLOG_STATIC_LIB "Build as static lib" OFF) option(SPDLOG_BUILD_EXAMPLES "Build examples" ${SPDLOG_MASTER_PROJECT}) option(SPDLOG_BUILD_BENCH "Build benchmarks (Requires https://github.com/google/benchmark.git to be installed)" ON) option(SPDLOG_BUILD_TESTS "Build tests" ${SPDLOG_MASTER_PROJECT}) option(SPDLOG_FMT_EXTERNAL "Use external fmt library instead of bundled" OFF) option(SPDLOG_INSTALL "Generate the install target." ${SPDLOG_MASTER_PROJECT}) -set(HEADER_BASE "${CMAKE_CURRENT_SOURCE_DIR}/include") +set(HEADER_BASE "${CMAKE_CURRENT_SOURCE_DIR}/include/spdlog") -if(SPDLOG_HEADER_ONLY) - add_definitions(-DSPDLOG_HEADER_ONLY) - add_library(spdlog INTERFACE) - add_library(spdlog::spdlog ALIAS spdlog) - target_include_directories( - spdlog - INTERFACE - "$" - ) - -else() - remove_definitions(-DSPDLOG_HEADER_ONLY) - file(GLOB SRC_FILES ${HEADER_BASE}/spdlog/impl/*.cpp) +if(SPDLOG_STATIC_LIB) + add_definitions(-DSPDLOG_STATIC_LIB) + file(GLOB SRC_FILES ${HEADER_BASE}/impl/*.cpp) add_library(spdlog STATIC ${SRC_FILES}) - add_library(spdlog::spdlog ALIAS spdlog) - target_include_directories( - spdlog - PUBLIC - "$" - ) + target_include_directories(spdlog PUBLIC "$") +else() + add_library(spdlog INTERFACE) + target_include_directories(spdlog INTERFACE "$") endif() +add_library(spdlog::spdlog ALIAS spdlog) + if(SPDLOG_FMT_EXTERNAL AND NOT TARGET fmt::fmt) find_package(fmt REQUIRED CONFIG) endif() - if(SPDLOG_FMT_EXTERNAL) target_compile_definitions(spdlog INTERFACE SPDLOG_FMT_EXTERNAL) target_link_libraries(spdlog INTERFACE fmt::fmt) endif() - if(SPDLOG_BUILD_EXAMPLES) add_subdirectory(example) endif() @@ -105,9 +90,9 @@ endif() #--------------------------------------------------------------------------------------- # install #--------------------------------------------------------------------------------------- -install(DIRECTORY ${HEADER_BASE}/spdlog DESTINATION include) +install(DIRECTORY ${HEADER_BASE} DESTINATION include) -if(NOT SPDLOG_HEADER_ONLY) +if(SPDLOG_STATIC_LIB) install(TARGETS spdlog ARCHIVE DESTINATION lib) endif() diff --git a/include/spdlog/async_logger.h b/include/spdlog/async_logger.h index b0b644a4..0178b39d 100644 --- a/include/spdlog/async_logger.h +++ b/include/spdlog/async_logger.h @@ -65,6 +65,6 @@ private: }; } // namespace spdlog -#ifdef SPDLOG_HEADER_ONLY +#ifndef SPDLOG_STATIC_LIB #include "spdlog/impl/async_logger.cpp" -#endif // SPDLOG_HEADER_ONLY +#endif diff --git a/include/spdlog/common.h b/include/spdlog/common.h index add4000b..0bcd03f5 100644 --- a/include/spdlog/common.h +++ b/include/spdlog/common.h @@ -23,10 +23,11 @@ #include "spdlog/fmt/fmt.h" -#ifdef SPDLOG_HEADER_ONLY -#define SPDLOG_INLINE inline -#else + +#ifdef SPDLOG_STATIC_LIB #define SPDLOG_INLINE +#else +#define SPDLOG_INLINE inline #endif // visual studio upto 2013 does not support noexcept nor constexpr diff --git a/include/spdlog/details/file_helper.h b/include/spdlog/details/file_helper.h index 9f7fceaa..6f9d7020 100644 --- a/include/spdlog/details/file_helper.h +++ b/include/spdlog/details/file_helper.h @@ -57,6 +57,6 @@ private: } // namespace details } // namespace spdlog -#ifdef SPDLOG_HEADER_ONLY +#ifndef SPDLOG_STATIC_LIB #include "spdlog/impl/file_helper.cpp" -#endif // ! SPDLOG_HEADER_ONLY +#endif diff --git a/include/spdlog/details/log_msg.h b/include/spdlog/details/log_msg.h index e9cacbb7..fea55a40 100644 --- a/include/spdlog/details/log_msg.h +++ b/include/spdlog/details/log_msg.h @@ -33,6 +33,6 @@ struct log_msg } // namespace details } // namespace spdlog -#ifdef SPDLOG_HEADER_ONLY +#ifndef SPDLOG_STATIC_LIB #include "spdlog/impl/log_msg.cpp" -#endif // SPDLOG_HEADER_ONLY +#endif diff --git a/include/spdlog/details/os.h b/include/spdlog/details/os.h index 5f87f5fd..0467e944 100644 --- a/include/spdlog/details/os.h +++ b/include/spdlog/details/os.h @@ -88,6 +88,6 @@ void wbuf_to_utf8buf(const fmt::wmemory_buffer &wbuf, fmt::memory_buffer &target } // namespace details } // namespace spdlog -#ifdef SPDLOG_HEADER_ONLY +#ifndef SPDLOG_STATIC_LIB #include "spdlog/impl/os.cpp" #endif diff --git a/include/spdlog/details/pattern_formatter.h b/include/spdlog/details/pattern_formatter.h index 210efd23..8866b8bd 100644 --- a/include/spdlog/details/pattern_formatter.h +++ b/include/spdlog/details/pattern_formatter.h @@ -97,6 +97,6 @@ private: }; } // namespace spdlog -#ifdef SPDLOG_HEADER_ONLY +#ifndef SPDLOG_STATIC_LIB #include "spdlog/impl/pattern_formatter.cpp" #endif diff --git a/include/spdlog/details/registry.h b/include/spdlog/details/registry.h index 93d35e87..d6f4dbea 100644 --- a/include/spdlog/details/registry.h +++ b/include/spdlog/details/registry.h @@ -101,6 +101,6 @@ private: } // namespace details } // namespace spdlog -#ifdef SPDLOG_HEADER_ONLY +#ifndef SPDLOG_STATIC_LIB #include "spdlog/impl/registry.cpp" -#endif // SPDLOG_HEADER_ONLY +#endif diff --git a/include/spdlog/details/thread_pool.h b/include/spdlog/details/thread_pool.h index 35578971..a1efcee6 100644 --- a/include/spdlog/details/thread_pool.h +++ b/include/spdlog/details/thread_pool.h @@ -11,6 +11,8 @@ #include namespace spdlog { +class async_logger; + namespace details { using async_logger_ptr = std::shared_ptr; diff --git a/include/spdlog/impl/async_logger.cpp b/include/spdlog/impl/async_logger.cpp index e915042e..eeae49f9 100644 --- a/include/spdlog/impl/async_logger.cpp +++ b/include/spdlog/impl/async_logger.cpp @@ -1,4 +1,4 @@ -#ifndef SPDLOG_HEADER_ONLY +#ifdef SPDLOG_STATIC_LIB #include "spdlog/async_logger.h" #endif diff --git a/include/spdlog/impl/file_helper.cpp b/include/spdlog/impl/file_helper.cpp index 70a86eb8..eb8b9193 100644 --- a/include/spdlog/impl/file_helper.cpp +++ b/include/spdlog/impl/file_helper.cpp @@ -3,7 +3,7 @@ // Distributed under the MIT License (http://opensource.org/licenses/MIT) // -#ifndef SPDLOG_HEADER_ONLY +#ifdef SPDLOG_STATIC_LIB #include "spdlog/details/file_helper.h" #endif diff --git a/include/spdlog/impl/log_msg.cpp b/include/spdlog/impl/log_msg.cpp index ec4f8642..e854a1ba 100644 --- a/include/spdlog/impl/log_msg.cpp +++ b/include/spdlog/impl/log_msg.cpp @@ -1,7 +1,7 @@ #include "spdlog/details/os.h" #include "spdlog/sinks/sink.h" -#ifndef SPDLOG_HEADER_ONLY +#ifdef SPDLOG_STATIC_LIB #include "spdlog/details/log_msg.h" #endif diff --git a/include/spdlog/impl/logger.cpp b/include/spdlog/impl/logger.cpp index 7dcfc973..01316b64 100644 --- a/include/spdlog/impl/logger.cpp +++ b/include/spdlog/impl/logger.cpp @@ -1,4 +1,4 @@ -#ifndef SPDLOG_HEADER_ONLY +#ifdef SPDLOG_STATIC_LIB #include "spdlog/logger.h" #endif diff --git a/include/spdlog/impl/os.cpp b/include/spdlog/impl/os.cpp index ecd5a611..e4260dba 100644 --- a/include/spdlog/impl/os.cpp +++ b/include/spdlog/impl/os.cpp @@ -2,7 +2,7 @@ // Copyright(c) 2015 Gabi Melman. // Distributed under the MIT License (http://opensource.org/licenses/MIT) // -#ifndef SPDLOG_HEADER_ONLY +#ifdef SPDLOG_STATIC_LIB #include "spdlog/details/os.h" #endif diff --git a/include/spdlog/impl/pattern_formatter.cpp b/include/spdlog/impl/pattern_formatter.cpp index f1d43cf8..abcc7b36 100644 --- a/include/spdlog/impl/pattern_formatter.cpp +++ b/include/spdlog/impl/pattern_formatter.cpp @@ -3,9 +3,9 @@ // Distributed under the MIT License (http://opensource.org/licenses/MIT) // -#ifndef SPDLOG_HEADER_ONLY +#ifdef SPDLOG_STATIC_LIB #include "spdlog/details/pattern_formatter.h" -#endif // !SPDLOG_HEADER_ONLY +#endif #include "spdlog/details/fmt_helper.h" #include "spdlog/details/log_msg.h" diff --git a/include/spdlog/impl/registry.cpp b/include/spdlog/impl/registry.cpp index ca0247eb..9a80aeea 100644 --- a/include/spdlog/impl/registry.cpp +++ b/include/spdlog/impl/registry.cpp @@ -2,7 +2,7 @@ // Copyright(c) 2015 Gabi Melman. // Distributed under the MIT License (http://opensource.org/licenses/MIT) // -#ifndef SPDLOG_HEADER_ONLY +#ifdef SPDLOG_STATIC_LIB #include "spdlog/details/registry.h" #endif diff --git a/include/spdlog/impl/sink.cpp b/include/spdlog/impl/sink.cpp index 04adb9be..938fc73c 100644 --- a/include/spdlog/impl/sink.cpp +++ b/include/spdlog/impl/sink.cpp @@ -1,7 +1,7 @@ #include "spdlog/common.h" #include "spdlog/details/pattern_formatter.h" -#ifndef SPDLOG_HEADER_ONLY +#ifdef SPDLOG_STATIC_LIB #include "spdlog/sinks/sink.h" #endif diff --git a/include/spdlog/logger.h b/include/spdlog/logger.h index 91371320..804abf33 100644 --- a/include/spdlog/logger.h +++ b/include/spdlog/logger.h @@ -340,6 +340,6 @@ protected: }; } // namespace spdlog -#ifdef SPDLOG_HEADER_ONLY +#ifndef SPDLOG_STATIC_LIB #include "spdlog/impl/logger.cpp" -#endif // SPDLOG_HEADER_ONLY +#endif diff --git a/include/spdlog/sinks/sink.h b/include/spdlog/sinks/sink.h index bfa19e03..1fc1f1d7 100644 --- a/include/spdlog/sinks/sink.h +++ b/include/spdlog/sinks/sink.h @@ -41,6 +41,6 @@ protected: } // namespace sinks } // namespace spdlog -#ifdef SPDLOG_HEADER_ONLY +#ifndef SPDLOG_STATIC_LIB #include "spdlog/impl/sink.cpp" -#endif // SPDLOG_HEADER_ONLY +#endif