From 26a064ed2d696f8632cd24a76487548f810f512c Mon Sep 17 00:00:00 2001
From: gabime <gmelman1@gmail.com>
Date: Sun, 12 May 2019 23:36:48 +0300
Subject: [PATCH] wip static-lib

---
 include/spdlog/sinks/basic_file_sink-inl.h | 39 ++++++++++++++++++++++
 include/spdlog/sinks/basic_file_sink.h     | 28 +++++-----------
 src/spdlog.cpp                             |  5 +++
 tests/includes.h                           |  1 +
 4 files changed, 53 insertions(+), 20 deletions(-)
 create mode 100644 include/spdlog/sinks/basic_file_sink-inl.h

diff --git a/include/spdlog/sinks/basic_file_sink-inl.h b/include/spdlog/sinks/basic_file_sink-inl.h
new file mode 100644
index 00000000..edcee4fa
--- /dev/null
+++ b/include/spdlog/sinks/basic_file_sink-inl.h
@@ -0,0 +1,39 @@
+// Copyright(c) 2015-present Gabi Melman & spdlog contributors.
+// Distributed under the MIT License (http://opensource.org/licenses/MIT)
+
+#pragma once
+
+#include "spdlog/common.h"
+#include "spdlog/details/os.h"
+
+namespace spdlog {
+namespace sinks {
+
+template<typename Mutex>
+SPDLOG_INLINE basic_file_sink<Mutex>::basic_file_sink(const filename_t &filename, bool truncate)
+{
+    file_helper_.open(filename, truncate);
+}
+
+template<typename Mutex>
+SPDLOG_INLINE const filename_t &basic_file_sink<Mutex>::filename() const
+{
+    return file_helper_.filename();
+}
+
+template<typename Mutex>
+SPDLOG_INLINE void basic_file_sink<Mutex>::sink_it_(const details::log_msg &msg)
+{
+    fmt::memory_buffer formatted;
+    sink::formatter_->format(msg, formatted);
+    file_helper_.write(formatted);
+}
+
+template<typename Mutex>
+SPDLOG_INLINE void basic_file_sink<Mutex>::flush_()
+{
+    file_helper_.flush();
+}
+
+} // namespace sinks
+} // namespace spdlog
diff --git a/include/spdlog/sinks/basic_file_sink.h b/include/spdlog/sinks/basic_file_sink.h
index 249a6f31..95a7a336 100644
--- a/include/spdlog/sinks/basic_file_sink.h
+++ b/include/spdlog/sinks/basic_file_sink.h
@@ -23,28 +23,12 @@ template<typename Mutex>
 class basic_file_sink final : public base_sink<Mutex>
 {
 public:
-    explicit basic_file_sink(const filename_t &filename, bool truncate = false)
-    {
-        file_helper_.open(filename, truncate);
-    }
-
-    const filename_t &filename() const
-    {
-        return file_helper_.filename();
-    }
+    explicit basic_file_sink(const filename_t &filename, bool truncate = false);
+    const filename_t &filename() const;
 
 protected:
-    void sink_it_(const details::log_msg &msg) override
-    {
-        fmt::memory_buffer formatted;
-        sink::formatter_->format(msg, formatted);
-        file_helper_.write(formatted);
-    }
-
-    void flush_() override
-    {
-        file_helper_.flush();
-    }
+    void sink_it_(const details::log_msg &msg) override;
+    void flush_() override;
 
 private:
     details::file_helper file_helper_;
@@ -71,3 +55,7 @@ inline std::shared_ptr<logger> basic_logger_st(const std::string &logger_name, c
 }
 
 } // namespace spdlog
+
+#ifdef SPDLOG_HEADER_ONLY
+#include "basic_file_sink-inl.h"
+#endif
\ No newline at end of file
diff --git a/src/spdlog.cpp b/src/spdlog.cpp
index fd321535..ebe2fc9f 100644
--- a/src/spdlog.cpp
+++ b/src/spdlog.cpp
@@ -36,6 +36,11 @@ template spdlog::logger::logger(std::string name, sinks_init_list::iterator begi
 template class spdlog::sinks::base_sink<std::mutex>;
 template class spdlog::sinks::base_sink<spdlog::details::null_mutex>;
 
+#include "spdlog/sinks/basic_file_sink.h"
+#include "spdlog/sinks/basic_file_sink-inl.h"
+template class spdlog::sinks::basic_file_sink<std::mutex>;
+template class spdlog::sinks::basic_file_sink<spdlog::details::null_mutex>;
+
 #include "spdlog/sinks/rotating_file_sink.h"
 #include "spdlog/sinks/rotating_file_sink-inl.h"
 template class spdlog::sinks::rotating_file_sink<std::mutex>;
diff --git a/tests/includes.h b/tests/includes.h
index 26517922..85d4a1bd 100644
--- a/tests/includes.h
+++ b/tests/includes.h
@@ -20,3 +20,4 @@
 #include "spdlog/sinks/ostream_sink.h"
 #include "spdlog/sinks/rotating_file_sink.h"
 #include "spdlog/sinks/stdout_color_sinks.h"
+#include "spdlog/details/pattern_formatter.h"