Fri Aug 15 18:07:41 2014 UTC ()
Rework cpuid function to use gnuc __get_cpuid (requiring at least gcc 4.3)
This get's over issues such as encountered with PIC builds.
Upstream issue : https://github.com/openexr/openexr/issues/128
Revbump due to new dependency on GCC_REQD+= 4.3
(additional patches available upon request for bmake test target)


(richard)
diff -r1.33 -r1.34 pkgsrc/graphics/openexr/Makefile
diff -r1.24 -r1.25 pkgsrc/graphics/openexr/distinfo
diff -r0 -r1.1 pkgsrc/graphics/openexr/patches/patch-IlmImf_ImfSystemSpecific.cpp

cvs diff -r1.33 -r1.34 pkgsrc/graphics/openexr/Makefile (expand / switch to unified diff)

--- pkgsrc/graphics/openexr/Makefile 2014/08/13 19:23:08 1.33
+++ pkgsrc/graphics/openexr/Makefile 2014/08/15 18:07:41 1.34
@@ -1,30 +1,32 @@ @@ -1,30 +1,32 @@
1# $NetBSD: Makefile,v 1.33 2014/08/13 19:23:08 tron Exp $ 1# $NetBSD: Makefile,v 1.34 2014/08/15 18:07:41 richard Exp $
2 2
3DISTNAME= openexr-2.2.0 3DISTNAME= openexr-2.2.0
4PKGREVISION= 1 4PKGREVISION= 2
5CATEGORIES= graphics 5CATEGORIES= graphics
6MASTER_SITES= http://download.savannah.nongnu.org/releases/openexr/ 6MASTER_SITES= http://download.savannah.nongnu.org/releases/openexr/
7 7
8MAINTAINER= adam@NetBSD.org 8MAINTAINER= adam@NetBSD.org
9HOMEPAGE= http://www.openexr.com/ 9HOMEPAGE= http://www.openexr.com/
10COMMENT= High dynamic-range (HDR) image file format library and tools 10COMMENT= High dynamic-range (HDR) image file format library and tools
11LICENSE= modified-bsd 11LICENSE= modified-bsd
12 12
13USE_LANGUAGES= c c++ 13USE_LANGUAGES= c c++
14USE_LIBTOOL= yes 14USE_LIBTOOL= yes
15USE_TOOLS+= gmake pkg-config 15USE_TOOLS+= gmake pkg-config
16GNU_CONFIGURE= yes 16GNU_CONFIGURE= yes
17PKGCONFIG_OVERRIDE= OpenEXR.pc.in 17PKGCONFIG_OVERRIDE= OpenEXR.pc.in
18TEST_TARGET= check 18TEST_TARGET= check
19 19
 20GCC_REQD+= 4.3
 21
20PTHREAD_OPTS+= require 22PTHREAD_OPTS+= require
21LIBS.IRIX+= -lmx 23LIBS.IRIX+= -lmx
22LIBS.SunOS+= -lm 24LIBS.SunOS+= -lm
23 25
24BUILDLINK_TRANSFORM+= rm:-Wno-long-double 26BUILDLINK_TRANSFORM+= rm:-Wno-long-double
25 27
26.include "../../devel/zlib/buildlink3.mk" 28.include "../../devel/zlib/buildlink3.mk"
27BUILDLINK_API_DEPENDS.ilmbase+= ilmbase>=1.0.2nb1 29BUILDLINK_API_DEPENDS.ilmbase+= ilmbase>=1.0.2nb1
28.include "../../graphics/ilmbase/buildlink3.mk" 30.include "../../graphics/ilmbase/buildlink3.mk"
29.include "../../mk/pthread.buildlink3.mk" 31.include "../../mk/pthread.buildlink3.mk"
30.include "../../mk/bsd.pkg.mk" 32.include "../../mk/bsd.pkg.mk"

cvs diff -r1.24 -r1.25 pkgsrc/graphics/openexr/distinfo (expand / switch to unified diff)

