aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Weisgerber <naddy@FreeBSD.org>2022-10-09 15:09:16 +0000
committerChristian Weisgerber <naddy@FreeBSD.org>2022-10-09 19:20:08 +0000
commit26a312df880099350f58d2756766c00bb664b9bf (patch)
tree1568149801c3381b3255b7d2c3e854df97e85886
parente477580f73f11c0dc522ad9e32c0d2808b8325c5 (diff)
downloadports-26a312df880099350f58d2756766c00bb664b9bf.tar.gz
ports-26a312df880099350f58d2756766c00bb664b9bf.zip
audio/flac: fix build of x86 intrinsic-optimized code for clang 14+
Add upstream fix "Assume Clang supports x86 intrinsics up to FMA" to keep support for SSSE3, AVX2, etc. when compiled with clang versions 14 and later. Obtained from: https://github.com/xiph/flac/commit/90c0562d4eb302b01d9b82c75a7f6a66261c5546 MFH: 2022Q4 (cherry picked from commit 482804eb2cc0482d2e0e87dfc9d1e7bf6eb78d02)
-rw-r--r--audio/flac/Makefile1
-rw-r--r--audio/flac/files/patch-src_libFLAC_include_private_cpu.h41
2 files changed, 42 insertions, 0 deletions
diff --git a/audio/flac/Makefile b/audio/flac/Makefile
index b0d23cd0a4ca..29c6f0fe134a 100644
--- a/audio/flac/Makefile
+++ b/audio/flac/Makefile
@@ -1,5 +1,6 @@
PORTNAME= flac
PORTVERSION= 1.4.1
+PORTREVISION= 1
CATEGORIES= audio
MASTER_SITES= https://downloads.xiph.org/releases/flac/ \
https://ftp.osuosl.org/pub/xiph/releases/flac/
diff --git a/audio/flac/files/patch-src_libFLAC_include_private_cpu.h b/audio/flac/files/patch-src_libFLAC_include_private_cpu.h
new file mode 100644
index 000000000000..9837d6f10ae2
--- /dev/null
+++ b/audio/flac/files/patch-src_libFLAC_include_private_cpu.h
@@ -0,0 +1,41 @@
+Assume Clang supports x86 intrinsics up to FMA
+https://github.com/xiph/flac/commit/90c0562d4eb302b01d9b82c75a7f6a66261c5546
+
+--- src/libFLAC/include/private/cpu.h.orig 2022-09-21 18:57:31 UTC
++++ src/libFLAC/include/private/cpu.h
+@@ -82,28 +82,14 @@
+ #elif defined __clang__ && __has_attribute(__target__) /* clang */
+ #define FLAC__SSE_TARGET(x) __attribute__ ((__target__ (x)))
+ #define FLAC__FAST_MATH_TARGET(x) __attribute__ ((__target__ (x)))
+- #if __has_builtin(__builtin_ia32_maxps)
+- #define FLAC__SSE_SUPPORTED 1
+- #endif
+- #if __has_builtin(__builtin_ia32_pmuludq128)
+- #define FLAC__SSE2_SUPPORTED 1
+- #endif
+- #if __has_builtin(__builtin_ia32_pabsd128)
+- #define FLAC__SSSE3_SUPPORTED 1
+- #endif
+- #if __has_builtin(__builtin_ia32_pmuldq128)
+- #define FLAC__SSE4_1_SUPPORTED 1
+- #endif
++ #define FLAC__SSE_SUPPORTED 1
++ #define FLAC__SSE2_SUPPORTED 1
++ #define FLAC__SSSE3_SUPPORTED 1
++ #define FLAC__SSE4_1_SUPPORTED 1
+ #ifdef FLAC__USE_AVX
+- #if __has_builtin(__builtin_ia32_maxps256)
+- #define FLAC__AVX_SUPPORTED 1
+- #endif
+- #if __has_builtin(__builtin_ia32_pabsd256)
+- #define FLAC__AVX2_SUPPORTED 1
+- #endif
+- #if __has_builtin(__builtin_ia32_vfmaddps)
+- #define FLAC__FMA_SUPPORTED 1
+- #endif
++ #define FLAC__AVX_SUPPORTED 1
++ #define FLAC__AVX2_SUPPORTED 1
++ #define FLAC__FMA_SUPPORTED 1
+ #endif
+ #elif defined __GNUC__ && !defined __clang__ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 9)) /* GCC 4.9+ */
+ #define FLAC__SSE_TARGET(x) __attribute__ ((__target__ (x)))