openexr: Add more patches.

This commit is contained in:
Alexpux
2014-05-30 00:18:06 +04:00
parent cb1cd72937
commit 74a52959fc
7 changed files with 1078 additions and 45 deletions

View File

@@ -17,13 +17,15 @@ source=("http://download.savannah.nongnu.org/releases/openexr/${_realname}-${pkg
ilmthread-mingw-pthreads.patch
ilmbase-2.1.0_obsolete-macros.patch
cmake-soversion.patch
cmake-install-binaries.patch)
cmake-install-binaries.patch
pull93.patch)
md5sums=('8ba2f608191ad020e50277d8a3ba0850'
'3a34cf48b52c2af0584ef3e8cf50499a'
'8b9d9c6e4ed88dc9dfb80ce4f637460a'
'1c9a320c8ab09c98abe9ecb80eb24e2e'
'3af90921f715f52012d0b8d3a631bc91'
'baaa4fa9467969a611c70e62efa1fe6b')
'e2cda218f1651a1cd754e60cf131018a'
'baaa4fa9467969a611c70e62efa1fe6b'
'a077f53db4370a1f5a3f5ce4b6d86311')
prepare(){
cd "$srcdir/${_realname}-$pkgver"
# Use either one or the other of the ilmthread patches
@@ -33,6 +35,7 @@ prepare(){
patch -Np1 -i "$srcdir/ilmbase-2.1.0_obsolete-macros.patch"
patch -Np1 -i "$srcdir/cmake-soversion.patch"
patch -Np1 -i "$srcdir/cmake-install-binaries.patch"
patch -Np2 -i "$srcdir/pull93.patch"
#./bootstrap
}

View File

@@ -9,6 +9,15 @@
ADD_DEFINITIONS ( -pthread )
ENDIF ()
@@ -96,7 +96,7 @@
ADD_SUBDIRECTORY ( Imath )
ADD_SUBDIRECTORY ( IlmThread )
-IF (WIN32)
+IF (WIN32 AND NOT MINGW)
FILE ( COPY ${CMAKE_SOURCE_DIR}/config.windows/IlmBaseConfig.h
DESTINATION ${CMAKE_SOURCE_DIR}/config
)
@@ -127,35 +127,46 @@
(ILMBASE_VERSION_PATCH << 8))
")
@@ -67,7 +76,18 @@
Version: ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}
-Libs: -L\${libdir} -lImath-${CPACK_PACKAGE_VERSION_MAJOR}_${CPACK_PACKAGE_VERSION_MINOR} -lIexMath-${CPACK_PACKAGE_VERSION_MAJOR}_${CPACK_PACKAGE_VERSION_MINOR} -lHalf -lIex-${CPACK_PACKAGE_VERSION_MAJOR}_${CPACK_PACKAGE_VERSION_MINOR} -lIlmThread-${CPACK_PACKAGE_VERSION_MAJOR}_${CPACK_PACKAGE_VERSION_MINOR} -pthreadCflags: -pthread -I\${OpenEXR_includedir}
+Libs: -L\${libdir} -lImath -lIexMath -lHalf -lIex -lIlmThread -pthread
+Cflags: -I\${OpenEXR_includedir}
+Cflags: -pthread -I\${OpenEXR_includedir}
")
INSTALL ( FILES
--- ilmbase-2.1.0/IlmThread/CMakeLists.txt.orig 2014-05-28 14:46:01.760200000 +0400
+++ ilmbase-2.1.0/IlmThread/CMakeLists.txt 2014-05-28 22:42:50.512800000 +0400
@@ -10,7 +10,7 @@
IlmThreadSemaphorePosixCompat.cpp
IlmThreadSemaphorePosix.cpp
)
-IF (WIN32)
+IF (WIN32 AND NOT MINGW)
SET( ILMTHREAD_LIBRARY_SOURCES ${ILMTHREAD_LIBRARY_SOURCES}
IlmThreadMutexWin32.cpp
IlmThreadSemaphoreWin32.cpp

View File

@@ -0,0 +1,847 @@
diff --git a/IlmBase/Half/half.cpp b/IlmBase/Half/half.cpp
index 609aaa1..09a50aa 100644
--- a/IlmBase/Half/half.cpp
+++ b/IlmBase/Half/half.cpp
@@ -94,9 +94,9 @@ half::convert (int i)
// of float and half (127 versus 15).
//
- register int s = (i >> 16) & 0x00008000;
- register int e = ((i >> 23) & 0x000000ff) - (127 - 15);
- register int m = i & 0x007fffff;
+ int s = (i >> 16) & 0x00008000;
+ int e = ((i >> 23) & 0x000000ff) - (127 - 15);
+ int m = i & 0x007fffff;
//
// Now reassemble s, e and m into a half:
diff --git a/IlmBase/Half/half.h b/IlmBase/Half/half.h
index f78e4f6..da418d6 100644
--- a/IlmBase/Half/half.h
+++ b/IlmBase/Half/half.h
@@ -459,7 +459,7 @@ half::half (float f)
// to do the float-to-half conversion.
//
- register int e = (x.i >> 23) & 0x000001ff;
+ int e = (x.i >> 23) & 0x000001ff;
e = _eLut[e];
@@ -470,7 +470,7 @@ half::half (float f)
// bits and combine it with the sign and exponent.
//
- register int m = x.i & 0x007fffff;
+ int m = x.i & 0x007fffff;
_h = e + ((m + 0x00000fff + ((m >> 13) & 1)) >> 13);
}
else
diff --git a/IlmBase/Imath/ImathMatrix.h b/IlmBase/Imath/ImathMatrix.h
index 3e96c2f..1d7f8dc 100644
--- a/IlmBase/Imath/ImathMatrix.h
+++ b/IlmBase/Imath/ImathMatrix.h
@@ -2527,11 +2527,11 @@ Matrix44<T>::multiply (const Matrix44<T> &a,
const Matrix44<T> &b,
Matrix44<T> &c)
{
- register const T * IMATH_RESTRICT ap = &a.x[0][0];
- register const T * IMATH_RESTRICT bp = &b.x[0][0];
- register T * IMATH_RESTRICT cp = &c.x[0][0];
+ const T * IMATH_RESTRICT ap = &a.x[0][0];
+ const T * IMATH_RESTRICT bp = &b.x[0][0];
+ T * IMATH_RESTRICT cp = &c.x[0][0];
- register T a0, a1, a2, a3;
+ T a0, a1, a2, a3;
a0 = ap[0];
a1 = ap[1];
diff --git a/IlmBase/Iex/IexBaseExc.cpp b/IlmBase/Iex/IexBaseExc.cpp
index 3b2e197..8ecbdf3 100644
--- a/IlmBase/Iex/IexBaseExc.cpp
+++ b/IlmBase/Iex/IexBaseExc.cpp
@@ -75,7 +75,7 @@ stackTracer ()
BaseExc::BaseExc (const char* s) throw () :
- std::string (s? s: ""),
+ _what (s? s: ""),
_stackTrace (currentStackTracer? currentStackTracer(): "")
{
// empty
@@ -83,7 +83,7 @@ BaseExc::BaseExc (const char* s) throw () :
BaseExc::BaseExc (const std::string &s) throw () :
- std::string (s),
+ _what (s),
_stackTrace (currentStackTracer? currentStackTracer(): "")
{
// empty
@@ -91,7 +91,7 @@ BaseExc::BaseExc (const std::string &s) throw () :
BaseExc::BaseExc (std::stringstream &s) throw () :
- std::string (s.str()),
+ _what (s.str()),
_stackTrace (currentStackTracer? currentStackTracer(): "")
{
// empty
@@ -99,7 +99,7 @@ BaseExc::BaseExc (std::stringstream &s) throw () :
BaseExc::BaseExc (const BaseExc &be) throw () :
- std::string (be),
+ _what (be._what),
_stackTrace (be._stackTrace)
{
// empty
@@ -115,24 +115,85 @@ BaseExc::~BaseExc () throw ()
const char *
BaseExc::what () const throw ()
{
- return c_str();
+ return _what.c_str();
}
BaseExc &
BaseExc::assign (std::stringstream &s)
{
- std::string::assign (s.str());
+ _what.assign (s.str());
return *this;
}
BaseExc &
BaseExc::append (std::stringstream &s)
{
- std::string::append (s.str());
+ _what.append (s.str());
return *this;
}
+//-----------------
+// Inline functions
+//-----------------
+
+const std::string &
+BaseExc::name() const
+{
+ return _what;
+}
+
+BaseExc &
+BaseExc::operator = (std::stringstream &s)
+{
+ return assign (s);
+}
+
+
+BaseExc &
+BaseExc::operator += (std::stringstream &s)
+{
+ return append (s);
+}
+
+
+BaseExc &
+BaseExc::assign (const char *s)
+{
+ _what.assign(s);
+ return *this;
+}
+
+
+BaseExc &
+BaseExc::operator = (const char *s)
+{
+ return assign(s);
+}
+
+
+BaseExc &
+BaseExc::append (const char *s)
+{
+ _what.append(s);
+ return *this;
+}
+
+
+BaseExc &
+BaseExc::operator += (const char *s)
+{
+ return append(s);
+}
+
+
+const std::string &
+BaseExc::stackTrace () const
+{
+ return _stackTrace;
+}
+
+
IEX_INTERNAL_NAMESPACE_SOURCE_EXIT
diff --git a/IlmBase/Iex/IexBaseExc.h b/IlmBase/Iex/IexBaseExc.h
index bf016f7..5b30f56 100644
--- a/IlmBase/Iex/IexBaseExc.h
+++ b/IlmBase/Iex/IexBaseExc.h
@@ -57,7 +57,7 @@ IEX_INTERNAL_NAMESPACE_HEADER_ENTER
// Our most basic exception class
//-------------------------------
-class BaseExc: public std::string, public std::exception
+class IEX_EXPORT BaseExc: public std::exception
{
public:
@@ -65,29 +65,30 @@ class BaseExc: public std::string, public std::exception
// Constructors and destructor
//----------------------------
- IEX_EXPORT BaseExc (const char *s = 0) throw(); // std::string (s)
- IEX_EXPORT BaseExc (const std::string &s) throw(); // std::string (s)
- IEX_EXPORT BaseExc (std::stringstream &s) throw(); // std::string (s.str())
+ BaseExc (const char *s = 0) throw(); // std::string (s)
+ BaseExc (const std::string &s) throw(); // std::string (s)
+ BaseExc (std::stringstream &s) throw(); // std::string (s.str())
- IEX_EXPORT BaseExc (const BaseExc &be) throw();
- IEX_EXPORT virtual ~BaseExc () throw ();
+ BaseExc (const BaseExc &be) throw();
+ virtual ~BaseExc () throw ();
//--------------------------------------------
// what() method -- e.what() returns e.c_str()
//--------------------------------------------
- IEX_EXPORT virtual const char * what () const throw ();
+ virtual const char * what () const throw ();
+ const std::string & name() const;
//--------------------------------------------------
// Convenient methods to change the exception's text
//--------------------------------------------------
- IEX_EXPORT BaseExc & assign (std::stringstream &s); // assign (s.str())
- IEX_EXPORT BaseExc & operator = (std::stringstream &s);
+ BaseExc & assign (std::stringstream &s); // assign (s.str())
+ BaseExc & operator = (std::stringstream &s);
- IEX_EXPORT BaseExc & append (std::stringstream &s); // append (s.str())
- IEX_EXPORT BaseExc & operator += (std::stringstream &s);
+ BaseExc & append (std::stringstream &s); // append (s.str())
+ BaseExc & operator += (std::stringstream &s);
//--------------------------------------------------
@@ -95,11 +96,11 @@ class BaseExc: public std::string, public std::exception
// the definitions above.
//--------------------------------------------------
- IEX_EXPORT BaseExc & assign (const char *s);
- IEX_EXPORT BaseExc & operator = (const char *s);
+ BaseExc & assign (const char *s);
+ BaseExc & operator = (const char *s);
- IEX_EXPORT BaseExc & append (const char *s);
- IEX_EXPORT BaseExc & operator += (const char *s);
+ BaseExc & append (const char *s);
+ BaseExc & operator += (const char *s);
//--------------------------------------------------
@@ -109,10 +110,18 @@ class BaseExc: public std::string, public std::exception
// has been installed (see below, setStackTracer()).
//--------------------------------------------------
- IEX_EXPORT const std::string & stackTrace () const;
+ const std::string & stackTrace () const;
- private:
+ //--------------------------------------------------
+ // Conversion operators.
+ //--------------------------------------------------
+ operator const char *() const
+ { return what(); }
+
+
+ private:
+ std::string _what;
std::string _stackTrace;
};
@@ -204,61 +213,6 @@ IEX_EXPORT void setStackTracer (StackTracer stackTracer);
IEX_EXPORT StackTracer stackTracer ();
-//-----------------
-// Inline functions
-//-----------------
-
-inline BaseExc &
-BaseExc::operator = (std::stringstream &s)
-{
- return assign (s);
-}
-
-
-inline BaseExc &
-BaseExc::operator += (std::stringstream &s)
-{
- return append (s);
-}
-
-
-inline BaseExc &
-BaseExc::assign (const char *s)
-{
- std::string::assign(s);
- return *this;
-}
-
-
-inline BaseExc &
-BaseExc::operator = (const char *s)
-{
- return assign(s);
-}
-
-
-inline BaseExc &
-BaseExc::append (const char *s)
-{
- std::string::append(s);
- return *this;
-}
-
-
-inline BaseExc &
-BaseExc::operator += (const char *s)
-{
- return append(s);
-}
-
-
-inline const std::string &
-BaseExc::stackTrace () const
-{
- return _stackTrace;
-}
-
-
IEX_INTERNAL_NAMESPACE_HEADER_EXIT
#endif // INCLUDED_IEXBASEEXC_H
diff --git a/IlmBase/IexTest/testBaseExc.cpp b/IlmBase/IexTest/testBaseExc.cpp
index 6bf208e..905ca5b 100644
--- a/IlmBase/IexTest/testBaseExc.cpp
+++ b/IlmBase/IexTest/testBaseExc.cpp
@@ -188,7 +188,7 @@ test5()
}
catch (const IEX_INTERNAL_NAMESPACE::ArgExc &e)
{
- assert (e == "ArgExc");
+ assert (std::string(e.what()) == "ArgExc");
}
}
diff --git a/IlmBase/CMakeLists.txt b/IlmBase/CMakeLists.txt
index f275372..55cf549 100644
--- a/IlmBase/CMakeLists.txt
+++ b/IlmBase/CMakeLists.txt
@@ -82,6 +82,10 @@ IF (BUILD_SHARED_LIBS)
SET (LIB_TYPE SHARED)
IF (WIN32)
ADD_DEFINITIONS(-DOPENEXR_DLL)
+ ELSE ()
+ IF (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.1)
+ ADD_DEFINITIONS ( -fvisibility=hidden -DPLATFORM_VISIBILITY_AVAILABLE=1 )
+ ENDIF ()
ENDIF ()
ENDIF (BUILD_SHARED_LIBS)
diff --git a/IlmBase/Half/half.cpp b/IlmBase/Half/half.cpp
index 09a50aa..66cfad8 100644
--- a/IlmBase/Half/half.cpp
+++ b/IlmBase/Half/half.cpp
@@ -53,9 +53,9 @@ using namespace std;
// Lookup tables for half-to-float and float-to-half conversion
//-------------------------------------------------------------
-HALF_EXPORT const half::uif half::_toFloat[1 << 16] =
+HALF_EXPORT_CONST half::uif half::_toFloat[1 << 16] =
#include "toFloat.h"
-HALF_EXPORT const unsigned short half::_eLut[1 << 9] =
+HALF_EXPORT_CONST unsigned short half::_eLut[1 << 9] =
#include "eLut.h"
//-----------------------------------------------
diff --git a/IlmBase/Half/half.h b/IlmBase/Half/half.h
index da418d6..206554e 100644
--- a/IlmBase/Half/half.h
+++ b/IlmBase/Half/half.h
@@ -88,7 +88,7 @@
#include "halfExport.h" // for definition of HALF_EXPORT
#include <iostream>
-class half
+class HALF_EXPORT half
{
public:
@@ -197,8 +197,8 @@ class half
// Access to the internal representation
//--------------------------------------
- HALF_EXPORT unsigned short bits () const;
- HALF_EXPORT void setBits (unsigned short bits);
+ unsigned short bits () const;
+ void setBits (unsigned short bits);
public:
@@ -211,13 +211,13 @@ class half
private:
- HALF_EXPORT static short convert (int i);
- HALF_EXPORT static float overflow ();
+ static short convert (int i);
+ static float overflow ();
unsigned short _h;
- HALF_EXPORT static const uif _toFloat[1 << 16];
- HALF_EXPORT static const unsigned short _eLut[1 << 9];
+ static HALF_EXPORT_CONST uif _toFloat[];
+ static HALF_EXPORT_CONST unsigned short _eLut[];
};
diff --git a/IlmBase/Half/halfExport.h b/IlmBase/Half/halfExport.h
index 3a0c86a..aa8e60c 100644
--- a/IlmBase/Half/halfExport.h
+++ b/IlmBase/Half/halfExport.h
@@ -11,16 +11,33 @@
// This copyright notice does not imply publication.
//
-#if defined(OPENEXR_DLL)
- #if defined(HALF_EXPORTS)
- #define HALF_EXPORT __declspec(dllexport)
- #else
- #define HALF_EXPORT __declspec(dllimport)
+#if defined(_WIN32)
+# if defined(OPENEXR_DLL)
+# define PLATFORM_EXPORT_DEFINITION __declspec(dllexport)
+# define PLATFORM_IMPORT_DEFINITION __declspec(dllimport)
+# define PLATFORM_EXPORT_CONST
+# else
+# define PLATFORM_EXPORT_DEFINITION
+# define PLATFORM_IMPORT_DEFINITION
+# define PLATFORM_EXPORT_CONST const
+# endif
+#else // linux/macos
+# if defined(PLATFORM_VISIBILITY_AVAILABLE)
+# define PLATFORM_EXPORT_DEFINITION __attribute__((visibility("default")))
+# define PLATFORM_IMPORT_DEFINITION
+# else
+# define PLATFORM_EXPORT_DEFINITION
+# define PLATFORM_IMPORT_DEFINITION
+# endif
+# define PLATFORM_EXPORT_CONST const
#endif
- #define HALF_EXPORT_CONST
-#else
- #define HALF_EXPORT
- #define HALF_EXPORT_CONST const
+
+#if defined(HALF_EXPORTS) // create library
+# define HALF_EXPORT PLATFORM_EXPORT_DEFINITION
+# define HALF_EXPORT_CONST PLATFORM_EXPORT_CONST
+#else // use library
+# define HALF_EXPORT PLATFORM_IMPORT_DEFINITION
+# define HALF_EXPORT_CONST PLATFORM_EXPORT_CONST
#endif
#endif // #ifndef HALFEXPORT_H
diff --git a/IlmBase/Iex/IexBaseExc.cpp b/IlmBase/Iex/IexBaseExc.cpp
index 8ecbdf3..5566e7b 100644
--- a/IlmBase/Iex/IexBaseExc.cpp
+++ b/IlmBase/Iex/IexBaseExc.cpp
@@ -44,7 +44,10 @@
#include "IexBaseExc.h"
#include "IexMacros.h"
-#ifdef PLATFORM_WINDOWS
+#ifdef _WIN32
+ #ifndef WIN32_LEAN_AND_MEAN
+ #define WIN32_LEAN_AND_MEAN
+ #endif
#include <windows.h>
#endif
@@ -197,7 +200,7 @@ BaseExc::stackTrace () const
IEX_INTERNAL_NAMESPACE_SOURCE_EXIT
-#ifdef PLATFORM_WINDOWS
+#ifdef _WIN32
#pragma optimize("", off)
void
diff --git a/IlmBase/Iex/IexExport.h b/IlmBase/Iex/IexExport.h
index 270c1cf..8dd431e 100644
--- a/IlmBase/Iex/IexExport.h
+++ b/IlmBase/Iex/IexExport.h
@@ -35,16 +35,29 @@
//
///////////////////////////////////////////////////////////////////////////
-#if defined(OPENEXR_DLL)
- #if defined(IEX_EXPORTS)
- #define IEX_EXPORT __declspec(dllexport)
- #else
- #define IEX_EXPORT __declspec(dllimport)
+
+#if defined(_WIN32)
+# if defined(OPENEXR_DLL)
+# define IEX_EXPORT_DEFINITION __declspec(dllexport)
+# define IEX_IMPORT_DEFINITION __declspec(dllimport)
+# else
+# define IEX_EXPORT_DEFINITION
+# define IEX_IMPORT_DEFINITION
+# endif
+#else // linux/macos
+# if defined(PLATFORM_VISIBILITY_AVAILABLE)
+# define IEX_EXPORT_DEFINITION __attribute__((visibility("default")))
+# define IEX_IMPORT_DEFINITION
+# else
+# define IEX_EXPORT_DEFINITION
+# define IEX_IMPORT_DEFINITION
+# endif
#endif
- #define IEX_EXPORT_CONST
-#else
- #define IEX_EXPORT
- #define IEX_EXPORT_CONST const
+
+#if defined(IEX_EXPORTS) // create library
+# define IEX_EXPORT IEX_EXPORT_DEFINITION
+#else // use library
+# define IEX_EXPORT IEX_IMPORT_DEFINITION
#endif
#endif // #ifndef IEXEXPORT_H
diff --git a/IlmBase/Iex/IexThrowErrnoExc.h b/IlmBase/Iex/IexThrowErrnoExc.h
index 224ed2b..ee6f6c4 100644
--- a/IlmBase/Iex/IexThrowErrnoExc.h
+++ b/IlmBase/Iex/IexThrowErrnoExc.h
@@ -88,9 +88,9 @@ IEX_INTERNAL_NAMESPACE_HEADER_ENTER
//
//--------------------------------------------------------------------------
-IEX_EXPORT void throwErrnoExc(const std::string &txt, int errnum);
-IEX_EXPORT void throwErrnoExc(const std::string &txt);
-IEX_EXPORT void throwErrnoExc();
+void IEX_EXPORT throwErrnoExc(const std::string &txt, int errnum);
+void IEX_EXPORT throwErrnoExc(const std::string &txt);
+void IEX_EXPORT throwErrnoExc();
IEX_INTERNAL_NAMESPACE_HEADER_EXIT
diff --git a/IlmBase/IexMath/CMakeLists.txt b/IlmBase/IexMath/CMakeLists.txt
index 9a28c21..15cd819 100644
--- a/IlmBase/IexMath/CMakeLists.txt
+++ b/IlmBase/IexMath/CMakeLists.txt
@@ -19,6 +19,7 @@ INSTALL ( FILES
IexMathFloatExc.h
IexMathFpu.h
IexMathIeeeExc.h
+ IexMathExport.h
DESTINATION
include/OpenEXR
)
diff --git a/IlmBase/IexMath/IexMathExport.h b/IlmBase/IexMath/IexMathExport.h
new file mode 100644
index 0000000..dce2486
--- /dev/null
+++ b/IlmBase/IexMath/IexMathExport.h
@@ -0,0 +1,64 @@
+#ifndef IEXMATHEXPORT_H
+#define IEXMATHEXPORT_H
+
+///////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2012, Industrial Light & Magic, a division of Lucas
+// Digital Ltd. LLC
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Industrial Light & Magic nor the names of
+// its contributors may be used to endorse or promote products derived
+// from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+///////////////////////////////////////////////////////////////////////////
+
+
+#if defined(_WIN32)
+# if defined(OPENEXR_DLL)
+# define IEXMATH_EXPORT_DEFINITION __declspec(dllexport)
+# define IEXMATH_IMPORT_DEFINITION __declspec(dllimport)
+# else
+# define IEXMATH_EXPORT_DEFINITION
+# define IEXMATH_IMPORT_DEFINITION
+# endif
+#else // linux/macos
+# if defined(PLATFORM_VISIBILITY_AVAILABLE)
+# define IEXMATH_EXPORT_DEFINITION __attribute__((visibility("default")))
+# define IEXMATH_IMPORT_DEFINITION
+# else
+# define IEXMATH_EXPORT_DEFINITION
+# define IEXMATH_IMPORT_DEFINITION
+# endif
+#endif
+
+#if defined(IEXMATH_EXPORTS) // create library
+# define IEXMATH_EXPORT IEXMATH_EXPORT_DEFINITION
+#else // use library
+# define IEXMATH_EXPORT IEXMATH_IMPORT_DEFINITION
+#endif
+
+#endif // #ifndef IEXMATHEXPORT_H
+
diff --git a/IlmBase/IexMath/IexMathFloatExc.h b/IlmBase/IexMath/IexMathFloatExc.h
index 825dba1..1e0277c 100644
--- a/IlmBase/IexMath/IexMathFloatExc.h
+++ b/IlmBase/IexMath/IexMathFloatExc.h
@@ -37,26 +37,9 @@
#ifndef INCLUDED_IEXMATHFLOATEXC_H
#define INCLUDED_IEXMATHFLOATEXC_H
-#ifndef IEXMATH_EXPORT_H
-#define IEXMATH_EXPORT_H
-
-#if defined(OPENEXR_DLL)
- #if defined(IEX_EXPORTS)
- #define IEXMATH_EXPORT __declspec(dllexport)
- #else
- #define IEXMATH_EXPORT __declspec(dllimport)
- #endif
- #define IEXMATH_EXPORT_CONST
-#else
- #define IEXMATH_EXPORT
- #define IEXMATH_EXPORT_CONST const
-#endif
-
-#endif
-
+#include "IexMathExport.h"
#include "IexNamespace.h"
#include "IexMathExc.h"
-//#include <IexBaseExc.h>
#include "IexMathIeeeExc.h"
IEX_INTERNAL_NAMESPACE_HEADER_ENTER
diff --git a/IlmBase/IlmThread/IlmThreadExport.h b/IlmBase/IlmThread/IlmThreadExport.h
index 96d2200..5ee5546 100644
--- a/IlmBase/IlmThread/IlmThreadExport.h
+++ b/IlmBase/IlmThread/IlmThreadExport.h
@@ -1,3 +1,6 @@
+#ifndef ILMTHREADEXPORT_H
+#define ILMTHREADEXPORT_H
+
///////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2012, Industrial Light & Magic, a division of Lucas
@@ -32,15 +35,31 @@
//
///////////////////////////////////////////////////////////////////////////
-#if defined(OPENEXR_DLL)
- #if defined(ILMTHREAD_EXPORTS)
- #define ILMTHREAD_EXPORT __declspec(dllexport)
- #define ILMTHREAD_EXPORT_CONST extern __declspec(dllexport)
- #else
- #define ILMTHREAD_EXPORT __declspec(dllimport)
- #define ILMTHREAD_EXPORT_CONST extern __declspec(dllimport)
+#if defined(_WIN32)
+# if defined(OPENEXR_DLL)
+# define ILMTHREAD_EXPORT_DEFINITION __declspec(dllexport)
+# define ILMTHREAD_IMPORT_DEFINITION __declspec(dllimport)
+# else
+# define ILMTHREAD_EXPORT_DEFINITION
+# define ILMTHREAD_IMPORT_DEFINITION
+# endif
+#else // linux/macos
+# if defined(PLATFORM_VISIBILITY_AVAILABLE)
+# define ILMTHREAD_EXPORT_DEFINITION __attribute__((visibility("default")))
+# define ILMTHREAD_IMPORT_DEFINITION
+# else
+# define ILMTHREAD_EXPORT_DEFINITION
+# define ILMTHREAD_IMPORT_DEFINITION
+# endif
#endif
-#else
- #define ILMTHREAD_EXPORT
- #define ILMTHREAD_EXPORT_CONST extern const
+
+#if defined(ILMTHREAD_EXPORTS) // create library
+# define ILMTHREAD_EXPORT ILMTHREAD_EXPORT_DEFINITION
+# define ILMTHREAD_EXPORT_VAR ILMTHREAD_EXPORT_DEFINITION extern
+#else // use library
+# define ILMTHREAD_EXPORT ILMTHREAD_IMPORT_DEFINITION
+# define ILMTHREAD_EXPORT_VAR ILMTHREAD_IMPORT_DEFINITION extern
#endif
+
+
+#endif // ILMTHREADEXPORT_H
diff --git a/IlmBase/Imath/ImathExport.h b/IlmBase/Imath/ImathExport.h
index 4357c12..2d595cb 100644
--- a/IlmBase/Imath/ImathExport.h
+++ b/IlmBase/Imath/ImathExport.h
@@ -1,3 +1,6 @@
+#ifndef IMATHEXPORT_H
+#define IMATHEXPORT_H
+
///////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2012, Industrial Light & Magic, a division of Lucas
@@ -32,15 +35,30 @@
//
///////////////////////////////////////////////////////////////////////////
-#if defined(OPENEXR_DLL)
- #if defined(IMATH_EXPORTS)
- #define IMATH_EXPORT __declspec(dllexport)
- #define IMATH_EXPORT_CONST extern __declspec(dllexport)
- #else
- #define IMATH_EXPORT __declspec(dllimport)
- #define IMATH_EXPORT_CONST extern __declspec(dllimport)
+#if defined(_WIN32)
+# if defined(OPENEXR_DLL)
+# define IMATH_EXPORT_DEFINITION __declspec(dllexport)
+# define IMATH_IMPORT_DEFINITION __declspec(dllimport)
+# else
+# define IMATH_EXPORT_DEFINITION
+# define IMATH_IMPORT_DEFINITION
+# endif
+#else // linux/macos
+# if defined(PLATFORM_VISIBILITY_AVAILABLE)
+# define IMATH_EXPORT_DEFINITION __attribute__((visibility("default")))
+# define IMATH_IMPORT_DEFINITION
+# else
+# define IMATH_EXPORT_DEFINITION
+# define IMATH_IMPORT_DEFINITION
+# endif
#endif
-#else
- #define IMATH_EXPORT
- #define IMATH_EXPORT_CONST extern const
+
+#if defined(IMATH_EXPORTS) // create library
+# define IMATH_EXPORT IMATH_EXPORT_DEFINITION
+# define IMATH_EXPORT_VAR IMATH_EXPORT_DEFINITION extern
+#else // use library
+# define IMATH_EXPORT IMATH_IMPORT_DEFINITION
+# define IMATH_EXPORT_VAR IMATH_IMPORT_DEFINITION extern
#endif
+
+#endif // IMATHEXPORT_H
diff --git a/IlmBase/Imath/ImathMatrixAlgo.cpp b/IlmBase/Imath/ImathMatrixAlgo.cpp
index 0470f1d..c5b7983 100644
--- a/IlmBase/Imath/ImathMatrixAlgo.cpp
+++ b/IlmBase/Imath/ImathMatrixAlgo.cpp
@@ -45,31 +45,25 @@
#include "ImathMatrixAlgo.h"
#include <cmath>
-#if defined(OPENEXR_DLL)
- #define EXPORT_CONST __declspec(dllexport)
-#else
- #define EXPORT_CONST const
-#endif
-
IMATH_INTERNAL_NAMESPACE_SOURCE_ENTER
-EXPORT_CONST M33f identity33f ( 1, 0, 0,
- 0, 1, 0,
- 0, 0, 1);
+const M33f identity33f ( 1, 0, 0,
+ 0, 1, 0,
+ 0, 0, 1);
-EXPORT_CONST M33d identity33d ( 1, 0, 0,
- 0, 1, 0,
- 0, 0, 1);
+const M33d identity33d ( 1, 0, 0,
+ 0, 1, 0,
+ 0, 0, 1);
-EXPORT_CONST M44f identity44f ( 1, 0, 0, 0,
- 0, 1, 0, 0,
- 0, 0, 1, 0,
- 0, 0, 0, 1);
+const M44f identity44f ( 1, 0, 0, 0,
+ 0, 1, 0, 0,
+ 0, 0, 1, 0,
+ 0, 0, 0, 1);
-EXPORT_CONST M44d identity44d ( 1, 0, 0, 0,
- 0, 1, 0, 0,
- 0, 0, 1, 0,
- 0, 0, 0, 1);
+const M44d identity44d ( 1, 0, 0, 0,
+ 0, 1, 0, 0,
+ 0, 0, 1, 0,
+ 0, 0, 0, 1);
namespace
{
diff --git a/IlmBase/Imath/ImathMatrixAlgo.h b/IlmBase/Imath/ImathMatrixAlgo.h
index 8e90b02..eb97b2e 100644
--- a/IlmBase/Imath/ImathMatrixAlgo.h
+++ b/IlmBase/Imath/ImathMatrixAlgo.h
@@ -64,10 +64,10 @@ IMATH_INTERNAL_NAMESPACE_HEADER_ENTER
// Identity matrices
//------------------
-IMATH_EXPORT_CONST M33f identity33f;
-IMATH_EXPORT_CONST M44f identity44f;
-IMATH_EXPORT_CONST M33d identity33d;
-IMATH_EXPORT_CONST M44d identity44d;
+IMATH_EXPORT_VAR const M33f identity33f;
+IMATH_EXPORT_VAR const M44f identity44f;
+IMATH_EXPORT_VAR const M33d identity33d;
+IMATH_EXPORT_VAR const M44d identity44d;
//----------------------------------------------------------------------
// Extract scale, shear, rotation, and translation values from a matrix:

View File

@@ -19,7 +19,9 @@ source=("http://download.savannah.nongnu.org/releases/openexr/${_realname}-${pkg
openexr-2.1.0_aligned-malloc.patch
openexr-2.1.0_cast.patch
openexr_obsolete-macros.patch
cmake-soversion.patch)
cmake-soversion.patch
pull87.patch
pull93.patch)
md5sums=('33735d37d2ee01c6d8fbd0df94fb8b43'
'346e4c67b11e4f688cb3e751604342e0'
'd87df3d057dd8d902c61a3b88f05fd0d'
@@ -27,7 +29,9 @@ md5sums=('33735d37d2ee01c6d8fbd0df94fb8b43'
'09df5525cf2d53d013304dd5e533ce0f'
'4ec9ab6cc823dc9fcc28cfc85a761546'
'2f20a165ea31e7638a37809dd5feefb1'
'05cf5c3ef40abed7757305028fb46dab')
'8ced9edee3f9c07ecfbb865b2c0419f3'
'cf2a01f644ef03b37dd7d7a22cb21cb6'
'd674128daaa2b66fe13561e64f383fb7')
prepare(){
cd "$srcdir/${_realname}-$pkgver"
@@ -42,6 +46,8 @@ prepare(){
patch -Np1 -i "$srcdir/openexr-2.1.0_cast.patch"
patch -Np1 -i "$srcdir/openexr_obsolete-macros.patch"
patch -Np1 -i "$srcdir/cmake-soversion.patch"
patch -Np2 -i "$srcdir/pull87.patch"
patch -Np2 -i "$srcdir/pull93.patch"
#./bootstrap
}

View File

@@ -199,45 +199,6 @@ diff -Naur openexr-2.1.0-orig/IlmImf/CMakeLists.txt openexr-2.1.0/IlmImf/CMakeLi
)
# Headers
diff -Naur openexr-2.1.0-orig/IlmImf/ImfMultiView.h openexr-2.1.0/IlmImf/ImfMultiView.h
--- openexr-2.1.0-orig/IlmImf/ImfMultiView.h 2013-06-18 23:51:39.000000000 +0400
+++ openexr-2.1.0/IlmImf/ImfMultiView.h 2014-05-28 16:04:49.540000000 +0400
@@ -120,6 +120,7 @@
// Return a list of all channels belonging to view viewName.
//
+IMF_EXPORT
ChannelList channelsInView (const std::string &viewName,
const ChannelList &channelList,
const StringVector &multiView);
diff -Naur openexr-2.1.0-orig/IlmImf/ImfPartType.h openexr-2.1.0/IlmImf/ImfPartType.h
--- openexr-2.1.0-orig/IlmImf/ImfPartType.h 2013-06-18 23:51:39.000000000 +0400
+++ openexr-2.1.0/IlmImf/ImfPartType.h 2014-05-29 12:51:44.539600000 +0400
@@ -37,6 +37,7 @@
#include <string>
#include "ImfNamespace.h"
+#include "ImfExport.h"
OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER
@@ -46,12 +47,16 @@
const std::string DEEPSCANLINE = "deepscanline";
const std::string DEEPTILE = "deeptile";
+IMF_EXPORT
bool isImage(const std::string& name);
+IMF_EXPORT
bool isTiled(const std::string& name);
+IMF_EXPORT
bool isDeepData(const std::string& name);
+IMF_EXPORT
bool isSupportedType(const std::string& name);
diff -Naur openexr-2.1.0-orig/IlmImfExamples/CMakeLists.txt openexr-2.1.0/IlmImfExamples/CMakeLists.txt
--- openexr-2.1.0-orig/IlmImfExamples/CMakeLists.txt 2013-11-25 23:49:53.000000000 +0400
+++ openexr-2.1.0/IlmImfExamples/CMakeLists.txt 2014-05-28 15:26:49.508000000 +0400

View File

@@ -0,0 +1,25 @@
From 2aa28bb574064749b434bef435c35bd2bd018b69 Mon Sep 17 00:00:00 2001
From: Marcus von Appen <mva@sysfault.org>
Date: Sun, 12 Jan 2014 13:43:29 +0100
Subject: [PATCH] - make library naming of libIlmImf consistent for cmake and
the autotools
---
OpenEXR/configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/OpenEXR/configure.ac b/OpenEXR/configure.ac
index 90570d4..9b378dc 100644
--- a/OpenEXR/configure.ac
+++ b/OpenEXR/configure.ac
@@ -261,7 +261,7 @@ if test "x${library_namespace_versioning}" == xyes ; then
AC_DEFINE(OPENEXR_IMF_INTERNAL_NAMESPACE_CUSTOM)
lib_namespace="Imf_${OPENEXR_VERSION_API}"
- LIB_SUFFIX="Imf_${OPENEXR_VERSION_API}"
+ LIB_SUFFIX="${OPENEXR_VERSION_API}"
lib_suffix_valid="yes"
elif test "x${library_namespace_versioning}" == xno ; then
AC_DEFINE_UNQUOTED(OPENEXR_IMF_INTERNAL_NAMESPACE, Imf)
--
1.9.3

View File

@@ -0,0 +1,171 @@
diff --git a/OpenEXR/IlmImf/ImfCompositeDeepScanLine.h b/OpenEXR/IlmImf/ImfCompositeDeepScanLine.h
index 2dc23e5..00e6225 100644
--- a/OpenEXR/IlmImf/ImfCompositeDeepScanLine.h
+++ b/OpenEXR/IlmImf/ImfCompositeDeepScanLine.h
@@ -62,7 +62,7 @@
#include "ImfForward.h"
#include "ImfNamespace.h"
#include "ImfExport.h"
-#include <ImathBox.h>
+#include "ImathBox.h"
OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER
diff --git a/OpenEXR/IlmImf/ImfSystemSpecific.h b/OpenEXR/IlmImf/ImfSystemSpecific.h
index 01073bc..aceb3e3 100644
--- a/OpenEXR/IlmImf/ImfSystemSpecific.h
+++ b/OpenEXR/IlmImf/ImfSystemSpecific.h
@@ -35,7 +35,7 @@
#ifndef INCLUDED_IMF_COMPILER_SPECIFIC_H
#define INCLUDED_IMF_COMPILER_SPECIFIC_H
-#include <ImfNamespace.h>
+#include "ImfNamespace.h"
#include <stdlib.h>
OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER
diff --git a/OpenEXR/CMakeLists.txt b/OpenEXR/CMakeLists.txt
index e7ca771..24f55ae 100644
--- a/OpenEXR/CMakeLists.txt
+++ b/OpenEXR/CMakeLists.txt
@@ -52,8 +52,12 @@ SET (LIB_TYPE STATIC)
IF (BUILD_SHARED_LIBS)
# User wants to build Dynamic Libraries, so change the LIB_TYPE variable to CMake keyword 'SHARED'
SET (LIB_TYPE SHARED)
- IF (WIN32)
+ IF (WIN32)
ADD_DEFINITIONS(-DOPENEXR_DLL)
+ ELSE ()
+ IF (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.1)
+ ADD_DEFINITIONS ( -fvisibility=hidden -DPLATFORM_VISIBILITY_AVAILABLE=1 )
+ ENDIF ()
ENDIF ()
ENDIF ()
diff --git a/OpenEXR/IlmImf/ImfChannelList.h b/OpenEXR/IlmImf/ImfChannelList.h
index fc31a15..4c18c33 100644
--- a/OpenEXR/IlmImf/ImfChannelList.h
+++ b/OpenEXR/IlmImf/ImfChannelList.h
@@ -270,7 +270,7 @@ class IMF_EXPORT ChannelList
// Iterators
//----------
-class ChannelList::Iterator
+class IMF_EXPORT ChannelList::Iterator
{
public:
@@ -291,7 +291,7 @@ class ChannelList::Iterator
};
-class ChannelList::ConstIterator
+class IMF_EXPORT ChannelList::ConstIterator
{
public:
diff --git a/OpenEXR/IlmImf/ImfExport.h b/OpenEXR/IlmImf/ImfExport.h
index 6563fd5..d5d4a02 100644
--- a/OpenEXR/IlmImf/ImfExport.h
+++ b/OpenEXR/IlmImf/ImfExport.h
@@ -1,3 +1,6 @@
+#ifndef IMFEXPORT_H
+#define IMFEXPORT_H
+
///////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2012, Industrial Light & Magic, a division of Lucas
@@ -32,15 +35,28 @@
//
///////////////////////////////////////////////////////////////////////////
-#if defined(OPENEXR_DLL)
- #if defined(ILMIMF_EXPORTS)
- #define IMF_EXPORT __declspec(dllexport)
- #define IMF_EXPORT_CONST extern __declspec(dllexport)
- #else
- #define IMF_EXPORT __declspec(dllimport)
- #define IMF_EXPORT_CONST extern __declspec(dllimport)
+#if defined(_WIN32)
+# if defined(OPENEXR_DLL)
+# define IMF_EXPORT_DEFINITION __declspec(dllexport)
+# define IMF_IMPORT_DEFINITION __declspec(dllimport)
+# else
+# define IMF_EXPORT_DEFINITION
+# define IMF_IMPORT_DEFINITION
+# endif
+#else // linux/macos
+# if defined(PLATFORM_VISIBILITY_AVAILABLE)
+# define IMF_EXPORT_DEFINITION __attribute__((visibility("default")))
+# define IMF_IMPORT_DEFINITION
+# else
+# define IMF_EXPORT_DEFINITION
+# define IMF_IMPORT_DEFINITION
+# endif
#endif
-#else
- #define IMF_EXPORT
- #define IMF_EXPORT_CONST extern const
+
+#if defined(ILMIMF_EXPORTS) // create library
+# define IMF_EXPORT IMF_EXPORT_DEFINITION
+#else // use library
+# define IMF_EXPORT IMF_IMPORT_DEFINITION
#endif
+
+#endif // IMFEXPORT_H
diff --git a/OpenEXR/IlmImf/ImfHeader.h b/OpenEXR/IlmImf/ImfHeader.h
index 756a62e..dd71e0e 100644
--- a/OpenEXR/IlmImf/ImfHeader.h
+++ b/OpenEXR/IlmImf/ImfHeader.h
@@ -493,7 +493,7 @@ class Header::ConstIterator
//
//------------------------------------------------------------------------
-void staticInitialize ();
+IMF_EXPORT void staticInitialize ();
//-----------------
diff --git a/OpenEXR/IlmImf/ImfMultiView.h b/OpenEXR/IlmImf/ImfMultiView.h
index 22b3a50..127f97d 100644
--- a/OpenEXR/IlmImf/ImfMultiView.h
+++ b/OpenEXR/IlmImf/ImfMultiView.h
@@ -120,6 +120,7 @@ bool areCounterparts (const std::string &channel1,
// Return a list of all channels belonging to view viewName.
//
+IMF_EXPORT
ChannelList channelsInView (const std::string &viewName,
const ChannelList &channelList,
const StringVector &multiView);
diff --git a/OpenEXR/IlmImf/ImfPartType.h b/OpenEXR/IlmImf/ImfPartType.h
index 670d07b..423bce0 100644
--- a/OpenEXR/IlmImf/ImfPartType.h
+++ b/OpenEXR/IlmImf/ImfPartType.h
@@ -37,6 +37,7 @@
#include <string>
#include "ImfNamespace.h"
+#include "ImfExport.h"
OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER
@@ -46,13 +47,13 @@ const std::string TILEDIMAGE = "tiledimage";
const std::string DEEPSCANLINE = "deepscanline";
const std::string DEEPTILE = "deeptile";
-bool isImage(const std::string& name);
+IMF_EXPORT bool isImage(const std::string& name);
-bool isTiled(const std::string& name);
+IMF_EXPORT bool isTiled(const std::string& name);
-bool isDeepData(const std::string& name);
+IMF_EXPORT bool isDeepData(const std::string& name);
-bool isSupportedType(const std::string& name);
+IMF_EXPORT bool isSupportedType(const std::string& name);
OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT