Source: https://gitlab.alpinelinux.org/alpine/aports/-/blob/master/community/openimageio/0001-fix-compile-error.patch

Fixes the following compiler error:
/builddir/openimageio-3.0.6.1/src/libtexture/imagecache.cpp: In member function 'bool OpenImageIO_v3_0::ImageCacheImpl::getattribute(OpenImageIO_v3_0::string_view, OpenImageIO_v3_0::TypeDesc, void*) const':
/builddir/openimageio-3.0.6.1/src/libtexture/imagecache.cpp:2411:57: error: 'value' is not a member of 'OpenImageIO_v3_0::BaseTypeFromC<long long int>'
 2411 |     if (name == _name && type == BaseTypeFromC<_ctype>::value) { \
      |                                                         ^~~~~
/builddir/openimageio-3.0.6.1/src/libtexture/imagecache.cpp:2483:9: note: in expansion of macro 'ATTR_DECODE'
 2483 |         ATTR_DECODE("stat:cache_footprint", long long, pvt::footprint(*this));
      |         ^~~~~~~~~~~
/builddir/openimageio-3.0.6.1/src/libtexture/imagecache.cpp:2411:57: error: 'value' is not a member of 'OpenImageIO_v3_0::BaseTypeFromC<long long int>'
 2411 |     if (name == _name && type == BaseTypeFromC<_ctype>::value) { \
      |                                                         ^~~~~
/builddir/openimageio-3.0.6.1/src/libtexture/imagecache.cpp:2484:9: note: in expansion of macro 'ATTR_DECODE'
 2484 |         ATTR_DECODE("stat:cache_memory_used", long long, m_mem_used);
      |         ^~~~~~~~~~~
...

diff --git a/src/include/OpenImageIO/typedesc.h b/src/include/OpenImageIO/typedesc.h
index b6ac37c..779e320 100644
--- a/src/include/OpenImageIO/typedesc.h
+++ b/src/include/OpenImageIO/typedesc.h
@@ -401,7 +401,7 @@ template<> struct BaseTypeFromC<uint32_t> { static const TypeDesc::BASETYPE valu
 template<> struct BaseTypeFromC<int32_t> { static const TypeDesc::BASETYPE value = TypeDesc::INT; };
 template<> struct BaseTypeFromC<uint64_t> { static const TypeDesc::BASETYPE value = TypeDesc::UINT64; };
 template<> struct BaseTypeFromC<int64_t> { static const TypeDesc::BASETYPE value = TypeDesc::INT64; };
-#if defined(__GNUC__) && __WORDSIZE == 64 && !(defined(__APPLE__) && defined(__MACH__))
+#if defined(__GNUC__) && defined(__LP64__)
 // Some platforms consider int64_t and long long to be different types, even
 // though they are actually the same size.
 static_assert(!std::is_same_v<unsigned long long, uint64_t>);
