From e63ee41fd455cdd39ae983c258d8632c3ea57fc6 Mon Sep 17 00:00:00 2001
From: Huang Rui <vowstar@gmail.com>
Date: Sun, 7 Aug 2022 22:06:30 +0800
Subject: [PATCH] Fix build failures with libfmt-9.0.0

libfmt-9.0.0 require explicit tagging of ARG types. This commit
adds those tags for the types that are currently formatted via fmt.

Bug: https://bugs.gentoo.org/858659
Closes: https://github.com/gnuradio/gnuradio/issues/6052
Signed-off-by: Huang Rui <vowstar@gmail.com>
---
 gnuradio-runtime/lib/flat_flowgraph.cc     | 25 ++++++++++++++++++++++
 gnuradio-runtime/lib/flowgraph.cc          | 10 +++++++++
 gnuradio-runtime/lib/hier_block2_detail.cc | 19 ++++++++++++++++
 gr-analog/lib/sig_source_impl.cc           | 10 +++++++++
 gr-uhd/lib/usrp_block_impl.cc              |  7 ++++++
 5 files changed, 71 insertions(+)

diff --git a/gnuradio-runtime/lib/flat_flowgraph.cc b/gnuradio-runtime/lib/flat_flowgraph.cc
index 42875fb4c32..ac7c8ce9109 100644
--- a/gnuradio-runtime/lib/flat_flowgraph.cc
+++ b/gnuradio-runtime/lib/flat_flowgraph.cc
@@ -25,6 +25,31 @@
 #include <map>
 #include <numeric>
 
+#if FMT_VERSION >= 90000
+#include <fmt/ostream.h>
+template <>
+struct fmt::formatter<gr::edge> : ostream_formatter {
+};
+template <>
+struct fmt::formatter<gr::msg_endpoint> : ostream_formatter {
+};
+template <>
+struct fmt::formatter<std::shared_ptr<gr::basic_block>> : ostream_formatter {
+};
+template <>
+struct fmt::formatter<std::shared_ptr<gr::block_detail>> : ostream_formatter {
+};
+template <>
+struct fmt::formatter<std::shared_ptr<gr::buffer_reader>> : ostream_formatter {
+};
+template <>
+struct fmt::formatter<std::shared_ptr<gr::buffer>> : ostream_formatter {
+};
+template <>
+struct fmt::formatter<std::shared_ptr<pmt::pmt_base>> : ostream_formatter {
+};
+#endif // FMT_VERSION >= 90000
+
 namespace gr {
 
 
diff --git a/gnuradio-runtime/lib/flowgraph.cc b/gnuradio-runtime/lib/flowgraph.cc
index 0bc04adc22c..6c63b834a89 100644
--- a/gnuradio-runtime/lib/flowgraph.cc
+++ b/gnuradio-runtime/lib/flowgraph.cc
@@ -20,6 +20,16 @@
 // TODO: Replace with GNU Radio logging
 #include <iostream>
 
+#if FMT_VERSION >= 90000
+#include <fmt/ostream.h>
+template <>
+struct fmt::formatter<std::shared_ptr<gr::basic_block>> : ostream_formatter {
+};
+template <>
+struct fmt::formatter<std::shared_ptr<pmt::pmt_base>> : ostream_formatter {
+};
+#endif // FMT_VERSION >= 90000
+
 namespace gr {
 
 edge::~edge() {}
diff --git a/gnuradio-runtime/lib/hier_block2_detail.cc b/gnuradio-runtime/lib/hier_block2_detail.cc
index 5cb42030dca..d3e27aee5b4 100644
--- a/gnuradio-runtime/lib/hier_block2_detail.cc
+++ b/gnuradio-runtime/lib/hier_block2_detail.cc
@@ -22,6 +22,25 @@
 // TODO: Replace with GNU Radio logging
 #include <iostream>
 
+#if FMT_VERSION >= 90000
+#include <fmt/ostream.h>
+template <>
+struct fmt::formatter<gr::edge> : ostream_formatter {
+};
+template <>
+struct fmt::formatter<gr::endpoint> : ostream_formatter {
+};
+template <>
+struct fmt::formatter<gr::msg_endpoint> : ostream_formatter {
+};
+template <>
+struct fmt::formatter<std::shared_ptr<gr::basic_block>> : ostream_formatter {
+};
+template <>
+struct fmt::formatter<std::shared_ptr<pmt::pmt_base>> : ostream_formatter {
+};
+#endif // FMT_VERSION >= 90000
+
 namespace gr {
 
 hier_block2_detail::hier_block2_detail(hier_block2* owner)
diff --git a/gr-analog/lib/sig_source_impl.cc b/gr-analog/lib/sig_source_impl.cc
index 0e1db81648a..afa6d779cb0 100644
--- a/gr-analog/lib/sig_source_impl.cc
+++ b/gr-analog/lib/sig_source_impl.cc
@@ -21,6 +21,16 @@
 #include <algorithm>
 #include <stdexcept>
 
+#if FMT_VERSION >= 90000
+#include <fmt/ostream.h>
+template <>
+struct fmt::formatter<std::shared_ptr<pmt::pmt_base>> : ostream_formatter {
+};
+template <>
+struct fmt::formatter<gr::analog::gr_waveform_t&> : ostream_formatter {
+};
+#endif // FMT_VERSION >= 90000
+
 namespace gr {
 namespace analog {
 
diff --git a/gr-uhd/lib/usrp_block_impl.cc b/gr-uhd/lib/usrp_block_impl.cc
index cb6dccfcdea..b11b82a9e70 100644
--- a/gr-uhd/lib/usrp_block_impl.cc
+++ b/gr-uhd/lib/usrp_block_impl.cc
@@ -12,6 +12,13 @@
 #include <chrono>
 #include <thread>
 
+#if FMT_VERSION >= 90000
+#include <fmt/ostream.h>
+template <>
+struct fmt::formatter<std::shared_ptr<pmt::pmt_base>> : ostream_formatter {
+};
+#endif // FMT_VERSION >= 90000
+
 using namespace gr::uhd;
 using namespace std::chrono_literals;
 
