From 6fe899af104930c381b8bb0498e93b7a09418241 Mon Sep 17 00:00:00 2001
From: David Zemon <david@zemon.name>
Date: Fri, 17 May 2019 23:23:51 -0500
Subject: [PATCH] Set Threads::Threads dependency on spdlog libs - don't make
 user do it

---
 CMakeLists.txt         | 20 +++++++++++++-------
 bench/CMakeLists.txt   |  8 ++++----
 example/CMakeLists.txt |  4 ++--
 tests/CMakeLists.txt   |  1 -
 4 files changed, 19 insertions(+), 14 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index b1971b26..2ef3b16f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -56,24 +56,30 @@ set(HEADER_BASE "${CMAKE_CURRENT_SOURCE_DIR}/include/spdlog")
 
 message(STATUS "Build type: " ${CMAKE_BUILD_TYPE})
 
+find_package(Threads REQUIRED)
+
 # Build library
 add_library(spdlog src/spdlog.cpp)
 target_compile_definitions(spdlog PUBLIC SPDLOG_COMPILED_LIB )
 target_include_directories(spdlog PUBLIC  "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>")
 set_target_properties(spdlog PROPERTIES OUTPUT_NAME "spdlog")
 set_target_properties(spdlog PROPERTIES DEBUG_POSTFIX "-debug")
+target_link_libraries(spdlog PUBLIC Threads::Threads)
 
-# Headr only
+# Header only
 add_library(spdlog_header_only INTERFACE)
-target_include_directories(spdlog_header_only INTERFACE "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>")
+target_include_directories(spdlog_header_only INTERFACE "${CMAKE_CURRENT_LIST_DIR}/include")
+target_link_libraries(spdlog_header_only INTERFACE Threads::Threads)
 
-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)
+    if (NOT TARGET fmt::fmt)
+        find_package(fmt REQUIRED)
+    endif ()
+
+    target_compile_definitions(spdlog PUBLIC SPDLOG_FMT_EXTERNAL)
+    target_link_libraries(spdlog PUBLIC fmt::fmt)
+
     target_compile_definitions(spdlog_header_only INTERFACE SPDLOG_FMT_EXTERNAL)
     target_link_libraries(spdlog_header_only INTERFACE fmt::fmt)
 endif()
diff --git a/bench/CMakeLists.txt b/bench/CMakeLists.txt
index 3c4a3f9d..dcb03a9e 100644
--- a/bench/CMakeLists.txt
+++ b/bench/CMakeLists.txt
@@ -33,16 +33,16 @@ find_package(Threads REQUIRED)
 find_package(benchmark CONFIG REQUIRED)
 
 add_executable(bench bench.cpp)
-target_link_libraries(bench PRIVATE spdlog::spdlog Threads::Threads)
+target_link_libraries(bench PRIVATE spdlog::spdlog)
 
 add_executable(async_bench async_bench.cpp)
-target_link_libraries(async_bench PRIVATE spdlog::spdlog Threads::Threads)
+target_link_libraries(async_bench PRIVATE spdlog::spdlog)
 
 add_executable(latency latency.cpp)
-target_link_libraries(latency PRIVATE benchmark::benchmark spdlog::spdlog Threads::Threads)
+target_link_libraries(latency PRIVATE benchmark::benchmark spdlog::spdlog)
 
 
 add_executable(formatter-bench formatter-bench.cpp)
-target_link_libraries(formatter-bench PRIVATE benchmark::benchmark spdlog::spdlog Threads::Threads)
+target_link_libraries(formatter-bench PRIVATE benchmark::benchmark spdlog::spdlog)
 
 file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/logs")
diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt
index b25ca252..033e7af6 100644
--- a/example/CMakeLists.txt
+++ b/example/CMakeLists.txt
@@ -38,7 +38,7 @@ find_package(Threads REQUIRED)
 
 # Example of using pre-compiled library
 add_executable(example example.cpp)
-target_link_libraries(example spdlog::spdlog Threads::Threads)
+target_link_libraries(example spdlog::spdlog)
 if(CMAKE_SYSTEM_NAME STREQUAL "Android")
     find_library(log-lib log)
     target_link_libraries(example log)
@@ -54,7 +54,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Android")
 endif ()
 
 add_executable(multisink multisink.cpp)
-target_link_libraries(multisink spdlog::spdlog Threads::Threads)
+target_link_libraries(multisink spdlog::spdlog)
 
 file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/logs")
 
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 8679174d..f02dea91 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -20,7 +20,6 @@ set(SPDLOG_UTESTS_SOURCES
     test_fmt_helper.cpp)
 
 add_executable(${PROJECT_NAME} ${SPDLOG_UTESTS_SOURCES})
-target_link_libraries(${PROJECT_NAME} PRIVATE Threads::Threads)
 target_link_libraries(${PROJECT_NAME} PRIVATE spdlog)
 
 file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/logs")