git: 033e20bf95a5 - 2024Q4 - audio/sfizz: fix build with clang 19

From: Dimitry Andric <dim_at_FreeBSD.org>
Date: Sun, 17 Nov 2024 18:43:19 UTC
The branch 2024Q4 has been updated by dim:

URL: https://cgit.FreeBSD.org/ports/commit/?id=033e20bf95a5b274589d0a15def3a60629a2a618

commit 033e20bf95a5b274589d0a15def3a60629a2a618
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2024-11-16 13:28:18 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2024-11-17 18:42:09 +0000

    audio/sfizz: fix build with clang 19
    
    Clang 19 now implements CWG 96 [1], which requires a template argument
    list after a 'template' keyword, resulting in errors similar to:
    
      /wrkdirs/usr/ports/audio/sfizz/work/sfizz-1.2.3/external/atomic_queue/include/atomic_queue/atomic_queue.h:394:31: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw]
        394 |         return Base::template do_pop_any(states_[index], elements_[index]);
            |                               ^
      /wrkdirs/usr/ports/audio/sfizz/work/sfizz-1.2.3/external/atomic_queue/include/atomic_queue/atomic_queue.h:400:24: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw]
        400 |         Base::template do_push_any(std::forward<U>(element), states_[index], elements_[index]);
            |                        ^
      /wrkdirs/usr/ports/audio/sfizz/work/sfizz-1.2.3/external/atomic_queue/include/atomic_queue/atomic_queue.h:522:31: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw]
        522 |         return Base::template do_pop_any(states_[index], elements_[index]);
            |                               ^
      /wrkdirs/usr/ports/audio/sfizz/work/sfizz-1.2.3/external/atomic_queue/include/atomic_queue/atomic_queue.h:528:24: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw]
        528 |         Base::template do_push_any(std::forward<U>(element), states_[index], elements_[index]);
            |                        ^
    
    In all these cases, appending "<>" is enough to satisfy the constraint.
    This can be done with a REINPLACE_CMD in the post-patch phase.
    
    [1] https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#96
    
    PR:             282796
    Approved by:    yuri (maintainer)
    MFH:            2024Q4
    
    (cherry picked from commit 96997562fb8b572c0da300f0c676fb89f8f3aabe)
---
 audio/sfizz/Makefile | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/audio/sfizz/Makefile b/audio/sfizz/Makefile
index bf6b20b8827d..6f026583a1fa 100644
--- a/audio/sfizz/Makefile
+++ b/audio/sfizz/Makefile
@@ -69,6 +69,11 @@ VST_CMAKE_BOOL=		SFIZZ_VST
 
 .include <bsd.port.pre.mk>
 
+post-patch:
+	@${REINPLACE_CMD} \
+		-E -e 's/(template do_(push|pop)_any)/\1<>/' \
+		${WRKSRC}/external/atomic_queue/include/atomic_queue/atomic_queue.h
+
 post-install-LV2-on:
 	@${STRIP_CMD} \
 		${STAGEDIR}${PREFIX}/lib/lv2/sfizz.lv2/Contents/Binary/sfizz.so \