summaryrefslogtreecommitdiff
path: root/audio/ardour
diff options
context:
space:
mode:
authorjoerg <joerg@pkgsrc.org>2020-04-12 19:36:26 +0000
committerjoerg <joerg@pkgsrc.org>2020-04-12 19:36:26 +0000
commit651a6f3154de8f7722aa31a9e76c97bbb4962cac (patch)
tree47c7c86e753655fb0c93ded8be36502afaf5d07f /audio/ardour
parent885e96f29ae1dc95939be5406f2db84f37372b3e (diff)
downloadpkgsrc-651a6f3154de8f7722aa31a9e76c97bbb4962cac.tar.gz
Fix operand-specific lookup for operator<<. Unlimit stack size and avoid
very long chains in luabindings.cc to workaround clang issues.
Diffstat (limited to 'audio/ardour')
-rw-r--r--audio/ardour/Makefile4
-rw-r--r--audio/ardour/distinfo18
-rw-r--r--audio/ardour/patches/patch-libs_ardour_ardour_chan__count.h18
-rw-r--r--audio/ardour/patches/patch-libs_ardour_ardour_chan__mapping.h18
-rw-r--r--audio/ardour/patches/patch-libs_ardour_ardour_plugin__insert.h17
-rw-r--r--audio/ardour/patches/patch-libs_ardour_ardour_presentation__info.h17
-rw-r--r--audio/ardour/patches/patch-libs_ardour_ardour_tempo.h22
-rw-r--r--audio/ardour/patches/patch-libs_ardour_chan__count.cc17
-rw-r--r--audio/ardour/patches/patch-libs_ardour_chan__mapping.cc23
-rw-r--r--audio/ardour/patches/patch-libs_ardour_luabindings.cc127
-rw-r--r--audio/ardour/patches/patch-libs_ardour_plugin__insert.cc19
-rw-r--r--audio/ardour/patches/patch-libs_ardour_presentation__info.cc17
-rw-r--r--audio/ardour/patches/patch-libs_ardour_tempo.cc19
-rw-r--r--audio/ardour/patches/patch-libs_pbd_id.cc19
-rw-r--r--audio/ardour/patches/patch-libs_pbd_pbd_id.h17
-rw-r--r--audio/ardour/patches/patch-libs_timecode_src_time.cc19
-rw-r--r--audio/ardour/patches/patch-libs_timecode_timecode_bbt__time.h33
-rw-r--r--audio/ardour/patches/patch-libs_timecode_timecode_time.h17
18 files changed, 439 insertions, 2 deletions
diff --git a/audio/ardour/Makefile b/audio/ardour/Makefile
index 99e3aae47e2..47ce6ae7f71 100644
--- a/audio/ardour/Makefile
+++ b/audio/ardour/Makefile
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.37 2020/03/10 22:09:18 wiz Exp $
+# $NetBSD: Makefile,v 1.38 2020/04/12 19:36:26 joerg Exp $
DISTNAME= Ardour-5.12.0
PKGNAME= ${DISTNAME:tl}
@@ -15,6 +15,8 @@ HOMEPAGE= https://ardour.org/
COMMENT= Digital Audio Workstation
LICENSE= gnu-gpl-v2
+UNLIMIT_RESOURCES= stacksize
+
USE_TOOLS+= pkg-config perl
USE_LANGUAGES= c c++11
diff --git a/audio/ardour/distinfo b/audio/ardour/distinfo
index 836075bf99b..82e1c27ae4d 100644
--- a/audio/ardour/distinfo
+++ b/audio/ardour/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.6 2020/03/04 10:56:35 nia Exp $
+$NetBSD: distinfo,v 1.7 2020/04/12 19:36:26 joerg Exp $
SHA1 (Ardour-5.12.0.tar.bz2) = 8bf06a17638e89531cab14af67cfd59d7185518f
RMD160 (Ardour-5.12.0.tar.bz2) = 71c25f13445f4036ff7127d071d8c1e0851d5eb8
@@ -7,8 +7,24 @@ Size (Ardour-5.12.0.tar.bz2) = 8852834 bytes
SHA1 (patch-.waf-1.6.11-06ee4b7efbeab1252ed3b11499834d2a_waflib_Tools_c__config.py) = 6b6c776485def8e57ab1ec7fb4b8207ac6d3094a
SHA1 (patch-gtk2__ardour_ardour__ui.cc) = 83d5fe364d068fc619781ae76fb37f8ed4cda41b
SHA1 (patch-gtk2__ardour_wscript) = f78f4028e20d9d917fd1251618136c51ce3fa28a
+SHA1 (patch-libs_ardour_ardour_chan__count.h) = b8b175a41cc7c6fa540e97af9267daaefb7a36d1
+SHA1 (patch-libs_ardour_ardour_chan__mapping.h) = 1eb6a8f6e475545db57755ba1543255221252ad7
+SHA1 (patch-libs_ardour_ardour_plugin__insert.h) = 2c3bf28ebceabb217fb81d5350089745b87f21c8
+SHA1 (patch-libs_ardour_ardour_presentation__info.h) = 5fa8c228a583468a423369f24626eb0d986129f6
+SHA1 (patch-libs_ardour_ardour_tempo.h) = 08c70b1a141fe22c999f64234b4d48e7dc5d8d0f
+SHA1 (patch-libs_ardour_chan__count.cc) = 9ab0958a9641d34f80157706c458f77215227a7d
+SHA1 (patch-libs_ardour_chan__mapping.cc) = 2f6078e25b9fb76f479af82e5b0946343623ce29
+SHA1 (patch-libs_ardour_luabindings.cc) = 4c34733d35fed48860580cae7d3de809a906447f
+SHA1 (patch-libs_ardour_plugin__insert.cc) = b87e903555f5853c3256357c74414650d27d7e9f
+SHA1 (patch-libs_ardour_presentation__info.cc) = e9c89b9519cf7a13682b83b5582c6ebfa6e5948e
+SHA1 (patch-libs_ardour_tempo.cc) = 5796d6f3a51b7763b4a30ae9e2738e657a394b08
SHA1 (patch-libs_backends_jack_jack__audiobackend.cc) = 9fc4201948a6e88711d18d9218e1dacc1dd2700b
SHA1 (patch-libs_backends_jack_jack__audiobackend.h) = e7cd23f39e31d3a4af3ed513b7e41503c4a6b16c
SHA1 (patch-libs_backends_jack_jack__utils.cc) = 61ce895e998e359fa3801bcdd3ce6e83926f6ec0
SHA1 (patch-libs_backends_jack_jack__utils.h) = d2bdfca276271c67f49a06ea63077c52cac803d7
+SHA1 (patch-libs_pbd_id.cc) = 264ec2889f8481972c32df33b307292802925fa1
+SHA1 (patch-libs_pbd_pbd_id.h) = 6ffa31d7bcf88f0cdb3c0f3701dd28426b21e2ca
+SHA1 (patch-libs_timecode_src_time.cc) = cf18341b5ea2050f73c93f67743168b817e29c9d
+SHA1 (patch-libs_timecode_timecode_bbt__time.h) = 3ce496fa6a08717004e222d171cca68ed155b2d4
+SHA1 (patch-libs_timecode_timecode_time.h) = 1b47ce9be05ae98b11dedb07f906bd16fccd525a
SHA1 (patch-wscript) = 9cfa56ac1ccbb9706f009ce4001dc0b55146338b
diff --git a/audio/ardour/patches/patch-libs_ardour_ardour_chan__count.h b/audio/ardour/patches/patch-libs_ardour_ardour_chan__count.h
new file mode 100644
index 00000000000..fc5a0376768
--- /dev/null
+++ b/audio/ardour/patches/patch-libs_ardour_ardour_chan__count.h
@@ -0,0 +1,18 @@
+$NetBSD: patch-libs_ardour_ardour_chan__count.h,v 1.1 2020/04/12 19:36:26 joerg Exp $
+
+Ensure operators are defined in the namespace of one of the arguments.
+
+--- libs/ardour/ardour/chan_count.h.orig 2020-04-11 23:20:16.360459913 +0000
++++ libs/ardour/ardour/chan_count.h
+@@ -207,9 +207,9 @@ private:
+ uint32_t _counts[DataType::num_types];
+ };
+
+-} // namespace ARDOUR
++LIBARDOUR_API std::ostream& operator<<(std::ostream& o, const ChanCount& c);
+
+-LIBARDOUR_API std::ostream& operator<<(std::ostream& o, const ARDOUR::ChanCount& c);
++} // namespace ARDOUR
+
+ #endif // __ardour_chan_count_h__
+
diff --git a/audio/ardour/patches/patch-libs_ardour_ardour_chan__mapping.h b/audio/ardour/patches/patch-libs_ardour_ardour_chan__mapping.h
new file mode 100644
index 00000000000..b85f5fb87af
--- /dev/null
+++ b/audio/ardour/patches/patch-libs_ardour_ardour_chan__mapping.h
@@ -0,0 +1,18 @@
+$NetBSD: patch-libs_ardour_ardour_chan__mapping.h,v 1.1 2020/04/12 19:36:26 joerg Exp $
+
+Ensure operators are defined in the namespace of one of the arguments.
+
+--- libs/ardour/ardour/chan_mapping.h.orig 2020-04-11 23:30:11.328024715 +0000
++++ libs/ardour/ardour/chan_mapping.h
+@@ -118,9 +118,9 @@ private:
+ Mappings _mappings;
+ };
+
+-} // namespace ARDOUR
++std::ostream& operator<<(std::ostream& o, const ChanMapping& m);
+
+-std::ostream& operator<<(std::ostream& o, const ARDOUR::ChanMapping& m);
++} // namespace ARDOUR
+
+ #endif // __ardour_chan_mapping_h__
+
diff --git a/audio/ardour/patches/patch-libs_ardour_ardour_plugin__insert.h b/audio/ardour/patches/patch-libs_ardour_ardour_plugin__insert.h
new file mode 100644
index 00000000000..562183859ce
--- /dev/null
+++ b/audio/ardour/patches/patch-libs_ardour_ardour_plugin__insert.h
@@ -0,0 +1,17 @@
+$NetBSD: patch-libs_ardour_ardour_plugin__insert.h,v 1.1 2020/04/12 19:36:26 joerg Exp $
+
+Ensure operators are defined in the namespace of one of the arguments.
+
+--- libs/ardour/ardour/plugin_insert.h.orig 2020-04-11 23:36:29.754327360 +0000
++++ libs/ardour/ardour/plugin_insert.h
+@@ -386,8 +386,8 @@ class LIBARDOUR_API PluginInsert : publi
+ void preset_load_set_value (uint32_t, float);
+ };
+
+-} // namespace ARDOUR
++std::ostream& operator<<(std::ostream& o, const PluginInsert::Match& m);
+
+-std::ostream& operator<<(std::ostream& o, const ARDOUR::PluginInsert::Match& m);
++} // namespace ARDOUR
+
+ #endif /* __ardour_plugin_insert_h__ */
diff --git a/audio/ardour/patches/patch-libs_ardour_ardour_presentation__info.h b/audio/ardour/patches/patch-libs_ardour_ardour_presentation__info.h
new file mode 100644
index 00000000000..4ccd63c1735
--- /dev/null
+++ b/audio/ardour/patches/patch-libs_ardour_ardour_presentation__info.h
@@ -0,0 +1,17 @@
+$NetBSD: patch-libs_ardour_ardour_presentation__info.h,v 1.1 2020/04/12 19:36:26 joerg Exp $
+
+Ensure operators are defined in the namespace of one of the arguments.
+
+--- libs/ardour/ardour/presentation_info.h.orig 2020-04-11 23:14:40.532791103 +0000
++++ libs/ardour/ardour/presentation_info.h
+@@ -267,8 +267,8 @@ class LIBARDOUR_API PresentationInfo : p
+ static int selection_counter;
+ };
+
+-}
++std::ostream& operator<<(std::ostream& o, PresentationInfo const& rid);
+
+-std::ostream& operator<<(std::ostream& o, ARDOUR::PresentationInfo const& rid);
++}
+
+ #endif /* __libardour_presentation_info_h__ */
diff --git a/audio/ardour/patches/patch-libs_ardour_ardour_tempo.h b/audio/ardour/patches/patch-libs_ardour_ardour_tempo.h
new file mode 100644
index 00000000000..d4a0b396ee5
--- /dev/null
+++ b/audio/ardour/patches/patch-libs_ardour_ardour_tempo.h
@@ -0,0 +1,22 @@
+$NetBSD: patch-libs_ardour_ardour_tempo.h,v 1.1 2020/04/12 19:36:26 joerg Exp $
+
+Ensure operators are defined in the namespace of one of the arguments.
+
+--- libs/ardour/ardour/tempo.h.orig 2020-04-11 23:40:21.653152350 +0000
++++ libs/ardour/ardour/tempo.h
+@@ -618,11 +618,11 @@ private:
+ MeterSection* copy_metrics_and_point (const Metrics& metrics, Metrics& copy, MeterSection* section) const;
+ };
+
+-}; /* namespace ARDOUR */
++LIBARDOUR_API std::ostream& operator<< (std::ostream&, const Meter&);
++LIBARDOUR_API std::ostream& operator<< (std::ostream&, const Tempo&);
++LIBARDOUR_API std::ostream& operator<< (std::ostream&, const MetricSection&);
+
+-LIBARDOUR_API std::ostream& operator<< (std::ostream&, const ARDOUR::Meter&);
+-LIBARDOUR_API std::ostream& operator<< (std::ostream&, const ARDOUR::Tempo&);
+-LIBARDOUR_API std::ostream& operator<< (std::ostream&, const ARDOUR::MetricSection&);
++}; /* namespace ARDOUR */
+
+ namespace PBD {
+ DEFINE_ENUM_CONVERT (ARDOUR::TempoSection::Type)
diff --git a/audio/ardour/patches/patch-libs_ardour_chan__count.cc b/audio/ardour/patches/patch-libs_ardour_chan__count.cc
new file mode 100644
index 00000000000..671b651bfee
--- /dev/null
+++ b/audio/ardour/patches/patch-libs_ardour_chan__count.cc
@@ -0,0 +1,17 @@
+$NetBSD: patch-libs_ardour_chan__count.cc,v 1.1 2020/04/12 19:36:26 joerg Exp $
+
+Ensure operators are defined in the namespace of one of the arguments.
+
+--- libs/ardour/chan_count.cc.orig 2020-04-12 00:31:30.948259759 +0000
++++ libs/ardour/chan_count.cc
+@@ -67,8 +67,8 @@ ChanCount::state(const std::string& name
+ // Statics
+ const ChanCount ChanCount::ZERO = ChanCount();
+
+-} // namespace ARDOUR
+-
+ std::ostream& operator<<(std::ostream& o, const ARDOUR::ChanCount& c) {
+ return o << "AUDIO=" << c.n_audio() << ":MIDI=" << c.n_midi();
+ }
++
++} // namespace ARDOUR
diff --git a/audio/ardour/patches/patch-libs_ardour_chan__mapping.cc b/audio/ardour/patches/patch-libs_ardour_chan__mapping.cc
new file mode 100644
index 00000000000..cd060f81321
--- /dev/null
+++ b/audio/ardour/patches/patch-libs_ardour_chan__mapping.cc
@@ -0,0 +1,23 @@
+$NetBSD: patch-libs_ardour_chan__mapping.cc,v 1.1 2020/04/12 19:36:26 joerg Exp $
+
+Ensure operators are defined in the namespace of one of the arguments.
+
+--- libs/ardour/chan_mapping.cc.orig 2020-04-12 00:31:19.718822358 +0000
++++ libs/ardour/chan_mapping.cc
+@@ -241,10 +241,6 @@ ChanMapping::count () const
+ return rv;
+ }
+
+-
+-
+-} // namespace ARDOUR
+-
+ std::ostream& operator<<(std::ostream& o, const ARDOUR::ChanMapping& cm)
+ {
+ const ARDOUR::ChanMapping::Mappings& mp (cm.mappings());
+@@ -258,3 +254,5 @@ std::ostream& operator<<(std::ostream& o
+
+ return o;
+ }
++
++} // namespace ARDOUR
diff --git a/audio/ardour/patches/patch-libs_ardour_luabindings.cc b/audio/ardour/patches/patch-libs_ardour_luabindings.cc
new file mode 100644
index 00000000000..2ef5a6f06f4
--- /dev/null
+++ b/audio/ardour/patches/patch-libs_ardour_luabindings.cc
@@ -0,0 +1,127 @@
+$NetBSD: patch-libs_ardour_luabindings.cc,v 1.1 2020/04/12 19:36:26 joerg Exp $
+
+Avoid extensive intermediate object chains.
+
+--- libs/ardour/luabindings.cc.orig 2020-04-11 23:24:29.090389555 +0000
++++ libs/ardour/luabindings.cc
+@@ -807,7 +807,10 @@ LuaBindings::common (lua_State* L)
+ .addFunction ("writing", &AutomationList::writing)
+ .addFunction ("touch_enabled", &AutomationList::touch_enabled)
+ .endClass ()
++ .endNamespace ();
+
++ luabridge::getGlobalNamespace (L)
++ .beginNamespace ("ARDOUR")
+ .deriveClass <Location, PBD::StatefulDestructible> ("Location")
+ .addFunction ("name", &Location::name)
+ .addFunction ("locked", &Location::locked)
+@@ -875,7 +878,10 @@ LuaBindings::common (lua_State* L)
+
+ .deriveWSPtrClass <AudioPort, Port> ("AudioPort")
+ .endClass ()
++ .endNamespace ();
+
++ luabridge::getGlobalNamespace (L)
++ .beginNamespace ("ARDOUR")
+ .deriveWSPtrClass <MidiPort, Port> ("MidiPort")
+ .addFunction ("input_active", &MidiPort::input_active)
+ .addFunction ("set_input_active", &MidiPort::set_input_active)
+@@ -1013,7 +1019,10 @@ LuaBindings::common (lua_State* L)
+ .addFunction ("presentation_info_ptr", &Stripable::presentation_info_ptr)
+
+ .endClass ()
++ .endNamespace ();
+
++ luabridge::getGlobalNamespace (L)
++ .beginNamespace ("ARDOUR")
+ .deriveWSPtrClass <VCA, Stripable> ("VCA")
+ .addFunction ("full_name", &VCA::full_name)
+ .addFunction ("number", &VCA::number)
+@@ -1116,7 +1125,10 @@ LuaBindings::common (lua_State* L)
+ .addFunction ("bounce_range", &Track::bounce_range)
+ .addFunction ("playlist", &Track::playlist)
+ .endClass ()
++ .endNamespace ();
+
++ luabridge::getGlobalNamespace (L)
++ .beginNamespace ("ARDOUR")
+ .deriveWSPtrClass <AudioTrack, Track> ("AudioTrack")
+ .endClass ()
+
+@@ -1195,7 +1207,10 @@ LuaBindings::common (lua_State* L)
+ .addFunction ("source", &Region::source)
+ .addFunction ("control", static_cast<boost::shared_ptr<Evoral::Control>(Region::*)(const Evoral::Parameter&, bool)>(&Region::control))
+ .endClass ()
++ .endNamespace ();
+
++ luabridge::getGlobalNamespace (L)
++ .beginNamespace ("ARDOUR")
+ .deriveWSPtrClass <MidiRegion, Region> ("MidiRegion")
+ .addFunction ("do_export", &MidiRegion::do_export)
+ .addFunction ("midi_source", &MidiRegion::midi_source)
+@@ -1298,7 +1313,10 @@ LuaBindings::common (lua_State* L)
+ .addData ("label", &ParameterDescriptor::label)
+ .addStaticFunction ("midi_note_name", &ParameterDescriptor::midi_note_name)
+ .endClass ()
++ .endNamespace ();
+
++ luabridge::getGlobalNamespace (L)
++ .beginNamespace ("ARDOUR")
+ .beginStdVector <boost::shared_ptr<ARDOUR::Processor> > ("ProcessorVector").endClass ()
+
+ .deriveWSPtrClass <Processor, SessionObject> ("Processor")
+@@ -1408,6 +1426,10 @@ LuaBindings::common (lua_State* L)
+ .addFunction ("writable", &AutomationControl::writable)
+ .addFunction ("alist", &AutomationControl::alist)
+ .endClass ()
++ .endNamespace ();
++
++ luabridge::getGlobalNamespace (L)
++ .beginNamespace ("ARDOUR")
+
+ .deriveWSPtrClass <SlavableAutomationControl, AutomationControl> ("SlavableAutomationControl")
+ .addFunction ("add_master", &SlavableAutomationControl::add_master)
+@@ -1501,6 +1523,10 @@ LuaBindings::common (lua_State* L)
+ // <std::list<boost::shared_ptr <AudioTrack> >
+ .beginStdList <boost::shared_ptr<AudioTrack> > ("AudioTrackList")
+ .endClass ()
++ .endNamespace ();
++
++ luabridge::getGlobalNamespace (L)
++ .beginNamespace ("ARDOUR")
+
+ // std::list<boost::shared_ptr <MidiTrack> >
+ .beginStdList <boost::shared_ptr<MidiTrack> > ("MidiTrackList")
+@@ -1647,6 +1673,10 @@ LuaBindings::common (lua_State* L)
+ .deriveClass <TempoSection, MetricSection> ("TempoSection")
+ .addFunction ("c", (double(TempoSection::*)()const)&TempoSection::c)
+ .endClass ()
++ .endNamespace ();
++
++ luabridge::getGlobalNamespace (L)
++ .beginNamespace ("ARDOUR")
+
+ .deriveClass <MeterSection, MetricSection> ("MeterSection")
+ .addCast<Meter> ("to_meter")
+@@ -1745,7 +1775,10 @@ LuaBindings::common (lua_State* L)
+ .addConst ("MeterPeak0dB", ARDOUR::MeterType(MeterPeak0dB))
+ .addConst ("MeterMCP", ARDOUR::MeterType(MeterMCP))
+ .endNamespace ()
++ .endNamespace ();
+
++ luabridge::getGlobalNamespace (L)
++ .beginNamespace ("ARDOUR")
+ .beginNamespace ("MeterPoint")
+ .addConst ("MeterInput", ARDOUR::MeterPoint(MeterInput))
+ .addConst ("MeterPreFader", ARDOUR::MeterPoint(MeterPreFader))
+@@ -1846,7 +1879,10 @@ LuaBindings::common (lua_State* L)
+ .addConst ("RF64_WAV", ARDOUR::HeaderFormat(RF64_WAV))
+ .addConst ("MBWF", ARDOUR::HeaderFormat(MBWF))
+ .endNamespace ()
++ .endNamespace ();
+
++ luabridge::getGlobalNamespace (L)
++ .beginNamespace ("ARDOUR")
+ .beginNamespace ("InsertMergePolicy")
+ .addConst ("Reject", ARDOUR::InsertMergePolicy(InsertMergeReject))
+ .addConst ("Relax", ARDOUR::InsertMergePolicy(InsertMergeRelax))
diff --git a/audio/ardour/patches/patch-libs_ardour_plugin__insert.cc b/audio/ardour/patches/patch-libs_ardour_plugin__insert.cc
new file mode 100644
index 00000000000..9ec82e34ab5
--- /dev/null
+++ b/audio/ardour/patches/patch-libs_ardour_plugin__insert.cc
@@ -0,0 +1,19 @@
+$NetBSD: patch-libs_ardour_plugin__insert.cc,v 1.1 2020/04/12 19:36:26 joerg Exp $
+
+Ensure operators are defined in the namespace of one of the arguments.
+
+--- libs/ardour/plugin_insert.cc.orig 2020-04-12 00:31:11.850055378 +0000
++++ libs/ardour/plugin_insert.cc
+@@ -3098,6 +3098,7 @@ PluginInsert::end_touch (uint32_t param_
+ }
+ }
+
++namespace ARDOUR {
+ std::ostream& operator<<(std::ostream& o, const ARDOUR::PluginInsert::Match& m)
+ {
+ switch (m.method) {
+@@ -3118,3 +3119,4 @@ std::ostream& operator<<(std::ostream& o
+ o << "\n";
+ return o;
+ }
++}
diff --git a/audio/ardour/patches/patch-libs_ardour_presentation__info.cc b/audio/ardour/patches/patch-libs_ardour_presentation__info.cc
new file mode 100644
index 00000000000..847e973daa6
--- /dev/null
+++ b/audio/ardour/patches/patch-libs_ardour_presentation__info.cc
@@ -0,0 +1,17 @@
+$NetBSD: patch-libs_ardour_presentation__info.cc,v 1.1 2020/04/12 19:36:26 joerg Exp $
+
+Ensure operators are defined in the namespace of one of the arguments.
+
+--- libs/ardour/presentation_info.cc.orig 2020-04-12 00:31:00.855675925 +0000
++++ libs/ardour/presentation_info.cc
+@@ -282,8 +282,10 @@ PresentationInfo::operator= (Presentatio
+ return *this;
+ }
+
++namespace ARDOUR {
+ std::ostream&
+ operator<<(std::ostream& o, ARDOUR::PresentationInfo const& pi)
+ {
+ return o << pi.order() << '/' << enum_2_string (pi.flags()) << '/' << pi.color();
+ }
++}
diff --git a/audio/ardour/patches/patch-libs_ardour_tempo.cc b/audio/ardour/patches/patch-libs_ardour_tempo.cc
new file mode 100644
index 00000000000..067d70c2d82
--- /dev/null
+++ b/audio/ardour/patches/patch-libs_ardour_tempo.cc
@@ -0,0 +1,19 @@
+$NetBSD: patch-libs_ardour_tempo.cc,v 1.1 2020/04/12 19:36:26 joerg Exp $
+
+Ensure operators are defined in the namespace of one of the arguments.
+
+--- libs/ardour/tempo.cc.orig 2020-04-12 00:13:33.975439051 +0000
++++ libs/ardour/tempo.cc
+@@ -4872,6 +4872,7 @@ struct bbtcmp {
+ }
+ };
+
++namespace ARDOUR {
+ std::ostream&
+ operator<< (std::ostream& o, const Meter& m) {
+ return o << m.divisions_per_bar() << '/' << m.note_divisor();
+@@ -4898,3 +4899,4 @@ operator<< (std::ostream& o, const Metri
+
+ return o;
+ }
++}
diff --git a/audio/ardour/patches/patch-libs_pbd_id.cc b/audio/ardour/patches/patch-libs_pbd_id.cc
new file mode 100644
index 00000000000..d576d5e0374
--- /dev/null
+++ b/audio/ardour/patches/patch-libs_pbd_id.cc
@@ -0,0 +1,19 @@
+$NetBSD: patch-libs_pbd_id.cc,v 1.1 2020/04/12 19:36:26 joerg Exp $
+
+Ensure operators are defined in the namespace of one of the arguments.
+
+--- libs/pbd/id.cc.orig 2020-04-12 00:33:29.293934558 +0000
++++ libs/pbd/id.cc
+@@ -102,10 +102,11 @@ ID::operator= (const ID& other)
+ return *this;
+ }
+
++namespace PBD {
+ ostream&
+ operator<< (ostream& ostr, const ID& id)
+ {
+ ostr << id.to_s();
+ return ostr;
+ }
+-
++}
diff --git a/audio/ardour/patches/patch-libs_pbd_pbd_id.h b/audio/ardour/patches/patch-libs_pbd_pbd_id.h
new file mode 100644
index 00000000000..e3879771afd
--- /dev/null
+++ b/audio/ardour/patches/patch-libs_pbd_pbd_id.h
@@ -0,0 +1,17 @@
+$NetBSD: patch-libs_pbd_pbd_id.h,v 1.1 2020/04/12 19:36:26 joerg Exp $
+
+Ensure operators are defined in the namespace of one of the arguments.
+
+--- libs/pbd/pbd/id.h.orig 2020-04-11 23:41:22.316485469 +0000
++++ libs/pbd/pbd/id.h
+@@ -73,8 +73,8 @@ class LIBPBD_API ID {
+ static uint64_t _counter;
+ };
+
+-}
++LIBPBD_API std::ostream& operator<< (std::ostream& ostr, const ID&);
+
+-LIBPBD_API std::ostream& operator<< (std::ostream& ostr, const PBD::ID&);
++}
+
+ #endif /* __pbd_id_h__ */
diff --git a/audio/ardour/patches/patch-libs_timecode_src_time.cc b/audio/ardour/patches/patch-libs_timecode_src_time.cc
new file mode 100644
index 00000000000..8676bee270a
--- /dev/null
+++ b/audio/ardour/patches/patch-libs_timecode_src_time.cc
@@ -0,0 +1,19 @@
+$NetBSD: patch-libs_timecode_src_time.cc,v 1.1 2020/04/12 19:36:26 joerg Exp $
+
+Ensure operators are defined in the namespace of one of the arguments.
+
+--- libs/timecode/src/time.cc.orig 2020-04-12 00:30:24.372761546 +0000
++++ libs/timecode/src/time.cc
+@@ -844,10 +844,10 @@ sample_to_timecode (
+ timecode.drop = timecode_drop_frames;
+ }
+
+-} // namespace Timecode
+-
+ std::ostream&
+ operator<<(std::ostream& ostr, const Timecode::Time& t)
+ {
+ return t.print (ostr);
+ }
++
++} // namespace Timecode
diff --git a/audio/ardour/patches/patch-libs_timecode_timecode_bbt__time.h b/audio/ardour/patches/patch-libs_timecode_timecode_bbt__time.h
new file mode 100644
index 00000000000..25c63b9fb4c
--- /dev/null
+++ b/audio/ardour/patches/patch-libs_timecode_timecode_bbt__time.h
@@ -0,0 +1,33 @@
+$NetBSD: patch-libs_timecode_timecode_bbt__time.h,v 1.1 2020/04/12 19:36:26 joerg Exp $
+
+Ensure operators are defined in the namespace of one of the arguments.
+
+--- libs/timecode/timecode/bbt_time.h.orig 2020-04-12 00:17:52.012246383 +0000
++++ libs/timecode/timecode/bbt_time.h
+@@ -76,17 +76,15 @@ struct LIBTIMECODE_API BBT_Time {
+ }
+ };
+
+-}
+-
+ inline std::ostream&
+-operator<< (std::ostream& o, const Timecode::BBT_Time& bbt)
++operator<< (std::ostream& o, const BBT_Time& bbt)
+ {
+ o << bbt.bars << '|' << bbt.beats << '|' << bbt.ticks;
+ return o;
+ }
+
+ inline std::ostream&
+-print_padded (std::ostream& o, const Timecode::BBT_Time& bbt)
++print_padded (std::ostream& o, const BBT_Time& bbt)
+ {
+ o << std::setfill ('0') << std::right
+ << std::setw (3) << bbt.bars << "|"
+@@ -96,4 +94,6 @@ print_padded (std::ostream& o, const Tim
+ return o;
+ }
+
++}
++
+ #endif /* __timecode_bbt_time_h__ */
diff --git a/audio/ardour/patches/patch-libs_timecode_timecode_time.h b/audio/ardour/patches/patch-libs_timecode_timecode_time.h
new file mode 100644
index 00000000000..e945d21dd88
--- /dev/null
+++ b/audio/ardour/patches/patch-libs_timecode_timecode_time.h
@@ -0,0 +1,17 @@
+$NetBSD: patch-libs_timecode_timecode_time.h,v 1.1 2020/04/12 19:36:26 joerg Exp $
+
+Ensure operators are defined in the namespace of one of the arguments.
+
+--- libs/timecode/timecode/time.h.orig 2020-04-11 23:54:59.821584371 +0000
++++ libs/timecode/timecode/time.h
+@@ -140,9 +140,8 @@ void LIBTIMECODE_API sample_to_timecode
+ bool offset_is_negative, int64_t offset_samples
+ );
+
++extern LIBTIMECODE_API std::ostream& operator<< (std::ostream& ostr, const Time& t);
+
+ } // namespace Timecode
+
+-extern LIBTIMECODE_API std::ostream& operator<< (std::ostream& ostr, const Timecode::Time& t);
+-
+ #endif // __timecode_time_h__