commit: acf9acf595f777967f52efca811a3028d7af8431 Author: Violet Purcell <vimproved <AT> inventati <DOT> org> AuthorDate: Fri Sep 22 01:17:20 2023 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Fri Sep 22 15:42:14 2023 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=acf9acf5
media-sound/ardour: Improve libc++ fix This commit makes the libc++ fix for ardour use the fix from Steinberg's upstream vst3 sdk, which actually provides an implementation for AtomicAdd, unlike the previous fix. Additionally, this fix does not require an extra configure arg. Upstream-PR: https://github.com/Ardour/ardour/pull/822 Signed-off-by: Violet Purcell <vimproved <AT> inventati.org> Closes: https://github.com/gentoo/gentoo/pull/32981 Signed-off-by: Sam James <sam <AT> gentoo.org> .../{ardour-7.4-r2.ebuild => ardour-7.4-r3.ebuild} | 2 - .../{ardour-7.5.ebuild => ardour-7.5-r1.ebuild} | 2 - media-sound/ardour/ardour-9999.ebuild | 2 - media-sound/ardour/files/ardour-7.4-libc++.patch | 56 +++++++++++++--------- 4 files changed, 33 insertions(+), 29 deletions(-) diff --git a/media-sound/ardour/ardour-7.4-r2.ebuild b/media-sound/ardour/ardour-7.4-r3.ebuild similarity index 98% rename from media-sound/ardour/ardour-7.4-r2.ebuild rename to media-sound/ardour/ardour-7.4-r3.ebuild index 2bfcbebca1ea..0fee9b81252e 100644 --- a/media-sound/ardour/ardour-7.4-r2.ebuild +++ b/media-sound/ardour/ardour-7.4-r3.ebuild @@ -146,8 +146,6 @@ src_configure() { # not possible right now --use-external-libs ) - [[ "$(tc-get-cxx-stdlib)" = "libc++" ]] && myconf+=( --use-libc++ ) - waf-utils_src_configure "${myconf[@]}" } diff --git a/media-sound/ardour/ardour-7.5.ebuild b/media-sound/ardour/ardour-7.5-r1.ebuild similarity index 98% rename from media-sound/ardour/ardour-7.5.ebuild rename to media-sound/ardour/ardour-7.5-r1.ebuild index 2bef74d90d7e..e012233b45d4 100644 --- a/media-sound/ardour/ardour-7.5.ebuild +++ b/media-sound/ardour/ardour-7.5-r1.ebuild @@ -146,8 +146,6 @@ src_configure() { # not possible right now --use-external-libs ) - [[ "$(tc-get-cxx-stdlib)" = "libc++" ]] && myconf+=( --use-libc++ ) - waf-utils_src_configure "${myconf[@]}" } diff --git a/media-sound/ardour/ardour-9999.ebuild b/media-sound/ardour/ardour-9999.ebuild index 607dfeed3930..029d71ed7696 100644 --- a/media-sound/ardour/ardour-9999.ebuild +++ b/media-sound/ardour/ardour-9999.ebuild @@ -146,8 +146,6 @@ src_configure() { # not possible right now --use-external-libs ) - [[ "$(tc-get-cxx-stdlib)" = "libc++" ]] && myconf+=( --use-libc++ ) - waf-utils_src_configure "${myconf[@]}" } diff --git a/media-sound/ardour/files/ardour-7.4-libc++.patch b/media-sound/ardour/files/ardour-7.4-libc++.patch index 85f13ba47dbc..a596fafba0f7 100644 --- a/media-sound/ardour/files/ardour-7.4-libc++.patch +++ b/media-sound/ardour/files/ardour-7.4-libc++.patch @@ -1,39 +1,49 @@ -From d8e42490b18bd0c8a827d96608e951bf5bc875e4 Mon Sep 17 00:00:00 2001 +From https://github.com/Ardour/ardour/pull/822/commits/c2ac82bfbacc583c49b306826dedec754633bbe7 Mon Sep 17 00:00:00 2001 From: Violet Purcell <[email protected]> -Date: Sun, 4 Jun 2023 04:56:58 -0400 -Subject: [PATCH] Fix build with libc++ on linux +Date: Thu, 21 Sep 2023 21:09:30 -0400 +Subject: [PATCH] Backport VST3 libc++ fix on linux +LLVM libc++ does not have the ext/atomicity.h header. This fix is copied +from the upstream vst3_pluginterfaces repo. + +Signed-off-by: Violet Purcell <[email protected]> --- a/libs/vst3/pluginterfaces/base/funknown.cpp +++ b/libs/vst3/pluginterfaces/base/funknown.cpp -@@ -44,7 +44,9 @@ +@@ -44,13 +44,23 @@ #endif #if SMTG_OS_LINUX -+#ifndef USE_LIBCXX ++#if !defined (SMTG_USE_STDATOMIC_H) ++#if defined (_LIBCPP_VERSION) ++#define SMTG_USE_STDATOMIC_H 1 ++#else #include <ext/atomicity.h> ++#endif +#endif /* UUID */ #include <string> #include <boost/uuid/uuid.hpp> -@@ -83,7 +85,7 @@ int32 PLUGIN_API atomicAdd (int32& var, int32 d) + #include <boost/uuid/uuid_generators.hpp> + #endif + ++#if defined (SMTG_USE_STDATOMIC_H) && SMTG_USE_STDATOMIC_H ++#include <stdatomic.h> ++#endif ++ + namespace Steinberg { + + //------------------------------------------------------------------------ +@@ -79,7 +89,9 @@ namespace FUnknownPrivate { + //------------------------------------------------------------------------ + int32 PLUGIN_API atomicAdd (int32& var, int32 d) + { +-#if SMTG_OS_WINDOWS ++#if SMTG_USE_STDATOMIC_H ++ return atomic_fetch_add (reinterpret_cast<atomic_int_least32_t*> (&var), d) +d; ++#elif SMTG_OS_WINDOWS return InterlockedExchangeAdd ((volatile long int*)&var, d) + d; #elif SMTG_OS_MACOS return OSAtomicAdd32Barrier (d, (int32_t*)&var); --#elif SMTG_OS_LINUX -+#elif SMTG_OS_LINUX && !defined USE_LIBCXX - __gnu_cxx::__atomic_add (&var, d); - return var; - #else ---- a/wscript -+++ b/wscript -@@ -545,6 +545,8 @@ int main() { return 0; }''', - if opt.use_libcpp or conf.env['build_host'] in [ 'yosemite', 'el_capitan', 'sierra', 'high_sierra', 'mojave', 'catalina' ]: - cxx_flags.append('--stdlib=libc++') - linker_flags.append('--stdlib=libc++') -+ if platform == 'linux': -+ cxx_flags.append('-DUSE_LIBCXX') - - if conf.options.cxx11 or conf.env['build_host'] in [ 'mavericks', 'yosemite', 'el_capitan', 'sierra', 'high_sierra', 'mojave', 'catalina' , 'bigsur', 'monterey', 'ventura' ]: - conf.check_cxx(cxxflags=["-std=c++11"]) -- -2.40.1 +2.42.0 +
