diff --git a/graphics/openexr/Makefile b/graphics/openexr/Makefile index 87011420e1b1..26c735c4849f 100644 --- a/graphics/openexr/Makefile +++ b/graphics/openexr/Makefile @@ -1,85 +1,85 @@ PORTNAME= openexr PORTVERSION= 3.1.6 -PORTREVISION= 0 +PORTREVISION= 1 CATEGORIES= graphics devel MAINTAINER= mandree@FreeBSD.org COMMENT= High dynamic-range (HDR) image file format WWW= https://www.openexr.com/ LICENSE= BSD3CLAUSE # exact version required to avoid hard-to-debug issues LIB_DEPENDS= libImath-3_1.so.29:math/Imath USES= cmake compiler:c++14-lang cpe pathfix pkgconfig USE_GITHUB= yes GH_TUPLE= AcademySoftwareFoundation:openexr:v${PORTVERSION} USE_LDCONFIG= yes CMAKE_ARGS+= -DCMAKE_DEBUG_POSTFIX= CPPFLAGS+= -I. # must be linked with -l{thr|pthread} explicitly LDFLAGS+= -lpthread -PATCH_STRIP= -p0 +PATCH_STRIP= -p1 _MAJORVER= 3_1 _VER= 30 _MINVER= 6 _PLVER= 1 PLIST_SUB+= MAJORVER=${_MAJORVER} \ VER=${_VER} \ MINVER=${_MINVER} \ PLVER=${_PLVER} PORTDOCS= * PORTEXAMPLES= * OPTIONS_DEFINE= DOCS EXAMPLES OPTIONS_SUB= yes DOCS_BUILD_DEPENDS=breathe-apidoc:devel/py-breathe \ ${PYTHON_PKGNAMEPREFIX}sphinx_press_theme>=0:textproc/py-sphinx_press_theme DOCS_CMAKE_BOOL=BUILD_DOCS DOCS_CMAKE_ON= -DPython_EXECUTABLE:STRING=${PYTHON_CMD} DOCS_USES= python:build _DOCSRCDIR1= ${WRKSRC} _DOC_FILES1= CHANGES.md CONTRIBUTING.md GOVERNANCE.md LICENSE.md SECURITY.md \ CODE_OF_CONDUCT.md CONTRIBUTORS.md README.md # too many reports about compilation failures, so # sanity check we are using the same C++ standard library _imath_libcxx= ${COMPILER_FEATURES:Mlib*c++} pre-configure: @${READELF} -d ${LOCALBASE}/lib/libImath.so \ | ${EGREP} -q '\.*\[${_imath_libcxx:C/\+/\\+/g}\.' \ || { ${ECHO_CMD} "*** Your Imath package uses a different C++ standard library than ***" ; \ ${ECHO_CMD} "*** OpenEXR would. Please recompile and reinstall Imath with the ***" ; \ ${ECHO_CMD} "*** same C++ std. library before trying to build OpenEXR. Abort. ***" ; \ exit 1; } post-install-DOCS-on: @${MKDIR} ${STAGEDIR}${DOCSDIR} ${INSTALL_DATA} ${_DOC_FILES1:S|^|${_DOCSRCDIR1}/|} ${STAGEDIR}${DOCSDIR} ( cd ${BUILD_WRKSRC}/docs/sphinx && ${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR} ) ${RM} -r ${STAGEDIR}${DOCSDIR}/.??* ${STAGEDIR}${DOCSDIR}/../OpenEXR/sphinx post-install-DOCS-off: @${RMDIR} ${STAGEDIR}${PREFIX}/share/doc/${PORTNAME} 2>/dev/null || : post-install-EXAMPLES-on: ${MV} \ ${STAGEDIR}${PREFIX}/share/doc/OpenEXR/examples/ ${STAGEDIR}${EXAMPLESDIR} @${RMDIR} ${STAGEDIR}${PREFIX}/share/doc/OpenEXR 2>/dev/null || : post-install-EXAMPLES-off: ${RM} -R ${STAGEDIR}${PREFIX}/share/doc/OpenEXR/examples/ @${RMDIR} ${STAGEDIR}${PREFIX}/share/doc/OpenEXR 2>/dev/null || : do-test: cd ${BUILD_WRKSRC} && ctest -j ${MAKE_JOBS_NUMBER} .include diff --git a/graphics/openexr/files/patch-PR1354-3f97750d1ec203e7d7eb8d5f30f3d5e7e68ad720 b/graphics/openexr/files/patch-PR1354-3f97750d1ec203e7d7eb8d5f30f3d5e7e68ad720 new file mode 100644 index 000000000000..edd1bb3ecc08 --- /dev/null +++ b/graphics/openexr/files/patch-PR1354-3f97750d1ec203e7d7eb8d5f30f3d5e7e68ad720 @@ -0,0 +1,25 @@ +From 3f97750d1ec203e7d7eb8d5f30f3d5e7e68ad720 Mon Sep 17 00:00:00 2001 +From: Cary Phillips +Date: Thu, 16 Mar 2023 07:23:18 -0700 +Subject: [PATCH] Test for AVC in unpack.c (#1354) + +Addresses #1353 + +Signed-off-by: Cary Phillips +--- + src/lib/OpenEXRCore/unpack.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/lib/OpenEXRCore/unpack.c b/src/lib/OpenEXRCore/unpack.c +index 606d7c3eb..ac4e259f3 100644 +--- a/src/lib/OpenEXRCore/unpack.c ++++ b/src/lib/OpenEXRCore/unpack.c +@@ -37,7 +37,7 @@ half_to_float8 (float* out, const uint16_t* src) + } + #endif + +-#if (defined(__x86_64__) || defined(_M_X64)) && \ ++#if (defined(__x86_64__) || defined(_M_X64)) && defined(__AVX__) && \ + (defined(__F16C__) || defined(__GNUC__) || defined(__clang__)) + + # if defined(__F16C__) diff --git a/graphics/openexr/files/patch-PR1366-a41a736d64e3d93baffef1042d4a3d1aaf74f1c9 b/graphics/openexr/files/patch-PR1366-a41a736d64e3d93baffef1042d4a3d1aaf74f1c9 new file mode 100644 index 000000000000..054dc785eec5 --- /dev/null +++ b/graphics/openexr/files/patch-PR1366-a41a736d64e3d93baffef1042d4a3d1aaf74f1c9 @@ -0,0 +1,98 @@ +From a41a736d64e3d93baffef1042d4a3d1aaf74f1c9 Mon Sep 17 00:00:00 2001 +From: Aras Pranckevicius +Date: Mon, 20 Mar 2023 19:31:42 +0200 +Subject: [PATCH] Fix ARMv7 build by making recent ZIP NEON optimizations be + ARMv8 (aarch64) only + +Should fix #1365. Recent PR (#1348) added NEON accelerated code paths +for ZIP filtering. But that code uses several instructions that are +ARMv8 (aarch64) only, and thus fail building on 32-bit ARM (armv7) +platforms. Make these optimizations only kick in when building +for 64-bit ARM platforms. + +Signed-off-by: Aras Pranckevicius +--- + src/lib/OpenEXR/ImfSimd.h | 4 ++++ + src/lib/OpenEXR/ImfZip.cpp | 6 +++--- + src/lib/OpenEXRCore/internal_zip.c | 8 ++++---- + 3 files changed, 11 insertions(+), 7 deletions(-) + +diff --git a/src/lib/OpenEXR/ImfSimd.h b/src/lib/OpenEXR/ImfSimd.h +index 3053a5d4e..d1f064525 100644 +--- a/src/lib/OpenEXR/ImfSimd.h ++++ b/src/lib/OpenEXR/ImfSimd.h +@@ -46,6 +46,10 @@ + # define IMF_HAVE_NEON + #endif + ++#if defined(__aarch64__) ++# define IMF_HAVE_NEON_AARCH64 1 ++#endif ++ + extern "C" { + #ifdef IMF_HAVE_SSE2 + # include +diff --git a/src/lib/OpenEXR/ImfZip.cpp b/src/lib/OpenEXR/ImfZip.cpp +index 0e2b031d8..8dd53bea9 100644 +--- a/src/lib/OpenEXR/ImfZip.cpp ++++ b/src/lib/OpenEXR/ImfZip.cpp +@@ -160,7 +160,7 @@ reconstruct_sse41 (char* buf, size_t outSize) + + #endif + +-#ifdef IMF_HAVE_NEON ++#ifdef IMF_HAVE_NEON_AARCH64 + + void + reconstruct_neon (char* buf, size_t outSize) +@@ -262,7 +262,7 @@ interleave_sse2 (const char* source, size_t outSize, char* out) + + #endif + +-#ifdef IMF_HAVE_NEON ++#ifdef IMF_HAVE_NEON_AARCH64 + + void + interleave_neon (const char* source, size_t outSize, char* out) +@@ -380,7 +380,7 @@ Zip::initializeFuncs () + } + #endif + +-#ifdef IMF_HAVE_NEON ++#ifdef IMF_HAVE_NEON_AARCH64 + reconstruct = reconstruct_neon; + interleave = interleave_neon; + #endif +diff --git a/src/lib/OpenEXRCore/internal_zip.c b/src/lib/OpenEXRCore/internal_zip.c +index e829e6d7c..1374cab0d 100644 +--- a/src/lib/OpenEXRCore/internal_zip.c ++++ b/src/lib/OpenEXRCore/internal_zip.c +@@ -24,8 +24,8 @@ + # define IMF_HAVE_SSE4_1 1 + # include + #endif +-#if defined(__ARM_NEON) +-# define IMF_HAVE_NEON 1 ++#if defined(__aarch64__) ++# define IMF_HAVE_NEON_AARCH64 1 + # include + #endif + +@@ -78,7 +78,7 @@ reconstruct (uint8_t* buf, uint64_t outSize) + prev = d; + } + } +-#elif defined(IMF_HAVE_NEON) ++#elif defined(IMF_HAVE_NEON_AARCH64) + static void + reconstruct (uint8_t* buf, uint64_t outSize) + { +@@ -174,7 +174,7 @@ interleave (uint8_t* out, const uint8_t* source, uint64_t outSize) + *(sOut++) = (i % 2 == 0) ? *(t1++) : *(t2++); + } + +-#elif defined(IMF_HAVE_NEON) ++#elif defined(IMF_HAVE_NEON_AARCH64) + static void + interleave (uint8_t* out, const uint8_t* source, uint64_t outSize) + { diff --git a/graphics/openexr/files/patch-lib_OpenEXR_ImfDwaCompressor.cpp b/graphics/openexr/files/patch-lib_OpenEXR_ImfDwaCompressor.cpp new file mode 100644 index 000000000000..5b908fdad69e --- /dev/null +++ b/graphics/openexr/files/patch-lib_OpenEXR_ImfDwaCompressor.cpp @@ -0,0 +1,11 @@ +--- ./src/lib/OpenEXR/ImfDwaCompressor.cpp.orig 2023-03-05 20:23:47 UTC ++++ ./src/lib/OpenEXR/ImfDwaCompressor.cpp +@@ -2888,7 +2888,7 @@ DwaCompressor::initializeFuncs() + fromHalfZigZag = fromHalfZigZag_f16c; + } + +-#ifdef IMF_HAVE_NEON ++#ifdef IMF_HAVE_NEON_AARCH64 + { + convertFloatToHalf64 = convertFloatToHalf64_neon; + fromHalfZigZag = fromHalfZigZag_neon; diff --git a/graphics/openexr/files/patch-lib_OpenEXR_ImfDwaCompressorSimd.h b/graphics/openexr/files/patch-lib_OpenEXR_ImfDwaCompressorSimd.h new file mode 100644 index 000000000000..e9eff7e1a909 --- /dev/null +++ b/graphics/openexr/files/patch-lib_OpenEXR_ImfDwaCompressorSimd.h @@ -0,0 +1,29 @@ +--- ./src/lib/OpenEXR/ImfDwaCompressorSimd.h.orig 2023-03-05 20:23:47 UTC ++++ ./src/lib/OpenEXR/ImfDwaCompressorSimd.h +@@ -395,7 +395,7 @@ convertFloatToHalf64_scalar (unsigned short* dst, floa + dst[i] = ((half) src[i]).bits (); + } + +-#ifdef IMF_HAVE_NEON ++#ifdef IMF_HAVE_NEON_AARCH64 + + void + convertFloatToHalf64_neon (unsigned short* dst, float* src) +@@ -821,7 +821,7 @@ fromHalfZigZag_f16c (unsigned short* src, float* dst) + #endif /* defined IMF_HAVE_GCC_INLINEASM_X86_64 */ + } + +-#ifdef IMF_HAVE_NEON ++#ifdef IMF_HAVE_NEON_AARCH64 + + + void +@@ -856,7 +856,7 @@ fromHalfZigZag_neon(unsigned short* __restrict__ src, + } + } + +-#endif // IMF_HAVE_NEON ++#endif // IMF_HAVE_NEON_AARCH64 + + // + // Inverse 8x8 DCT, only inverting the DC. This assumes that diff --git a/graphics/openexr/files/patch-test_OpenEXRTest_testDwaCompressorSimd.cpp b/graphics/openexr/files/patch-test_OpenEXRTest_testDwaCompressorSimd.cpp new file mode 100644 index 000000000000..4d9991f463d3 --- /dev/null +++ b/graphics/openexr/files/patch-test_OpenEXRTest_testDwaCompressorSimd.cpp @@ -0,0 +1,38 @@ +--- ./src/test/OpenEXRTest/testDwaCompressorSimd.cpp.orig 2023-03-05 20:23:47 UTC ++++ ./src/test/OpenEXRTest/testDwaCompressorSimd.cpp +@@ -401,7 +401,7 @@ testFloatToHalf() + } + } + +-#ifdef IMF_HAVE_NEON ++#ifdef IMF_HAVE_NEON_AARCH64 + { + cout << " convertFloatToHalf64_neon()" << endl; + for (int iter = 0; iter < numIter; ++iter) +@@ -430,7 +430,7 @@ testFloatToHalf() + } + } + } +- #endif // IMF_HAVE_NEON ++ #endif // IMF_HAVE_NEON_AARCH64 + } + + // +@@ -516,7 +516,7 @@ testFromHalfZigZag() + } // iter + } // f16c + +-#ifdef IMF_HAVE_NEON ++#ifdef IMF_HAVE_NEON_AARCH64 + { + const int numIter = 1000000; + Rand48 rand48 (0); +@@ -553,7 +553,7 @@ testFromHalfZigZag() + } // iter + } // neon + +-#endif // IMF_HAVE_NEON ++#endif // IMF_HAVE_NEON_AARCH64 + } + +