Hi :) I help maintain the spack package manager when I can, currently users with intel compilers cannot build / install any version after 2.7.1 due to the usage of __builtin_shuffle (for some reason Intel still doesn't support this).
https://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/src/sfnt/pngshim.c#n64 As far as I can tell, the easiest thing to do is to just disable the vectorized code (see patch below). I do not experience any compilation problems, but was unable to determine how to test this code. I could only find the fuzzer on GitHub and it wasn't clear to me which executable would even test this :/ Would the freetype team intend on accepting this patch? I will be creating a slightly different one for spack (minimal diff just changing 2 lines), but I took the liberty of re-lining up the operators since it looks like that's what was once going on here :) diff --git a/src/sfnt/pngshim.c b/src/sfnt/pngshim.c index 3acc1d551..ff40eab66 100644 --- a/src/sfnt/pngshim.c +++ b/src/sfnt/pngshim.c @@ -61,11 +61,13 @@ /* predates clang; the `__BYTE_ORDER__' preprocessor symbol was */ /* introduced in gcc 4.6 and clang 3.2, respectively. */ /* `__builtin_shuffle' for gcc was introduced in gcc 4.7.0. */ -#if ( ( defined( __GNUC__ ) && \ - ( ( __GNUC__ >= 5 ) || \ - ( ( __GNUC__ == 4 ) && ( __GNUC_MINOR__ >= 7 ) ) ) ) || \ - ( defined( __clang__ ) && \ - ( ( __clang_major__ >= 4 ) || \ + /* Intel compilers do not currently support __builtin_shuffle. */ +#if !defined(__INTEL_COMPILER) /* NOTE: Intel check must be first. */ && \ + ( ( defined( __GNUC__ ) && \ + ( ( __GNUC__ >= 5 ) || \ + ( ( __GNUC__ == 4 ) && ( __GNUC_MINOR__ >= 7 ) ) ) ) || \ + ( defined( __clang__ ) && \ + ( ( __clang_major__ >= 4 ) || \ ( ( __clang_major__ == 3 ) && ( __clang_minor__ >= 2 ) ) ) ) ) && \ defined( __OPTIMIZE__ ) && \ defined( __SSE__ ) && \ Please let me know what you think / if there are any changes you would like. Thanks for freetype! -Stephen McDowell