- Fix build with base gcc on 8.x and 9.x, remove USE_GCC

PR:		196712
Approved by:	mandree (maintainer)
This commit is contained in:
Dmitry Marakasov 2015-04-09 09:59:39 +00:00
parent 61a09f984f
commit cef8dde6cd
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=383631
3 changed files with 68 additions and 24 deletions

View File

@ -3,7 +3,7 @@
PORTNAME= OpenEXR
PORTVERSION= 2.2.0
PORTREVISION= 4
PORTREVISION= 5
CATEGORIES= graphics devel
MASTER_SITES= SAVANNAH/openexr/:dist \
LOCAL/mandree/:test
@ -49,13 +49,6 @@ LARGE_STACK_CONFIGURE_ENABLE= large-stack
.include <bsd.port.pre.mk>
# If default compiler is GCC, upgrade it because
# g++ 4.2 is too old to auto-upgrade 0xffffffffffffffffl to
# a long long integer constant - and has likely more issues.
.if ${COMPILER_TYPE} == gcc
USE_GCC= yes
.endif
MAJORVER= 2_2
VER= 22

View File

@ -0,0 +1,47 @@
--- IlmImf/ImfFastHuf.cpp.orig 2014-08-10 08:23:56.000000000 +0400
+++ IlmImf/ImfFastHuf.cpp 2015-04-08 00:10:07.536640000 +0300
@@ -107,7 +107,7 @@
for (int i = 0; i <= MAX_CODE_LEN; ++i)
{
codeCount[i] = 0;
- base[i] = 0xffffffffffffffffL;
+ base[i] = 0xffffffffffffffffULL;
offset[i] = 0;
}
@@ -352,7 +352,7 @@
for (int i = 0; i <= MAX_CODE_LEN; ++i)
{
- if (base[i] != 0xffffffffffffffffL)
+ if (base[i] != 0xffffffffffffffffULL)
{
_ljBase[i] = base[i] << (64 - i);
}
@@ -362,7 +362,7 @@
// Unused code length - insert dummy values
//
- _ljBase[i] = 0xffffffffffffffffL;
+ _ljBase[i] = 0xffffffffffffffffULL;
}
}
@@ -417,7 +417,7 @@
int minIdx = TABLE_LOOKUP_BITS;
- while (minIdx > 0 && _ljBase[minIdx] == 0xffffffffffffffffL)
+ while (minIdx > 0 && _ljBase[minIdx] == 0xffffffffffffffffULL)
minIdx--;
if (minIdx < 0)
@@ -427,7 +427,7 @@
// Set the min value such that the table is never tested.
//
- _tableMin = 0xffffffffffffffffL;
+ _tableMin = 0xffffffffffffffffULL;
}
else
{

View File

@ -1,25 +1,29 @@
--- IlmImf/ImfSystemSpecific.cpp.orig 2014-08-10 04:23:57 UTC
+++ IlmImf/ImfSystemSpecific.cpp
@@ -35,6 +35,9 @@
#include "ImfSystemSpecific.h"
#include "ImfNamespace.h"
#include "OpenEXRConfig.h"
+#if defined(IMF_HAVE_SSE2) && defined(__GNUC__)
+#include <cpuid.h>
+#endif
OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_ENTER
@@ -44,11 +47,7 @@ namespace {
--- IlmImf/ImfSystemSpecific.cpp.orig 2014-08-10 08:23:57.000000000 +0400
+++ IlmImf/ImfSystemSpecific.cpp 2015-04-09 00:08:50.100958000 +0300
@@ -44,11 +44,23 @@
// Helper functions for gcc + SSE enabled
void cpuid(int n, int &eax, int &ebx, int &ecx, int &edx)
{
- __asm__ __volatile__ (
+#if __i386__
__asm__ __volatile__ (
- "cpuid"
- : /* Output */ "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx)
- : /* Input */ "a"(n)
- : /* Clobber */);
+ __cpuid(n, eax, ebx, ecx, edx);
+ "xchgl %%ebx,%k1\n"
+ "cpuid\n"
+ "xchgl %%ebx,%k1" \
+ : /* Output */ "=a"(eax), "=&r"(ebx), "=c"(ecx), "=d"(edx)
+ : /* Input */ "0"(n)
: /* Clobber */);
+#else
+ __asm__ __volatile__ (
+ "xchgq %%rbx,%q1\n"
+ "cpuid\n"
+ "xchgq %%rbx,%q1" \
+ : /* Output */ "=a"(eax), "=&r"(ebx), "=c"(ecx), "=d"(edx)
+ : /* Input */ "0"(n)
+ : /* Clobber */);
+#endif
}
#else // IMF_HAVE_SSE2 && __GNUC__