build: update msgpack find

Change-Id: I2cb64513b019161150e93fd0737fbdf1831fd722
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a3db422..90178c7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,6 +8,7 @@
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 include(CTest)
 include(GNUInstallDirs)
+include(CheckIncludeFileCXX)
 set (prefix ${CMAKE_INSTALL_PREFIX})
 set (exec_prefix "\${prefix}")
 set (libdir "${CMAKE_INSTALL_FULL_LIBDIR}")
@@ -38,12 +39,15 @@
 
     find_package (PkgConfig REQUIRED)
 
-    find_package(msgpack-cxx CONFIG)
-    if(msgpack-cxx_FOUND)
-    set(MSGPACK_LIB msgpack-cxx)
-    else()
-    find_package(msgpackc-cxx CONFIG REQUIRED NAMES msgpackc-cxx msgpack)
-    set(MSGPACK_LIB msgpackc-cxx)
+    check_include_file_cxx(msgpack.hpp HAVE_MSGPACKCXX)
+    if (NOT HAVE_MSGPACKCXX)
+        find_package(msgpack QUIET CONFIG NAMES msgpack msgpackc-cxx)
+        if (NOT msgpack_FOUND)
+            find_package(msgpack REQUIRED CONFIG NAMES msgpack-cxx)
+            set(MSGPACK_TARGET "msgpack-cxx")
+        else()
+            set(MSGPACK_TARGET "msgpackc-cxx")
+        endif()
     endif()
 
     find_package(fmt)
@@ -184,6 +188,9 @@
         ${WIN32_DEP_DIR}/../msvc/lib/libfmt.lib
         ${WIN32_DEP_DIR}/../msvc/lib/libmsgpackc-cxx.lib)
 endif()
+if (NOT HAVE_MSGPACKCXX)
+    target_link_libraries(opendht PUBLIC ${MSGPACK_TARGET})
+endif()
 if (APPLE)
     target_link_libraries(dhtnet PRIVATE "-framework CoreFoundation" "-framework Security" "resolv")
 endif()