[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44454] trunk/lib/windows/gcc/openimageio: OpenImageIO 1.0 for MinGW.
Antony Riakiotakis
kalast at gmail.com
Sun Feb 26 10:16:57 CET 2012
Revision: 44454
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44454
Author: psy-fi
Date: 2012-02-26 09:16:47 +0000 (Sun, 26 Feb 2012)
Log Message:
-----------
OpenImageIO 1.0 for MinGW. It will likely require gcc 4.6 compiled boost to link(coming next)
Modified Paths:
--------------
trunk/lib/windows/gcc/openimageio/include/OpenImageIO/argparse.h
trunk/lib/windows/gcc/openimageio/include/OpenImageIO/filesystem.h
trunk/lib/windows/gcc/openimageio/include/OpenImageIO/fmath.h
trunk/lib/windows/gcc/openimageio/include/OpenImageIO/imagebuf.h
trunk/lib/windows/gcc/openimageio/include/OpenImageIO/imagebufalgo.h
trunk/lib/windows/gcc/openimageio/include/OpenImageIO/imagecache.h
trunk/lib/windows/gcc/openimageio/include/OpenImageIO/imageio.h
trunk/lib/windows/gcc/openimageio/include/OpenImageIO/paramlist.h
trunk/lib/windows/gcc/openimageio/include/OpenImageIO/refcnt.h
trunk/lib/windows/gcc/openimageio/include/OpenImageIO/strutil.h
trunk/lib/windows/gcc/openimageio/include/OpenImageIO/sysutil.h
trunk/lib/windows/gcc/openimageio/include/OpenImageIO/texture.h
trunk/lib/windows/gcc/openimageio/include/OpenImageIO/thread.h
trunk/lib/windows/gcc/openimageio/include/OpenImageIO/timer.h
trunk/lib/windows/gcc/openimageio/include/OpenImageIO/typedesc.h
trunk/lib/windows/gcc/openimageio/include/OpenImageIO/ustring.h
trunk/lib/windows/gcc/openimageio/include/OpenImageIO/version.h
trunk/lib/windows/gcc/openimageio/lib/libOpenImageIO.a
trunk/lib/windows/gcc/openimageio/oiio-build.bat
Added Paths:
-----------
trunk/lib/windows/gcc/openimageio/0001-changes-made-to-compile-with-MinGW.patch
trunk/lib/windows/gcc/openimageio/0002-Still-one-more-fix.patch
trunk/lib/windows/gcc/openimageio/include/OpenImageIO/color.h
trunk/lib/windows/gcc/openimageio/include/OpenImageIO/optparser.h
trunk/lib/windows/gcc/openimageio/include/OpenImageIO/plugin.h
Added: trunk/lib/windows/gcc/openimageio/0001-changes-made-to-compile-with-MinGW.patch
===================================================================
--- trunk/lib/windows/gcc/openimageio/0001-changes-made-to-compile-with-MinGW.patch (rev 0)
+++ trunk/lib/windows/gcc/openimageio/0001-changes-made-to-compile-with-MinGW.patch 2012-02-26 09:16:47 UTC (rev 44454)
@@ -0,0 +1,490 @@
+From d4e2c586bb89d0cace50c1262fb2953e891c1c7b Mon Sep 17 00:00:00 2001
+From: Antony Riakiotakis <kalast at gmail.com>
+Date: Sun, 26 Feb 2012 09:11:05 +0200
+Subject: [PATCH 1/2] changes made to compile with MinGW
+
+---
+ src/CMakeLists.txt | 74 +++++++++++++++++-----------------
+ src/cmake/externalpackages.cmake | 2 +-
+ src/include/fmath.h | 5 +-
+ src/include/thread.h | 35 +++++++++++++++-
+ src/libOpenImageIO/CMakeLists.txt | 59 ++++++++++++++-------------
+ src/libOpenImageIO/exif.cpp | 1 +
+ src/libOpenImageIO/imagebufalgo.cpp | 1 +
+ src/libOpenImageIO/imageinput.cpp | 1 +
+ src/libtexture/imagecache.cpp | 1 +
+ src/libtexture/texoptions.cpp | 1 +
+ src/libutil/argparse.cpp | 1 +
+ src/libutil/plugin.cpp | 3 +-
+ src/libutil/sysutil.cpp | 2 +-
+ src/ptex.imageio/ptex/PtexCache.cpp | 21 +++++++---
+ src/ptex.imageio/ptex/PtexPlatform.h | 8 ++++
+ src/rla.imageio/rlaoutput.cpp | 1 +
+ 16 files changed, 139 insertions(+), 77 deletions(-)
+
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index ab50502..ad005ae 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -182,15 +182,15 @@ endif (MSVC)
+ # Tell CMake to process the sub-directories
+ add_subdirectory (libOpenImageIO)
+
+-add_subdirectory (iconvert)
+-add_subdirectory (idiff)
+-add_subdirectory (igrep)
+-add_subdirectory (iinfo)
+-add_subdirectory (iprocess)
+-add_subdirectory (maketx)
+-add_subdirectory (oiiotool)
+-add_subdirectory (testtex)
+-add_subdirectory (iv)
++#add_subdirectory (iconvert)
++#add_subdirectory (idiff)
++#add_subdirectory (igrep)
++#add_subdirectory (iinfo)
++#add_subdirectory (iprocess)
++#add_subdirectory (maketx)
++#add_subdirectory (oiiotool)
++#add_subdirectory (testtex)
++#add_subdirectory (iv)
+ # Add IO plugin directories
+ if (NOT EMBEDPLUGINS)
+ add_subdirectory (bmp.imageio)
+@@ -229,42 +229,42 @@ add_subdirectory (doc)
+ # Testing
+
+ # List all the individual testsuite tests here:
+-oiio_add_tests (ico gpsread oiiotool sgi rla psd dpx
+- texture-fill texture-gray texture-grid
+- texture-missing texture-overscan
+- texture-pointsample texture-res
+- texture-skinny texture-fat
+- imagecache-files texture-field3d)
++#oiio_add_tests (ico gpsread oiiotool sgi rla psd dpx
++# texture-fill texture-gray texture-grid
++# texture-missing texture-overscan
++# texture-pointsample texture-res
++# texture-skinny texture-fat
++# imagecache-files texture-field3d)
+
+ # List testsuites which need special external reference images from the web
+ # here:
+-oiio_add_tests (bmp
+- IMAGEDIR bmpsuite
+- URL http://entropymine.com/jason/bmpsuite/bmpsuite.zip)
++#oiio_add_tests (bmp
++# IMAGEDIR bmpsuite
++# URL http://entropymine.com/jason/bmpsuite/bmpsuite.zip)
+
+-oiio_add_tests (tiff-suite tiff-depths
+- IMAGEDIR libtiffpic
+- URL http://www.remotesensing.org/libtiff/images.html)
++#oiio_add_tests (tiff-suite tiff-depths
++# IMAGEDIR libtiffpic
++# URL http://www.remotesensing.org/libtiff/images.html)
+
+-oiio_add_tests (openexr-suite openexr-multires openexr-chroma
+- IMAGEDIR openexr-images-1.5.0
+- URL http://www.openexr.com/downloads.html)
++#oiio_add_tests (openexr-suite openexr-multires openexr-chroma
++# IMAGEDIR openexr-images-1.5.0
++# URL http://www.openexr.com/downloads.html)
+
+-oiio_add_tests (jpeg2000
+- IMAGEDIR j2kp4files_v1_5
+- URL http://www.itu.int/net/ITU-T/sigdb/speimage/ImageForm-s.aspx?val=10100803)
++#oiio_add_tests (jpeg2000
++# IMAGEDIR j2kp4files_v1_5
++# URL http://www.itu.int/net/ITU-T/sigdb/speimage/ImageForm-s.aspx?val=10100803)
+
+-oiio_add_tests (targa-tgautils
+- IMAGEDIR TGAUTILS
+- URL http://tgautils.inequation.org/)
++#oiio_add_tests (targa-tgautils
++# IMAGEDIR TGAUTILS
++# URL http://tgautils.inequation.org/)
+
+-oiio_add_tests (fits
+- IMAGEDIR fits-images
+- URL http://www.cv.nrao.edu/fits/data/tests/)
++#oiio_add_tests (fits
++# IMAGEDIR fits-images
++# URL http://www.cv.nrao.edu/fits/data/tests/)
+
+-oiio_add_tests (webp
+- IMAGEDIR webp-images
+- URL http://code.google.com/speed/webp/gallery.html)
++#oiio_add_tests (webp
++# IMAGEDIR webp-images
++# URL http://code.google.com/speed/webp/gallery.html)
+
+ #########################################################################
+ # Packaging
+@@ -297,7 +297,7 @@ if (WIN32)
+ set(CPACK_PACKAGE_EXECUTABLES "iv" "iv - Image Viewer")
+ # set(CPACK_CREATE_DESCTOP_LINKS "iv" "iv - Image Viewer")
+ set(CPACK_NSIS_MODIFY_PATH ON)
+- add_dll_files ()
++ #add_dll_files ()
+ include (InstallRequiredSystemLibraries)
+ endif ()
+ set (CPACK_SOURCE_PACKAGE_FILE_NAME OpenImageIO-${OIIO_VERSION_MAJOR}.${OIIO_VERSION_MINOR}.${OIIO_VERSION_PATCH}-source)
+diff --git a/src/cmake/externalpackages.cmake b/src/cmake/externalpackages.cmake
+index 124a848..7fbdaf9 100644
+--- a/src/cmake/externalpackages.cmake
++++ b/src/cmake/externalpackages.cmake
+@@ -82,7 +82,7 @@ endmacro ()
+
+ message (STATUS "BOOST_ROOT ${BOOST_ROOT}")
+
+-set (Boost_ADDITIONAL_VERSIONS "1.45" "1.44"
++set (Boost_ADDITIONAL_VERSIONS "1.47" "1_46_1" "1.45" "1.44"
+ "1.43" "1.43.0" "1.42" "1.42.0"
+ "1.41" "1.41.0" "1.40" "1.40.0"
+ "1.39" "1.39.0" "1.38" "1.38.0"
+diff --git a/src/include/fmath.h b/src/include/fmath.h
+index 9e784ba..8cfcd80 100644
+--- a/src/include/fmath.h
++++ b/src/include/fmath.h
+@@ -43,6 +43,7 @@
+ #define OPENIMAGEIO_FMATH_H
+
+ #include <cmath>
++#include <float.h>
+ #include <limits>
+ #include <typeinfo>
+ #include <algorithm>
+@@ -834,7 +835,7 @@ inline float degrees (float rad) { return rad * (float)(180.0 / M_PI); }
+
+
+
+-#ifdef _WIN32
++#if defined(_WIN32) && !defined(__GNUC__)
+ // Windows doesn't define these functions from math.h
+ #define hypotf _hypotf
+ #define copysign(x,y) _copysign(x,y)
+@@ -959,7 +960,7 @@ truncf(float val)
+
+
+ // Some systems have isnan, isinf and isfinite in the std namespace.
+-#ifndef WIN32
++#if !defined(WIN32) || defined(__GNUC__)
+ using std::isnan;
+ using std::isinf;
+ using std::isfinite;
+diff --git a/src/include/thread.h b/src/include/thread.h
+index f651051..f4d51db 100644
+--- a/src/include/thread.h
++++ b/src/include/thread.h
+@@ -254,7 +254,33 @@ private:
+
+ #endif
+
+-
++inline LONGLONG _InterlockedCompareExchange64(LONGLONG volatile* Destination, LONGLONG Exchange, LONGLONG Comperand)
++{
++#ifndef __GNUC__
++ __asm {
++ mov esi, [Destination]
++ mov ebx, dword ptr [Exchange]
++ mov ecx, dword ptr [Exchange + 4]
++ mov eax, dword ptr [Comperand]
++ mov edx, dword ptr [Comperand + 4]
++ lock cmpxchg8b [esi]
++ }
++#else
++ LONGLONG *ep = &Exchange;
++ LONGLONG *cp = &Comperand;
++
++ asm("movl (%2), %%ebx\n\t"
++ "movl 4(%2), %%ecx\n\t"
++ "movl (%1), %%eax\n\t"
++ "movl 4(%1), %%edx\n\t"
++ "lock\n\t"
++ "cmpxchg8b (%0)\n\t"
++ : "=r" (Destination)
++ : "r" (cp), "r" (ep)
++ : "%edx", "%eax", "%ecx", "%ebx"
++ );
++#endif
++}
+
+ /// Atomic version of: r = *at, *at += x, return r
+ /// For each of several architectures.
+@@ -291,6 +317,7 @@ atomic_exchange_and_add (volatile long long *at, long long x)
+ // Apple, not inline for Intel (only PPC?)
+ return OSAtomicAdd64Barrier (x, at) - x;
+ #elif defined(_WIN32)
++#if !defined(__GNUC__)
+ // Windows
+ # if defined(_WIN64)
+ return _InterlockedExchangeAdd64 ((volatile LONGLONG *)at, x);
+@@ -298,6 +325,12 @@ atomic_exchange_and_add (volatile long long *at, long long x)
+ return InterlockedExchangeAdd64 ((volatile LONGLONG *)at, x);
+ # endif
+ #else
++ LONGLONG Old;
++ do Old = *at;
++ while (_InterlockedCompareExchange64(at, Old + x, Old) != Old);
++ return Old;
++#endif
++#else
+ # error No atomics on this platform.
+ #endif
+ }
+diff --git a/src/libOpenImageIO/CMakeLists.txt b/src/libOpenImageIO/CMakeLists.txt
+index baed860..67f890b 100644
+--- a/src/libOpenImageIO/CMakeLists.txt
++++ b/src/libOpenImageIO/CMakeLists.txt
+@@ -248,42 +248,45 @@ oiio_install_targets (OpenImageIO)
+ if (NOT LINKSTATIC)
+ add_definitions (-DBOOST_TEST_DYN_LINK)
+ add_definitions (-DPTEX_EXPORTS)
++else ()
++
++ add_definitions (-DPTEX_STATIC)
+ endif ()
+
+-add_executable (imagebufalgo_test imagebufalgo_test.cpp)
+-link_ilmbase (imagebufalgo_test)
+-target_link_libraries (imagebufalgo_test OpenImageIO ${Boost_LIBRARIES} ${CMAKE_DL_LIBS})
+-add_test (imagebufalgo ${CMAKE_BINARY_DIR}/libOpenImageIO/imagebufalgo_test)
++#add_executable (imagebufalgo_test imagebufalgo_test.cpp)
++#link_ilmbase (imagebufalgo_test)
++#target_link_libraries (imagebufalgo_test OpenImageIO ${Boost_LIBRARIES} ${CMAKE_DL_LIBS})
++#add_test (imagebufalgo ${CMAKE_BINARY_DIR}/libOpenImageIO/imagebufalgo_test)
+
+
+-add_executable (atomic_test atomic_test.cpp)
+-target_link_libraries (atomic_test OpenImageIO ${Boost_LIBRARIES} ${CMAKE_DL_LIBS})
+-add_test (unit_atomic ${CMAKE_BINARY_DIR}/libOpenImageIO/atomic_test)
++#add_executable (atomic_test atomic_test.cpp)
++#target_link_libraries (atomic_test OpenImageIO ${Boost_LIBRARIES} ${CMAKE_DL_LIBS})
++#add_test (unit_atomic ${CMAKE_BINARY_DIR}/libOpenImageIO/atomic_test)
+
+-add_executable (spinlock_test spinlock_test.cpp)
+-target_link_libraries (spinlock_test OpenImageIO ${Boost_LIBRARIES} ${CMAKE_DL_LIBS})
+-add_test (unit_spinlock ${CMAKE_BINARY_DIR}/libOpenImageIO/spinlock_test)
++#add_executable (spinlock_test spinlock_test.cpp)
++#target_link_libraries (spinlock_test OpenImageIO ${Boost_LIBRARIES} ${CMAKE_DL_LIBS})
++#add_test (unit_spinlock ${CMAKE_BINARY_DIR}/libOpenImageIO/spinlock_test)
+
+-add_executable (ustring_test ustring_test.cpp)
+-target_link_libraries (ustring_test OpenImageIO ${Boost_LIBRARIES} ${CMAKE_DL_LIBS})
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list