--- pkgsrc/graphics/openexr/distinfo 2014/08/13 19:23:08 1.24
+++ pkgsrc/graphics/openexr/distinfo 2014/08/15 18:07:41 1.25
@@ -1,9 +1,10 @@ @@ -1,9 +1,10 @@
1$NetBSD: distinfo,v 1.24 2014/08/13 19:23:08 tron Exp $ 1$NetBSD: distinfo,v 1.25 2014/08/15 18:07:41 richard Exp $
2 2
3SHA1 (openexr-2.2.0.tar.gz) = d09a68c4443b7a12a0484c073adaef348b44cb92 3SHA1 (openexr-2.2.0.tar.gz) = d09a68c4443b7a12a0484c073adaef348b44cb92
4RMD160 (openexr-2.2.0.tar.gz) = a825ed42e731da3bc39f25ce2a310712a5b0f956 4RMD160 (openexr-2.2.0.tar.gz) = a825ed42e731da3bc39f25ce2a310712a5b0f956
5Size (openexr-2.2.0.tar.gz) = 14489661 bytes 5Size (openexr-2.2.0.tar.gz) = 14489661 bytes
6SHA1 (patch-IlmImf_ImfFastHuf.cpp) = bf583b5e0efb1af6e00d671b07d4cc154e13ac44 6SHA1 (patch-IlmImf_ImfFastHuf.cpp) = bf583b5e0efb1af6e00d671b07d4cc154e13ac44
 7SHA1 (patch-IlmImf_ImfSystemSpecific.cpp) = 774b6498bdce55f24a9ffd6efaee349bfbd82173
7SHA1 (patch-IlmImf_ImfSystemSpecific.h) = f36d049085e42beabcf5f7af5354009391a1f9f2 8SHA1 (patch-IlmImf_ImfSystemSpecific.h) = f36d049085e42beabcf5f7af5354009391a1f9f2
8SHA1 (patch-aa) = 08b38d81338fc755c321911a9ffa3cccb53e99f3 9SHA1 (patch-aa) = 08b38d81338fc755c321911a9ffa3cccb53e99f3
9SHA1 (patch-ab) = 0efe7155350e1976d1d7bad9da8b1a037fd84572 10SHA1 (patch-ab) = 0efe7155350e1976d1d7bad9da8b1a037fd84572

File Added: pkgsrc/graphics/openexr/patches/Attic/patch-IlmImf_ImfSystemSpecific.cpp
$NetBSD: patch-IlmImf_ImfSystemSpecific.cpp,v 1.1 2014/08/15 18:07:41 richard Exp $

Rework cpuid function to use gnuc __get_cpuid (requiring at least gcc 4.3)
This get's over issues such as encountered with PIC builds.
Upstream issue : https://github.com/openexr/openexr/issues/128

--- IlmImf/ImfSystemSpecific.cpp.orig	2014-08-10 04:23:57.000000000 +0000
+++ IlmImf/ImfSystemSpecific.cpp
@@ -40,21 +40,19 @@ OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_EN
 
 namespace {
 #if defined(IMF_HAVE_SSE2) &&  defined(__GNUC__)
-
+#include <cpuid.h>
     // Helper functions for gcc + SSE enabled
-    void cpuid(int n, int &eax, int &ebx, int &ecx, int &edx)
+    void cpuid(unsigned int n, unsigned int &eax, unsigned int &ebx,
+					unsigned int &ecx, unsigned int &edx)
     {
-        __asm__ __volatile__ (
-            "cpuid"
-            : /* Output  */ "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx) 
-            : /* Input   */ "a"(n)
-            : /* Clobber */);
+		__get_cpuid(n, &eax, &ebx, &ecx, &edx);
     }
 
 #else // IMF_HAVE_SSE2 && __GNUC__
 
     // Helper functions for generic compiler - all disabled
-    void cpuid(int n, int &eax, int &ebx, int &ecx, int &edx)
+    void cpuid(unsigned int n, unsigned int &eax, unsigned int &ebx,
+					unsigned int &ecx, unsigned int &edx)
     {
         eax = ebx = ecx = edx = 0;
     }
@@ -64,7 +62,7 @@ namespace {
 
 #ifdef OPENEXR_IMF_HAVE_GCC_INLINE_ASM_AVX
 
-    void xgetbv(int n, int &eax, int &edx)
+    void xgetbv(unsigned int n, unsigned int &eax, unsigned int &edx)
     {
         __asm__ __volatile__ (
             "xgetbv"
@@ -75,7 +73,7 @@ namespace {
 
 #else //  OPENEXR_IMF_HAVE_GCC_INLINE_ASM_AVX
 
-    void xgetbv(int n, int &eax, int &edx)
+    void xgetbv(unsigned int n, unsigned int &eax, unsigned int &edx)
     {
         eax = edx = 0;
     }
@@ -94,8 +92,8 @@ CpuId::CpuId():
     f16c(false)
 {
     bool osxsave = false;
-    int  max     = 0;
-    int  eax, ebx, ecx, edx;
+    unsigned int  max     = 0;
+    unsigned int  eax, ebx, ecx, edx;
 
     cpuid(0, max, ebx, ecx, edx);
     if (max > 0)