23086502 Upgrade ilmbase to 2.2.0
authorJingning Ji <jingning.ji@oracle.com>
Tue, 14 Feb 2017 16:38:32 -0800
changeset 7696 3d9ec1a1fe4e
parent 7695 b9a14419e530
child 7697 8a41b565423d
23086502 Upgrade ilmbase to 2.2.0
components/ilmbase/Makefile
components/ilmbase/ilmbase.p5m
components/ilmbase/patches/000-ltmain.patch
components/ilmbase/patches/001-configure.patch
components/ilmbase/patches/002-builtin-trap.patch
components/ilmbase/patches/003-IexMathFpu.patch
components/ilmbase/test/results-all.master
--- a/components/ilmbase/Makefile	Fri Feb 24 09:00:04 2017 -0800
+++ b/components/ilmbase/Makefile	Tue Feb 14 16:38:32 2017 -0800
@@ -26,15 +26,15 @@
 include ../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=         ilmbase
-COMPONENT_VERSION=      1.0.1
+COMPONENT_VERSION=      2.2.0
 COMPONENT_PROJECT_URL=  http://www.openexr.com/
 COMPONENT_ARCHIVE_HASH= \
-    sha256:4f14fc7b26a37a391ec5f979697148e6774bc36bc052de26e40ffabe401e397d
+    sha256:ecf815b60695555c1fbc73679e84c7c9902f4e8faa6e8000d2f905b8b86cedc7
 COMPONENT_ARCHIVE_URL=  http://download.savannah.nongnu.org/releases/openexr/$(COMPONENT_ARCHIVE)
 COMPONENT_BUGDB=	library/openexr
 COMPONENT_ANITYA_ID=	13285
 
-TPNO=			5574
+TPNO=			32620
 
 include $(WS_MAKE_RULES)/common.mk
 
@@ -44,7 +44,7 @@
 CXXFLAGS += $(CPP_LARGEFILES)
 # it seems that --with-pic doesn't get PIC flags to the C++ compiler
 CXXFLAGS += $(CC_PIC)
-CXXFLAGS += -std=sun03 
+CXXFLAGS += -std=sun03
 # libtools seems to be forcing -nolibs, so we have to add back libc, libm,
 # libCstd and libCrun. The last two are needed because with Studio 12.2
 # (and beyond), there is a bug in the CC driver that is not correctly using
@@ -57,6 +57,7 @@
 CONFIGURE_OPTIONS  +=           --enable-threading
 CONFIGURE_OPTIONS  +=           --enable-posix-sem
 CONFIGURE_OPTIONS  +=           --with-pic
+CONFIGURE_OPTIONS  +=           --enable-large-stack
 
 COMPONENT_TEST_MASTER =	$(COMPONENT_TEST_RESULTS_DIR)/results-all.master
 # Strip compilation lines from test output
@@ -66,6 +67,9 @@
 	'-e "s|^.*source=.*libtool=no.*$$|XXX_CC_XXX|g" ' \
 	'-e "s|^.*DEPDIR=.deps.*$$|XXX_CC_XXX|g" ' \
 	'-e "s|^config.status: .*$$|XXX_CC_XXX|g" ' \
+	'-e "s|^.*matrices took .* clocks.*$$|XXX_CC_XXX|g" ' \
+	'-e "s|^.*speed up.*$$|XXX_CC_XXX|g" ' \
+	'-e "/is up to date/d"' \
 	'-e "/Nothing to be done/d"' \
 	'-e "/Leaving directory/d"' \
 	'-e "/Entering directory/d"' \
--- a/components/ilmbase/ilmbase.p5m	Fri Feb 24 09:00:04 2017 -0800
+++ b/components/ilmbase/ilmbase.p5m	Tue Feb 14 16:38:32 2017 -0800
@@ -18,10 +18,10 @@
 #
 # CDDL HEADER END
 #
-# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
 #
 
-<transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
+<transform file path=usr.*/man/.+ -> default mangler.man.stability "Pass-through Uncommitted">
 set name=pkg.fmri \
     value=pkg:/library/[email protected]$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
 set name=pkg.summary \
@@ -40,12 +40,21 @@
 file path=usr/include/OpenEXR/Iex.h
 file path=usr/include/OpenEXR/IexBaseExc.h
 file path=usr/include/OpenEXR/IexErrnoExc.h
+file path=usr/include/OpenEXR/IexExport.h
+file path=usr/include/OpenEXR/IexForward.h
 file path=usr/include/OpenEXR/IexMacros.h
 file path=usr/include/OpenEXR/IexMathExc.h
+file path=usr/include/OpenEXR/IexMathFloatExc.h
+file path=usr/include/OpenEXR/IexMathFpu.h
+file path=usr/include/OpenEXR/IexMathIeeeExc.h
+file path=usr/include/OpenEXR/IexNamespace.h
 file path=usr/include/OpenEXR/IexThrowErrnoExc.h
 file path=usr/include/OpenEXR/IlmBaseConfig.h
 file path=usr/include/OpenEXR/IlmThread.h
+file path=usr/include/OpenEXR/IlmThreadExport.h
+file path=usr/include/OpenEXR/IlmThreadForward.h
 file path=usr/include/OpenEXR/IlmThreadMutex.h
+file path=usr/include/OpenEXR/IlmThreadNamespace.h
 file path=usr/include/OpenEXR/IlmThreadPool.h
 file path=usr/include/OpenEXR/IlmThreadSemaphore.h
 file path=usr/include/OpenEXR/ImathBox.h
@@ -54,8 +63,11 @@
 file path=usr/include/OpenEXR/ImathColorAlgo.h
 file path=usr/include/OpenEXR/ImathEuler.h
 file path=usr/include/OpenEXR/ImathExc.h
+file path=usr/include/OpenEXR/ImathExport.h
+file path=usr/include/OpenEXR/ImathForward.h
 file path=usr/include/OpenEXR/ImathFrame.h
 file path=usr/include/OpenEXR/ImathFrustum.h
+file path=usr/include/OpenEXR/ImathFrustumTest.h
 file path=usr/include/OpenEXR/ImathFun.h
 file path=usr/include/OpenEXR/ImathGL.h
 file path=usr/include/OpenEXR/ImathGLU.h
@@ -68,6 +80,7 @@
 file path=usr/include/OpenEXR/ImathMath.h
 file path=usr/include/OpenEXR/ImathMatrix.h
 file path=usr/include/OpenEXR/ImathMatrixAlgo.h
+file path=usr/include/OpenEXR/ImathNamespace.h
 file path=usr/include/OpenEXR/ImathPlane.h
 file path=usr/include/OpenEXR/ImathPlatform.h
 file path=usr/include/OpenEXR/ImathQuat.h
@@ -79,34 +92,42 @@
 file path=usr/include/OpenEXR/ImathVecAlgo.h
 #
 file path=usr/include/OpenEXR/half.h
+file path=usr/include/OpenEXR/halfExport.h
 file path=usr/include/OpenEXR/halfFunction.h
 file path=usr/include/OpenEXR/halfLimits.h
-link path=usr/lib/$(MACH64)/libHalf.so target=libHalf.so.6.0.0
-link path=usr/lib/$(MACH64)/libHalf.so.6 target=libHalf.so.6.0.0
-file path=usr/lib/$(MACH64)/libHalf.so.6.0.0
-link path=usr/lib/$(MACH64)/libIex.so target=libIex.so.6.0.0
-link path=usr/lib/$(MACH64)/libIex.so.6 target=libIex.so.6.0.0
-file path=usr/lib/$(MACH64)/libIex.so.6.0.0
-link path=usr/lib/$(MACH64)/libIlmThread.so target=libIlmThread.so.6.0.0
-link path=usr/lib/$(MACH64)/libIlmThread.so.6 target=libIlmThread.so.6.0.0
-file path=usr/lib/$(MACH64)/libIlmThread.so.6.0.0
-link path=usr/lib/$(MACH64)/libImath.so target=libImath.so.6.0.0
-link path=usr/lib/$(MACH64)/libImath.so.6 target=libImath.so.6.0.0
-file path=usr/lib/$(MACH64)/libImath.so.6.0.0
+link path=usr/lib/$(MACH64)/libHalf.so target=libHalf.so.12.0.0
+link path=usr/lib/$(MACH64)/libHalf.so.12 target=libHalf.so.12.0.0
+file path=usr/lib/$(MACH64)/libHalf.so.12.0.0
+link path=usr/lib/$(MACH64)/libIex-2_2.so.12 target=libIex-2_2.so.12.0.0
+file path=usr/lib/$(MACH64)/libIex-2_2.so.12.0.0
+link path=usr/lib/$(MACH64)/libIex.so target=libIex-2_2.so.12.0.0
+link path=usr/lib/$(MACH64)/libIexMath-2_2.so.12 target=libIexMath-2_2.so.12.0.0
+file path=usr/lib/$(MACH64)/libIexMath-2_2.so.12.0.0
+link path=usr/lib/$(MACH64)/libIexMath.so target=libIexMath-2_2.so.12.0.0
+link path=usr/lib/$(MACH64)/libIlmThread-2_2.so.12 \
+    target=libIlmThread-2_2.so.12.0.0
+file path=usr/lib/$(MACH64)/libIlmThread-2_2.so.12.0.0
+link path=usr/lib/$(MACH64)/libIlmThread.so target=libIlmThread-2_2.so.12.0.0
+link path=usr/lib/$(MACH64)/libImath-2_2.so.12 target=libImath-2_2.so.12.0.0
+file path=usr/lib/$(MACH64)/libImath-2_2.so.12.0.0
+link path=usr/lib/$(MACH64)/libImath.so target=libImath-2_2.so.12.0.0
 file path=usr/lib/$(MACH64)/pkgconfig/IlmBase.pc
-link path=usr/lib/libHalf.so target=libHalf.so.6.0.0
+link path=usr/lib/libHalf.so target=libHalf.so.12.0.0
 #
-link path=usr/lib/libHalf.so.6 target=libHalf.so.6.0.0
-file path=usr/lib/libHalf.so.6.0.0
-link path=usr/lib/libIex.so target=libIex.so.6.0.0
-link path=usr/lib/libIex.so.6 target=libIex.so.6.0.0
-file path=usr/lib/libIex.so.6.0.0
-link path=usr/lib/libIlmThread.so target=libIlmThread.so.6.0.0
-link path=usr/lib/libIlmThread.so.6 target=libIlmThread.so.6.0.0
-file path=usr/lib/libIlmThread.so.6.0.0
-link path=usr/lib/libImath.so target=libImath.so.6.0.0
-link path=usr/lib/libImath.so.6 target=libImath.so.6.0.0
-file path=usr/lib/libImath.so.6.0.0
+link path=usr/lib/libHalf.so.12 target=libHalf.so.12.0.0
+file path=usr/lib/libHalf.so.12.0.0
+link path=usr/lib/libIex-2_2.so.12 target=libIex-2_2.so.12.0.0
+file path=usr/lib/libIex-2_2.so.12.0.0
+link path=usr/lib/libIex.so target=libIex-2_2.so.12.0.0
+link path=usr/lib/libIexMath-2_2.so.12 target=libIexMath-2_2.so.12.0.0
+file path=usr/lib/libIexMath-2_2.so.12.0.0
+link path=usr/lib/libIexMath.so target=libIexMath-2_2.so.12.0.0
+link path=usr/lib/libIlmThread-2_2.so.12 target=libIlmThread-2_2.so.12.0.0
+file path=usr/lib/libIlmThread-2_2.so.12.0.0
+link path=usr/lib/libIlmThread.so target=libIlmThread-2_2.so.12.0.0
+link path=usr/lib/libImath-2_2.so.12 target=libImath-2_2.so.12.0.0
+file path=usr/lib/libImath-2_2.so.12.0.0
+link path=usr/lib/libImath.so target=libImath-2_2.so.12.0.0
 file path=usr/lib/pkgconfig/IlmBase.pc
 file Solaris/libilmbase.3lib path=usr/share/man/man3lib/libilmbase.3lib
 #
--- a/components/ilmbase/patches/000-ltmain.patch	Fri Feb 24 09:00:04 2017 -0800
+++ b/components/ilmbase/patches/000-ltmain.patch	Tue Feb 14 16:38:32 2017 -0800
@@ -1,42 +1,15 @@
-*** ilmbase-1.0.1/ltmain.sh.org	Thu Jun 26 19:20:21 2008
---- ltmain.sh	Thu Jun 26 19:18:49 2008
-***************
-*** 1553,1561 ****
-  	esac
-          compile_command="$compile_command $arg"
-          finalize_command="$finalize_command $arg"
-!         if test "$with_gcc" = "yes" ; then
-            compiler_flags="$compiler_flags $arg"
-!         fi
-          continue
-          ;;
-  
---- 1553,1562 ----
-  	esac
-          compile_command="$compile_command $arg"
-          finalize_command="$finalize_command $arg"
-!         # comment out this to support 64bit for CC
-!         #if test "$with_gcc" = "yes" ; then
-            compiler_flags="$compiler_flags $arg"
-!         #fi
-          continue
-          ;;
-  
-***************
-*** 4015,4021 ****
-  	save_ifs="$IFS"; IFS='~'
-  	for cmd in $cmds; do
-  	  IFS="$save_ifs"
-! 	  eval cmd=\"$cmd\"
-  	  $show "$cmd"
-  	  $run eval "$cmd" || exit $?
-  	done
---- 4016,4023 ----
-  	save_ifs="$IFS"; IFS='~'
-  	for cmd in $cmds; do
-  	  IFS="$save_ifs"
-!           # Append the command to remove runpath for CC.
-! 	  eval cmd=\"$cmd -norunpath\"
-  	  $show "$cmd"
-  	  $run eval "$cmd" || exit $?
-  	done
+Addresses publish error by removing runpath for CC.
+Will not send upstream.
+
+--- ltmain.sh	2016-11-14 13:28:02.161103599 +0000
++++ ltmain.sh	2016-11-14 14:11:06.669510804 +0000
[email protected]@ -7332,7 +7332,8 @@
+ 	save_ifs="$IFS"; IFS='~'
+ 	for cmd in $cmds; do
+ 	  IFS="$save_ifs"
+-	  eval cmd=\"$cmd\"
++	    # Append the command to remove runpath for CC.
++	  eval cmd=\"$cmd -norunpath \"
+ 	  $opt_silent || {
+ 	    func_quote_for_expand "$cmd"
+ 	    eval "func_echo $func_quote_for_expand_result"
--- a/components/ilmbase/patches/001-configure.patch	Fri Feb 24 09:00:04 2017 -0800
+++ b/components/ilmbase/patches/001-configure.patch	Tue Feb 14 16:38:32 2017 -0800
@@ -1,150 +1,23 @@
---- configure	2007-10-09 14:28:30.000000000 -0700
-+++ configure	2011-03-15 10:44:19.669826790 -0700
[email protected]@ -2474,13 +2474,13 @@
-   if test "$GXX" = yes; then
-     CXXFLAGS="-g -O2"
-   else
--    CXXFLAGS="-g"
-+    CXXFLAGS="${CXXFLAGS}"
-   fi
- else
-   if test "$GXX" = yes; then
-     CXXFLAGS="-O2"
-   else
--    CXXFLAGS=
-+    CXXFLAGS="${CXXFLAGS}"
-   fi
- fi
- for ac_declaration in \
[email protected]@ -3304,13 +3304,13 @@
-   if test "$GCC" = yes; then
-     CFLAGS="-g -O2"
-   else
--    CFLAGS="-g"
-+    CFLAGS="${CFLAGS}"
-   fi
- else
-   if test "$GCC" = yes; then
-     CFLAGS="-O2"
-   else
--    CFLAGS=
-+    CFLAGS="${CFLAGS}"
-   fi
- fi
- echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
[email protected]@ -4416,7 +4416,7 @@
-   echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-       # Double quotes because CPP needs to be expanded
--    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-+    for CPP in "$CPP" "$CC $CPPFLAGS $CFLAGS -E"
-     do
-       ac_preproc_ok=false
- for ac_c_preproc_warn_flag in '' yes
[email protected]@ -5040,7 +5040,7 @@
-   echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-       # Double quotes because CXXCPP needs to be expanded
--    for CXXCPP in "$CXX -E" "/lib/cpp"
-+    for CXXCPP in "$CXXCPP" "$CXX $CPPFLAGS $CXXFLAGS -E"
-     do
-       ac_preproc_ok=false
- for ac_cxx_preproc_warn_flag in '' yes
[email protected]@ -7533,17 +7533,17 @@
-       ;;
- 
-     solaris*)
--      no_undefined_flag=' -z text'
-+      no_undefined_flag=' -z text -z defs -z ignore'
-       if test "$GCC" = yes; then
- 	archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- 	archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
- 	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
-       else
--	archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+	archive_cmds='$CC $CFLAGS $LDFLAGS -G ${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
- 	archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
--  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-+  	$CC $CFLAGS $LDFLAGS -G ${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-       fi
--      hardcode_libdir_flag_spec='-R$libdir'
-+      hardcode_libdir_flag_spec=''
-       hardcode_shlibpath_var=no
-       case $host_os in
-       solaris2.[0-5] | solaris2.[0-5].*) ;;
[email protected]@ -10747,11 +10747,11 @@
-       CC)
- 	# Sun C++ 4.2, 5.x and Centerline C++
- 	no_undefined_flag_CXX=' -zdefs'
--	archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-+	archive_cmds_CXX='$CC $CFLAGS $LDFLAGS -G ${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- 	archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
--	$CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
-+	$CC $CFLAGS $LDFLAGS -G ${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
- 
--	hardcode_libdir_flag_spec_CXX='-R$libdir'
-+	hardcode_libdir_flag_spec_CXX=''
- 	hardcode_shlibpath_var_CXX=no
- 	case $host_os in
- 	  solaris2.[0-5] | solaris2.[0-5].*) ;;
[email protected]@ -10773,13 +10773,13 @@
- 	# explicitly linking system object files so we need to strip them
- 	# from the output so that they don't get included in the library
- 	# dependencies.
--	output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-+	output_verbose_link_cmd='templist=`$CC $CFLAGS $LDFLAGS -G -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
- 
- 	# Archives containing C++ object files must be created using
- 	# "CC -xar", where "CC" is the Sun C++ compiler.  This is
- 	# necessary to make sure instantiated templates are included
- 	# in the archive.
--	old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
-+	old_archive_cmds_CXX='$CC $CFLAGS -xar -o $oldlib $oldobjs'
- 	;;
-       gcx)
- 	# Green Hills C++ Compiler
[email protected]@ -16858,7 +16858,7 @@
-       ;;
- 
-     solaris*)
--      no_undefined_flag_GCJ=' -z text'
-+      no_undefined_flag_GCJ=' -z text-z defs -z ignore'
-       if test "$GCC" = yes; then
- 	archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- 	archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
[email protected]@ -19531,7 +19531,7 @@
- # which indicates that we try without any flags at all, and "pthread-config"
- # which is a program returning the flags for the Pth emulation library.
- 
--acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
-+acx_pthread_flags="-mt"
- 
- # The ordering *is* (sometimes) important.  Some notes on the
- # individual items follow:
[email protected]@ -19847,7 +19847,7 @@
- 	LIBS="$PTHREAD_LIBS $LIBS"
- 	CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
- 	CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS"
--	CC="$PTHREAD_CC"
-+	CC="$CC"
- 
- 
- # Check whether --enable-posix-sem or --disable-posix-sem was given.
[email protected]@ -20974,7 +20974,7 @@
- echo "$as_me:$LINENO: checking for gcc optimization flags" >&5
- echo $ECHO_N "checking for gcc optimization flags... $ECHO_C" >&6
+Append -pipe to CFLAGS.
+Will not send upstream.
+
+--- configure	2016-11-14 16:35:20.860772554 +0000
++++ configure	2016-11-14 16:35:42.301383478 +0000
[email protected]@ -17146,7 +17146,7 @@
+ { $as_echo "$as_me:$LINENO: checking for gcc optimization flags" >&5
+ $as_echo_n "checking for gcc optimization flags... " >&6; }
  old_cflags=$CFLAGS
 -CFLAGS="$CFLAGS -pipe"
 +CFLAGS="$CFLAGS"
  cat >conftest.$ac_ext <<_ACEOF
  /* confdefs.h.  */
  _ACEOF
[email protected]@ -21012,7 +21012,7 @@
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); }; }; then
[email protected]@ -17180,7 +17180,7 @@
+ 	 test -z "$ac_c_werror_flag" ||
+ 	 test ! -s conftest.err
+        } && test -s conftest.$ac_objext; then
 -   EXTRA_OPT_CFLAGS="-pipe"
 +   EXTRA_OPT_CFLAGS=""
  else
-   echo "$as_me: failed program was:" >&5
+   $as_echo "$as_me: failed program was:" >&5
  sed 's/^/| /' conftest.$ac_ext >&5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/ilmbase/patches/002-builtin-trap.patch	Tue Feb 14 16:38:32 2017 -0800
@@ -0,0 +1,19 @@
+Solaris studio doesn't seem to define __builtin_trap() function, so raise SIGTRAP as a workaround.
+Will not send upstream.
+
+--- Iex/IexBaseExc.cpp	2016-11-08 15:34:26.104711329 +0000
++++ Iex/IexBaseExc.cpp	2016-11-10 13:30:11.505215478 +0000
[email protected]@ -146,11 +146,12 @@
+         ::DebugBreak();
+ }
+ #else
++#include <signal.h>
+ void
+ iex_debugTrap()
+ {
+     // how to in Linux?
+     if (0 != ::getenv("IEXDEBUGTHROW"))
+-        __builtin_trap();
++        raise(SIGTRAP);
+ }
+ #endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/ilmbase/patches/003-IexMathFpu.patch	Tue Feb 14 16:38:32 2017 -0800
@@ -0,0 +1,71 @@
+Provides a Solaris implementation of the floating point exception handler.
+Will not send upstream.
+
+--- IexMath/IexMathFpu.cpp	2014-08-10 14:23:56.000000000 +1000
++++ IexMath/IexMathFpu.cpp	2016-11-09 11:22:07.833814195 +1000
[email protected]@ -271,19 +271,37 @@
+ // it's passed to the signal handler by the kernel.  Use
+ // the kernel's version of the ucontext to get it, see
+ // <asm/sigcontext.h>
+ //
+
++#if defined(__sun)
++#include <sys/ucontext.h>
++#include <sys/regset.h>
++#else
+ #include <asm/sigcontext.h>
++#endif
+ 
+ inline void
+ restoreControlRegs (const ucontext_t & ucon, bool clearExceptions)
+ {
+-    setCw ((ucon.uc_mcontext.fpregs->cw & cwRestoreMask) | cwRestoreVal);
+     
++#if !defined(__sun)
++    setCw ((ucon.uc_mcontext.fpregs->cw & cwRestoreMask) | cwRestoreVal);
+     _fpstate * kfp = reinterpret_cast<_fpstate *> (ucon.uc_mcontext.fpregs);
+     setMxcsr (kfp->magic == 0 ? kfp->mxcsr : 0, clearExceptions);
++
++#else
++    setCw ((ucon.uc_mcontext.fpregs.fp_reg_set.fpchip_state.cw & cwRestoreMask) | cwRestoreVal);
++    fpregset_t kfp = ucon.uc_mcontext.fpregs;
++    uint32_t f_mxcsr = kfp.fp_reg_set.fpchip_state.mxcsr;
++    uint32_t f_xstatus = kfp.fp_reg_set.fpchip_state.xstatus;
++
++    // http://lxr.free-electrons.com/source/arch/x86/include/uapi/asm/sigcontext.h#L7
++    // was very helpful in figuring out this next line.
++    setMxcsr (f_xstatus == 0 ? f_mxcsr : 0, clearExceptions);
++#endif
++
+ }
+ 
+ #endif
+ 
+ } // namespace FpuControl
[email protected]@ -452,20 +470,26 @@
+         return;
+     }
+ }
+ 
+ 
++#if defined(__sun)
++#define	SA_NOMASK	SA_NODEFER
++#endif
++
+ void
+ setFpExceptionHandler (FpExceptionHandler handler)
+ {
+     if (fpeHandler == 0)
+     {
+ 	struct sigaction action;
+ 	sigemptyset (&action.sa_mask);
+ 	action.sa_flags = SA_SIGINFO | SA_NOMASK;
+ 	action.sa_sigaction = (void (*) (int, siginfo_t *, void *)) catchSigFpe;
++#if !defined(__sun)
+ 	action.sa_restorer = 0;
++#endif
+ 
+ 	sigaction (SIGFPE, &action, 0);
+     }
+ 
+     fpeHandler = handler;
--- a/components/ilmbase/test/results-all.master	Fri Feb 24 09:00:04 2017 -0800
+++ b/components/ilmbase/test/results-all.master	Tue Feb 14 16:38:32 2017 -0800
@@ -2,8 +2,6 @@
 /usr/gnu/bin/make  check-am
 Making check in HalfTest
 /usr/gnu/bin/make  HalfTest
-mkdir .libs
-creating HalfTest
 /usr/gnu/bin/make  check-TESTS
 
 testing type half:
@@ -138,7 +136,7 @@
   2.9808284e-08    0 01100110 00000000000011010001110    0 00000 0000000001
   5.9604645e-08    0 01100111 00000000000000000000000
 
-  2.9796363e-08    0 01100101 11111111111001011100101    0 00000 0000000000
+  2.9796361e-08    0 01100101 11111111111001011100100    0 00000 0000000000
               0    0 00000000 00000000000000000000000
 
   6.1035156e-05    0 01110001 00000000000000000000000    0 00001 0000000000
@@ -279,7 +277,7 @@
  -2.9808284e-08    1 01100110 00000000000011010001110    1 00000 0000000001
  -5.9604645e-08    1 01100111 00000000000000000000000
 
- -2.9796363e-08    1 01100101 11111111111001011100101    1 00000 0000000000
+ -2.9796361e-08    1 01100101 11111111111001011100100    1 00000 0000000000
              -0    1 00000000 00000000000000000000000
 
  -6.1035156e-05    1 01110001 00000000000000000000000    1 00001 0000000000
@@ -412,14 +410,13 @@
 ok
 
 PASS: HalfTest
-==================
-All 1 tests passed
-==================
+=============
+1 test passed
+=============
 Making check in Iex
+Making check in IexMath
 Making check in IexTest
 /usr/gnu/bin/make  IexTest
-mkdir .libs
-creating IexTest
 /usr/gnu/bin/make  check-TESTS
 See if throw and catch work:
 1
@@ -430,15 +427,16 @@
 ok
 
 PASS: IexTest
-==================
-All 1 tests passed
-==================
+=============
+1 test passed
+=============
 Making check in Imath
 Making check in ImathTest
 /usr/gnu/bin/make  ImathTest
-mkdir .libs
-creating ImathTest
 /usr/gnu/bin/make  check-TESTS
+Testing some basic vector operations
+ok
+
 Testing functions in ImathColor.h & ImathColorAlgo.h
 rgb2packed -> packed2rgb
 Imath::Color4 * f
@@ -454,10 +452,37 @@
 ok
 
 Testing functions in ImathMatrix.h
-Imath::Matrix33 shear functions
+Imath::M33f shear functions
+M33f constructors and equality operators
+M33d constructors and equality operators
+M44f constructors and equality operators
+M44d constructors and equality operators
+Converting between M33 and M44
+3x3 Matrix minors
+3x3 determinant
+Outer product of two 3D vectors
+4x4 determinants
+4x4 matrix minors
+M44 multiplicaftion test
+ok
+
+Testing misc functions in ImathMatrixAlgo.h
+Testing the building of an orthonormal direct frame from : a position, an x axis direction and a normal to the y axis
+IMATH_INTERNAL_NAMESPACE::computeLocalFrame()
+ok
+
+Add a translate/rotate/scale offset to an input frame and put it in another frame of reference
+IMATH_INTERNAL_NAMESPACE::addOffset()
+ok
+
+Compute Translate/Rotate/Scale matrix from matrix A 
+with the Rotate/Scale of Matrix B
+IMATH_INTERNAL_NAMESPACE::computeRSMatrix()
 ok
 
 Testing functions in ImathRoots.h
+
+solveCubic
 coefficients:   1   6  11   6  solutions: -3 -2 -1
 coefficients:   2   2 -20  16  solutions: -4 1 2
 coefficients:   3  -3   1  -1  solutions: 1
@@ -474,6 +499,18 @@
 coefficients:   0   0   1   0  solutions: -0
 coefficients:   0   0   0   1  solutions: none
 coefficients:   0   0   0   0  solutions: [-inf, inf]
+
+solveQuadratic
+coefficients:   1   3   2  solutions: -2 -1
+coefficients:   1   0  -9  solutions: -3 3
+coefficients:   1  -4   0  solutions: 0 4
+coefficients:   2  -4   2  solutions: 1
+coefficients:   0  -4   8  solutions: 2
+coefficients:   0   7   0  solutions: -0
+coefficients:  10   0   0  solutions: -0
+coefficients:   0   0   0  solutions: [-inf, inf]
+coefficients:   0   0   1  solutions: none
+coefficients:   3  -6  30  solutions: none
 ok
 
 Testing functions in ImathFun.h
@@ -553,13 +590,13 @@
 d 0
 sd 4.94065645841246544e-324
 pd -4.94065645841246544e-324
-spd -9.88131291682493088e-324
+spd -0
 psd 0
 
 d -0
 sd 4.94065645841246544e-324
 pd -4.94065645841246544e-324
-spd -9.88131291682493088e-324
+spd -0
 psd 0
 
 d 1
@@ -569,8 +606,8 @@
 psd 1
 
 d -1
-sd -1.00000000000000022
-pd -0.999999999999999889
+sd -0.999999999999999889
+pd -1.00000000000000022
 spd -1
 psd -1
 
@@ -611,10 +648,10 @@
 psd Infinity
 
 d -1.79769313486231571e+308
-sd -Infinity
-pd -1.79769313486231551e+308
-spd -1.79769313486231571e+308
-psd -Infinity
+sd -1.79769313486231551e+308
+pd -Infinity
+spd -Infinity
+psd -1.79769313486231571e+308
 ok
 
 Testing 4x4 and 3x3 matrix inversion:
@@ -689,6 +726,9 @@
     4x4
 ok
 
+Testing basic quaternion operations
+ok
+
 Testing quaternion rotations
   exact 90-degree rotations
   exact zero-degree rotations
@@ -720,6 +760,63 @@
 ok
 
 Testing box algorithms
+  ray-box entry and exit, random rays
+    box = ((-1 -1 -1) (1 1 1))
+    ray starts outside box, intersects
+    ray starts outside box, does not intersect
+    box = ((10 20 30) (1010 21 31))
+    ray starts outside box, intersects
+    ray starts outside box, does not intersect
+    box = ((10 20 30) (11 1020 31))
+    ray starts outside box, intersects
+    ray starts outside box, does not intersect
+    box = ((10 20 30) (11 21 1030))
+    ray starts outside box, intersects
+    ray starts outside box, does not intersect
+    box = ((-1e+10 -2e+10 -3e+10) (5e+15 6e+15 7e+15))
+    ray starts outside box, intersects
+    ray starts outside box, does not intersect
+    box = ((1 1 1) (2 1 1))
+    ray starts outside box, intersects
+    ray starts outside box, does not intersect
+    box = ((1 1 1) (1 2 1))
+    ray starts outside box, intersects
+    ray starts outside box, does not intersect
+    box = ((1 1 1) (1 1 2))
+    ray starts outside box, intersects
+    ray starts outside box, does not intersect
+    box = ((1 1 1) (1 2 3))
+    ray starts outside box, intersects
+    ray starts outside box, does not intersect
+    box = ((1 1 1) (2 3 1))
+    ray starts outside box, intersects
+    ray starts outside box, does not intersect
+    box = ((1 1 1) (2 1 3))
+    ray starts outside box, intersects
+    ray starts outside box, does not intersect
+    box = ((-1 -2 1) (-1 -2 1))
+    single-point box, ray intersects
+    single-point box, ray does not intersect
+    box = ((1 1 1) (1 1 1))
+    single-point box, ray intersects
+    single-point box, ray does not intersect
+    box = ((0 0 0) (0 0 0))
+    single-point box, ray intersects
+    single-point box, ray does not intersect
+    empty box, no rays intersect
+  ray-box entry and exit, nearly axis-parallel rays
+    dir ~ (1 0 0), result = 1
+    dir ~ (-1 0 0), result = 1
+    dir ~ (1 0 0), result = 0
+    dir ~ (-1 0 0), result = 0
+    dir ~ (0 1 0), result = 1
+    dir ~ (0 -1 0), result = 1
+    dir ~ (0 1 0), result = 0
+    dir ~ (0 -1 0), result = 0
+    dir ~ (0 0 1), result = 1
+    dir ~ (0 0 -1), result = 1
+    dir ~ (0 0 1), result = 0
+    dir ~ (0 0 -1), result = 0
   ray-box intersection, random rays
     box = ((-1 -1 -1) (1 1 1))
     ray starts inside box
@@ -789,11 +886,493 @@
     dir ~ (0 0 1), result = 0
     dir ~ (0 0 -1), result = 0
   transform box by matrix
+  closest points in and on box
+ok
+
+Testing box methods
+    constructors for type V2s
+    constructors for type V2i
+    constructors for type V2f
+    constructors for type V2d
+    constructors for type V3s
+    constructors for type V3i
+    constructors for type V3f
+    constructors for type V3d
+    constructors for type V4s
+    constructors for type V4i
+    constructors for type V4f
+    constructors for type V4d
+    makeEmpty() for type V2s
+    makeEmpty() for type V2i
+    makeEmpty() for type V2f
+    makeEmpty() for type V2d
+    makeEmpty() for type V3s
+    makeEmpty() for type V3i
+    makeEmpty() for type V3f
+    makeEmpty() for type V3d
+    makeEmpty() for type V4s
+    makeEmpty() for type V4i
+    makeEmpty() for type V4f
+    makeEmpty() for type V4d
+    makeInfinite() for type V2s
+    makeInfinite() for type V2i
+    makeInfinite() for type V2f
+    makeInfinite() for type V2d
+    makeInfinite() for type V3s
+    makeInfinite() for type V3i
+    makeInfinite() for type V3f
+    makeInfinite() for type V3d
+    makeInfinite() for type V4s
+    makeInfinite() for type V4i
+    makeInfinite() for type V4f
+    makeInfinite() for type V4d
+    extendBy() point for type V2s
+    extendBy() point for type V2i
+    extendBy() point for type V2f
+    extendBy() point for type V2d
+    extendBy() point for type V3s
+    extendBy() point for type V3i
+    extendBy() point for type V3f
+    extendBy() point for type V3d
+    extendBy() point for type V4s
+    extendBy() point for type V4i
+    extendBy() point for type V4f
+    extendBy() point for type V4d
+    extendBy() box for type V2s
+    extendBy() box for type V2i
+    extendBy() box for type V2f
+    extendBy() box for type V2d
+    extendBy() box for type V3s
+    extendBy() box for type V3i
+    extendBy() box for type V3f
+    extendBy() box for type V3d
+    extendBy() box for type V4s
+    extendBy() box for type V4i
+    extendBy() box for type V4f
+    extendBy() box for type V4d
+    comparators for type V2s
+    comparators for type V2i
+    comparators for type V2f
+    comparators for type V2d
+    comparators for type V3s
+    comparators for type V3i
+    comparators for type V3f
+    comparators for type V3d
+    comparators for type V4s
+    comparators for type V4i
+    comparators for type V4f
+    comparators for type V4d
+    size() for type V2s
+    size() for type V2i
+    size() for type V2f
+    size() for type V2d
+    size() for type V3s
+    size() for type V3i
+    size() for type V3f
+    size() for type V3d
+    size() for type V4s
+    size() for type V4i
+    size() for type V4f
+    size() for type V4d
+    center() for type V2s
+    center() for type V2i
+    center() for type V2f
+    center() for type V2d
+    center() for type V3s
+    center() for type V3i
+    center() for type V3f
+    center() for type V3d
+    center() for type V4s
+    center() for type V4i
+    center() for type V4f
+    center() for type V4d
+    isEmpty() for type V2s
+    isEmpty() for type V2i
+    isEmpty() for type V2f
+    isEmpty() for type V2d
+    isEmpty() for type V3s
+    isEmpty() for type V3i
+    isEmpty() for type V3f
+    isEmpty() for type V3d
+    isEmpty() for type V4s
+    isEmpty() for type V4i
+    isEmpty() for type V4f
+    isEmpty() for type V4d
+    isInfinite() for type V2s
+    isInfinite() for type V2i
+    isInfinite() for type V2f
+    isInfinite() for type V2d
+    isInfinite() for type V3s
+    isInfinite() for type V3i
+    isInfinite() for type V3f
+    isInfinite() for type V3d
+    isInfinite() for type V4s
+    isInfinite() for type V4i
+    isInfinite() for type V4f
+    isInfinite() for type V4d
+    hasVolume() for type V2s
+    hasVolume() for type V2i
+    hasVolume() for type V2f
+    hasVolume() for type V2d
+    hasVolume() for type V3s
+    hasVolume() for type V3i
+    hasVolume() for type V3f
+    hasVolume() for type V3d
+    hasVolume() for type V4s
+    hasVolume() for type V4i
+    hasVolume() for type V4f
+    hasVolume() for type V4d
+    majorAxis() for type V2s
+    majorAxis() for type V2i
+    majorAxis() for type V2f
+    majorAxis() for type V2d
+    majorAxis() for type V3s
+    majorAxis() for type V3i
+    majorAxis() for type V3f
+    majorAxis() for type V3d
+    majorAxis() for type V4s
+    majorAxis() for type V4i
+    majorAxis() for type V4f
+    majorAxis() for type V4d
+ok
+
+Testing Procrustes algorithms in single precision...
+Testing known translate/rotate matrix:
+ (  1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00
+   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00
+   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00
+   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00)
+  OK
+Testing known translate/rotate matrix:
+ (  1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00
+   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00
+   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00
+   3.000000e+00   5.000000e+00  -2.000000e-01   1.000000e+00)
+  OK
+Testing known translate/rotate matrix:
+ (  1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00
+   0.000000e+00  -1.000000e+00   1.224647e-16   0.000000e+00
+   0.000000e+00  -1.224647e-16  -1.000000e+00   0.000000e+00
+   3.000000e+00   5.000000e+00  -2.000000e-01   1.000000e+00)
+  OK
+Testing known translate/rotate matrix:
+ (  7.071068e-01   8.659561e-17   7.071068e-01   0.000000e+00
+   0.000000e+00  -1.000000e+00   1.224647e-16   0.000000e+00
+   7.071068e-01  -8.659561e-17  -7.071068e-01   0.000000e+00
+   3.000000e+00   5.000000e+00  -2.000000e-01   1.000000e+00)
+  OK
+Testing known translate/rotate matrix:
+ ( -5.000000e-01   7.071068e-01  -5.000000e-01  -0.000000e+00
+   5.000000e-01   7.071068e-01   5.000000e-01   0.000000e+00
+   7.071068e-01  -8.659561e-17  -7.071068e-01   0.000000e+00
+   3.000000e+00   5.000000e+00  -2.000000e-01   1.000000e+00)
+  OK
+Testing with known translate/rotate/scale matrix
+(  1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00
+   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00
+   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00
+   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00)
+numPoints: 1 2 3 4 5 6 7 8 9   OK
+Testing with known translate/rotate/scale matrix
+(  1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00
+   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00
+   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00
+   4.000000e-01   6.000000e+00   1.000000e+01   1.000000e+00)
+numPoints: 1 2 3 4 5 6 7 8 9   OK
+Testing with known translate/rotate/scale matrix
+(  1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00
+   0.000000e+00  -1.000000e+00   1.224647e-16   0.000000e+00
+   0.000000e+00  -1.224647e-16  -1.000000e+00   0.000000e+00
+   4.000000e-01   6.000000e+00   1.000000e+01   1.000000e+00)
+numPoints: 1 2 3 4 5 6 7 8 9   OK
+Testing with known translate/rotate/scale matrix
+(  7.071068e-01   8.659561e-17   7.071068e-01   0.000000e+00
+   0.000000e+00  -1.000000e+00   1.224647e-16   0.000000e+00
+   7.071068e-01  -8.659561e-17  -7.071068e-01   0.000000e+00
+   4.000000e-01   6.000000e+00   1.000000e+01   1.000000e+00)
+numPoints: 1 2 3 4 5 6 7 8 9   OK
+Testing with known translate/rotate/scale matrix
+( -5.000000e-01   7.071068e-01  -5.000000e-01  -0.000000e+00
+   5.000000e-01   7.071068e-01   5.000000e-01   0.000000e+00
+   7.071068e-01  -8.659561e-17  -7.071068e-01   0.000000e+00
+   4.000000e-01   6.000000e+00   1.000000e+01   1.000000e+00)
+numPoints: 1 2 3 4 5 6 7 8 9   OK
+Testing with known translate/rotate/scale matrix
+( -1.000000e+00   1.414214e+00  -1.000000e+00  -0.000000e+00
+   1.000000e+00   1.414214e+00   1.000000e+00   0.000000e+00
+   1.414214e+00  -1.731912e-16  -1.414214e+00   0.000000e+00
+   4.000000e-01   6.000000e+00   1.000000e+01   1.000000e+00)
+numPoints: 1 2 3 4 5 6 7 8 9   OK
+Testing with known translate/rotate/scale matrix
+( -1.000000e-02   1.414214e-02  -1.000000e-02  -0.000000e+00
+   1.000000e-02   1.414214e-02   1.000000e-02   0.000000e+00
+   1.414214e-02  -1.731912e-18  -1.414214e-02   0.000000e+00
+   4.000000e-01   6.000000e+00   1.000000e+01   1.000000e+00)
+numPoints: 1 2 3 4 5 6 7 8 9   OK
+Testing Procrustes algorithm with arbitrary matrix: 
+( -1.000000e-02   1.414214e-02  -1.000000e-02  -0.000000e+00
+   1.000000e-02   1.414214e-02   1.000000e-02   0.000000e+00
+   1.414214e-02  -1.731912e-18  -1.414214e-02   0.000000e+00
+   4.000000e-01   6.000000e+00   1.000000e+01   1.000000e+00)
+   numPoints: 1 2 3 4 5 6 7 8 9 OK
+Testing Procrustes algorithm with arbitrary matrix: 
+( -1.000000e-02   1.414214e-02  -1.000000e-02  -0.000000e+00
+   1.000000e-02   1.414214e-02   1.000000e-02   0.000000e+00
+   1.414214e-02  -1.731912e-18  -1.414214e-02   0.000000e+00
+   4.241421e-01   6.098995e+00   9.995858e+00   1.000000e+00)
+   numPoints: 1 2 3 4 5 6 7 8 9 OK
+Testing Procrustes algorithm with arbitrary matrix: 
+( -1.000000e-02   1.414214e-02  -1.000000e-02  -0.000000e+00
+   1.000000e-02   1.414214e-02   1.000000e-02   0.000000e+00
+   1.414214e-02  -1.731912e-18  -1.414214e-02   0.000000e+00
+   5.582843e-01   5.985858e+00   1.010172e+01   1.000000e+00)
+   numPoints: 1 2 3 4 5 6 7 8 9 OK
+Testing Procrustes algorithm with arbitrary matrix: 
+(  1.219579e-02   1.573132e-02   1.946348e-03   0.000000e+00
+   5.124720e-03  -1.589186e-03  -1.926686e-02   0.000000e+00
+  -1.500000e-02   1.224745e-02  -5.000000e-03   0.000000e+00
+   6.842304e+00  -5.755414e+00  -7.631837e+00   1.000000e+00)
+   numPoints: 1 2 3 4 5 6 7 8 9 OK
+Testing Procrustes algorithm with arbitrary matrix: 
+(  1.829368e-02   2.359698e-02   2.919522e-03   0.000000e+00
+   3.279821e-02  -1.017079e-02  -1.233079e-01   0.000000e+00
+  -3.000000e-02   2.449490e-02  -1.000000e-02   0.000000e+00
+   6.842304e+00  -5.755414e+00  -7.631837e+00   1.000000e+00)
+   numPoints: 1 2 3 4 5 6 7 8 9 OK
+Testing Procrustes algorithm with arbitrary matrix: 
+( -2.546762e-03  -9.270112e-03   2.841794e-02  -0.000000e+00
+  -7.301607e-02   1.017024e-01   2.663240e-02   0.000000e+00
+   3.267767e-02   2.090770e-02   9.748737e-03   0.000000e+00
+  -1.106096e+01   3.731658e+00   1.384479e+00   1.000000e+00)
+   numPoints: 1 2 3 4 5 6 7 8 9 OK
+Testing Procrustes algorithm with arbitrary matrix: 
+( -2.546762e-03  -9.270112e-03   2.841794e-02  -0.000000e+00
+  -7.301607e-05   1.017024e-04   2.663240e-05   0.000000e+00
+   3.267767e-02   2.090770e-02   9.748737e-03   0.000000e+00
+  -1.106096e+01   3.731658e+00   1.384479e+00   1.000000e+00)
+   numPoints: 1 2 3 4 5 6 7 8 9 OK
+Testing Procrustes algorithm with arbitrary matrix: 
+( -2.546762e-03  -9.270112e-03   2.841794e-02  -0.000000e+00
+  -7.301607e-05   1.017024e-04   2.663240e-05   0.000000e+00
+   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00
+  -1.106096e+01   3.731658e+00   1.384479e+00   1.000000e+00)
+   numPoints: 1 2 3 4 5 6 7 8 9 OK
+Testing Procrustes algorithms in double precision...
+Testing known translate/rotate matrix:
+ (  1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00
+   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00
+   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00
+   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00)
+  OK
+Testing known translate/rotate matrix:
+ (  1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00
+   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00
+   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00
+   3.000000e+00   5.000000e+00  -2.000000e-01   1.000000e+00)
+  OK
+Testing known translate/rotate matrix:
+ (  1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00
+   0.000000e+00  -1.000000e+00   1.224647e-16   0.000000e+00
+   0.000000e+00  -1.224647e-16  -1.000000e+00   0.000000e+00
+   3.000000e+00   5.000000e+00  -2.000000e-01   1.000000e+00)
+  OK
+Testing known translate/rotate matrix:
+ (  7.071068e-01   8.659561e-17   7.071068e-01   0.000000e+00
+   0.000000e+00  -1.000000e+00   1.224647e-16   0.000000e+00
+   7.071068e-01  -8.659561e-17  -7.071068e-01   0.000000e+00
+   3.000000e+00   5.000000e+00  -2.000000e-01   1.000000e+00)
+  OK
+Testing known translate/rotate matrix:
+ ( -5.000000e-01   7.071068e-01  -5.000000e-01  -0.000000e+00
+   5.000000e-01   7.071068e-01   5.000000e-01   0.000000e+00
+   7.071068e-01  -8.659561e-17  -7.071068e-01   0.000000e+00
+   3.000000e+00   5.000000e+00  -2.000000e-01   1.000000e+00)
+  OK
+Testing with known translate/rotate/scale matrix
+(  1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00
+   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00
+   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00
+   0.000000e+00   0.000000e+00   0.000000e+00   1.000000e+00)
+numPoints: 1 2 3 4 5 6 7 8 9   OK
+Testing with known translate/rotate/scale matrix
+(  1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00
+   0.000000e+00   1.000000e+00   0.000000e+00   0.000000e+00
+   0.000000e+00   0.000000e+00   1.000000e+00   0.000000e+00
+   4.000000e-01   6.000000e+00   1.000000e+01   1.000000e+00)
+numPoints: 1 2 3 4 5 6 7 8 9   OK
+Testing with known translate/rotate/scale matrix
+(  1.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00
+   0.000000e+00  -1.000000e+00   1.224647e-16   0.000000e+00
+   0.000000e+00  -1.224647e-16  -1.000000e+00   0.000000e+00
+   4.000000e-01   6.000000e+00   1.000000e+01   1.000000e+00)
+numPoints: 1 2 3 4 5 6 7 8 9   OK
+Testing with known translate/rotate/scale matrix
+(  7.071068e-01   8.659561e-17   7.071068e-01   0.000000e+00
+   0.000000e+00  -1.000000e+00   1.224647e-16   0.000000e+00
+   7.071068e-01  -8.659561e-17  -7.071068e-01   0.000000e+00
+   4.000000e-01   6.000000e+00   1.000000e+01   1.000000e+00)
+numPoints: 1 2 3 4 5 6 7 8 9   OK
+Testing with known translate/rotate/scale matrix
+( -5.000000e-01   7.071068e-01  -5.000000e-01  -0.000000e+00
+   5.000000e-01   7.071068e-01   5.000000e-01   0.000000e+00
+   7.071068e-01  -8.659561e-17  -7.071068e-01   0.000000e+00
+   4.000000e-01   6.000000e+00   1.000000e+01   1.000000e+00)
+numPoints: 1 2 3 4 5 6 7 8 9   OK
+Testing with known translate/rotate/scale matrix
+( -1.000000e+00   1.414214e+00  -1.000000e+00  -0.000000e+00
+   1.000000e+00   1.414214e+00   1.000000e+00   0.000000e+00
+   1.414214e+00  -1.731912e-16  -1.414214e+00   0.000000e+00
+   4.000000e-01   6.000000e+00   1.000000e+01   1.000000e+00)
+numPoints: 1 2 3 4 5 6 7 8 9   OK
+Testing with known translate/rotate/scale matrix
+( -1.000000e-02   1.414214e-02  -1.000000e-02  -0.000000e+00
+   1.000000e-02   1.414214e-02   1.000000e-02   0.000000e+00
+   1.414214e-02  -1.731912e-18  -1.414214e-02   0.000000e+00
+   4.000000e-01   6.000000e+00   1.000000e+01   1.000000e+00)
+numPoints: 1 2 3 4 5 6 7 8 9   OK
+Testing Procrustes algorithm with arbitrary matrix: 
+( -1.000000e-02   1.414214e-02  -1.000000e-02  -0.000000e+00
+   1.000000e-02   1.414214e-02   1.000000e-02   0.000000e+00
+   1.414214e-02  -1.731912e-18  -1.414214e-02   0.000000e+00
+   4.000000e-01   6.000000e+00   1.000000e+01   1.000000e+00)
+   numPoints: 1 2 3 4 5 6 7 8 9 OK
+Testing Procrustes algorithm with arbitrary matrix: 
+( -1.000000e-02   1.414214e-02  -1.000000e-02  -0.000000e+00
+   1.000000e-02   1.414214e-02   1.000000e-02   0.000000e+00
+   1.414214e-02  -1.731912e-18  -1.414214e-02   0.000000e+00
+   4.241421e-01   6.098995e+00   9.995858e+00   1.000000e+00)
+   numPoints: 1 2 3 4 5 6 7 8 9 OK
+Testing Procrustes algorithm with arbitrary matrix: 
+( -1.000000e-02   1.414214e-02  -1.000000e-02  -0.000000e+00
+   1.000000e-02   1.414214e-02   1.000000e-02   0.000000e+00
+   1.414214e-02  -1.731912e-18  -1.414214e-02   0.000000e+00
+   5.582843e-01   5.985858e+00   1.010172e+01   1.000000e+00)
+   numPoints: 1 2 3 4 5 6 7 8 9 OK
+Testing Procrustes algorithm with arbitrary matrix: 
+(  1.219579e-02   1.573132e-02   1.946348e-03   0.000000e+00
+   5.124720e-03  -1.589186e-03  -1.926686e-02   0.000000e+00
+  -1.500000e-02   1.224745e-02  -5.000000e-03   0.000000e+00
+   6.842304e+00  -5.755414e+00  -7.631837e+00   1.000000e+00)
+   numPoints: 1 2 3 4 5 6 7 8 9 OK
+Testing Procrustes algorithm with arbitrary matrix: 
+(  1.829368e-02   2.359698e-02   2.919522e-03   0.000000e+00
+   3.279821e-02  -1.017079e-02  -1.233079e-01   0.000000e+00
+  -3.000000e-02   2.449490e-02  -1.000000e-02   0.000000e+00
+   6.842304e+00  -5.755414e+00  -7.631837e+00   1.000000e+00)
+   numPoints: 1 2 3 4 5 6 7 8 9 OK
+Testing Procrustes algorithm with arbitrary matrix: 
+( -2.546762e-03  -9.270112e-03   2.841794e-02  -0.000000e+00
+  -7.301607e-02   1.017024e-01   2.663239e-02   0.000000e+00
+   3.267767e-02   2.090770e-02   9.748737e-03   0.000000e+00
+  -1.106096e+01   3.731658e+00   1.384479e+00   1.000000e+00)
+   numPoints: 1 2 3 4 5 6 7 8 9 OK
+Testing Procrustes algorithm with arbitrary matrix: 
+( -2.546762e-03  -9.270112e-03   2.841794e-02  -0.000000e+00
+  -7.301607e-05   1.017024e-04   2.663239e-05   0.000000e+00
+   3.267767e-02   2.090770e-02   9.748737e-03   0.000000e+00
+  -1.106096e+01   3.731658e+00   1.384479e+00   1.000000e+00)
+   numPoints: 1 2 3 4 5 6 7 8 9 OK
+Testing Procrustes algorithm with arbitrary matrix: 
+( -2.546762e-03  -9.270112e-03   2.841794e-02  -0.000000e+00
+  -7.301607e-05   1.017024e-04   2.663239e-05   0.000000e+00
+   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00
+  -1.106096e+01   3.731658e+00   1.384479e+00   1.000000e+00)
+   numPoints: 1 2 3 4 5 6 7 8 9 OK
+Testing TinySVD algorithms in single precision...
+Verifying SVD for [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
+Verifying SVD for [[1, 0, 0], [0, -1, 0], [0, 0, 1]]
+Verifying SVD for [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
+Verifying SVD for [[0, 0, 0], [0, 0, 0], [0, 0, 1]]
+Verifying SVD for [[1, 0, 0], [0, 1, 0], [0, 0, 0]]
+Verifying SVD for [[1, 0, 0], [0, 0, 0], [0, 0, 0]]
+Verifying SVD for [[1, 0, 0], [1e-10, 0, 0], [0, 0, 0]]
+Verifying SVD for [[1, 0, 0], [1e-10, 0, 0], [0, 0, 100000]]
+Verifying SVD for [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
+Verifying SVD for [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
+Verifying SVD for [[10000, 0.001, 0], [0.001, 1e-10, 0], [0, 0, 0]]
+Verifying SVD for [[62720, 73500, 4900], [5120, 6000, 400], [256, 300, 20]]
+Verifying SVD for [[60026, 4902, 248], [4902, 404, 26], [248, 26, 10]]
+Verifying SVD for [[0.00235883, -0.00965581, 0.00109599], [0.00886718, 0.00167718, -0.00430815], [0.00397605, 0.00198805, 0.0089576]]
+Verifying SVD for [[2.35883e-09, -9.65581e-09, 1.09599e-09], [8.86718e-09, 1.67718e-09, -4.30815e-09], [3.97605e-09, 1.98805e-09, 8.9576e-09]]
+Verifying SVD for [[-0.466739, 0.674663, 0.97647], [-0.0324608, 0.0465845, 0.0674312], [-0.0888851, 0.128039, 0.185326]]
+Verifying SVD for [[1e-08, 0, 0], [0, 1e-08, 0], [0, 0, 1e-08]]
+Verifying SVD for [[1, 0, 0], [0, 0.00036, 0], [1e-18, 0, 0.00018]]
+Verifying SVD for [[1.3, 0, 0], [0, 0.0003, 0], [1e-17, 0, 0]]
+Verifying SVD for [[1, 0, 0], [0, 0.01, 0], [0, 0, 0.01]]
+Verifying SVD for [[1, 0, 0], [0, 1, 0], [0, 0, 0]]
+Verifying SVD for [[1, 0, 0], [0, 0.001, 0], [0, 0, 1e-06]]
+Verifying SVD for [[0.595886, -0.797612, -1], [0.391945, 0.917631, -0.341818], [-0.450561, -0.712591, 0.47125]]
+Verifying SVD for [[4.38805e-09, -2.5319e-09, -4.65679e-09], [-3.23e-10, 1.8637e-10, 3.42781e-10], [-4.61573e-09, 2.66326e-09, 4.8984e-09]]
+Verifying SVD for [[0, -1e-22, 0], [1e-07, 0, 0], [0, 0, 0]]
+Verifying SVD for [[0, -1e-22, 0], [1e-07, 0, 0], [0, 0, 1]]
+Verifying SVD for [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]
+Verifying SVD for [[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]
+Verifying SVD for [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 0]]
+Verifying SVD for [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
+Verifying SVD for [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
+Verifying SVD for [[1, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
+Verifying SVD for [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]
+Verifying SVD for [[0, -1e-22, 0, 0], [1e-07, 0, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]
+Verifying SVD for [[10000, 0.001, 0, 0], [0.001, 1e-10, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
+Verifying SVD for [[62720, 73500, 4900, 2450], [5120, 6000, 400, 2450], [256, 300, 20, 2450], [128, 150, 10, 5]]
+Verifying SVD for [[62750, 73560, 4990, 2540], [5130, 6020, 430, 2540], [266, 320, 50, 2540], [138, 170, 40, 35]]
+Testing TinySVD algorithms in double precision...
+Verifying SVD for [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
+Verifying SVD for [[1, 0, 0], [0, -1, 0], [0, 0, 1]]
+Verifying SVD for [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
+Verifying SVD for [[0, 0, 0], [0, 0, 0], [0, 0, 1]]
+Verifying SVD for [[1, 0, 0], [0, 1, 0], [0, 0, 0]]
+Verifying SVD for [[1, 0, 0], [0, 0, 0], [0, 0, 0]]
+Verifying SVD for [[1, 0, 0], [1e-10, 0, 0], [0, 0, 0]]
+Verifying SVD for [[1, 0, 0], [1e-10, 0, 0], [0, 0, 100000]]
+Verifying SVD for [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
+Verifying SVD for [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
+Verifying SVD for [[10000, 0.001, 0], [0.001, 1e-10, 0], [0, 0, 0]]
+Verifying SVD for [[62720, 73500, 4900], [5120, 6000, 400], [256, 300, 20]]
+Verifying SVD for [[60026, 4902, 248], [4902, 404, 26], [248, 26, 10]]
+Verifying SVD for [[0.00235883, -0.00965581, 0.00109599], [0.00886718, 0.00167718, -0.00430815], [0.00397605, 0.00198805, 0.0089576]]
+Verifying SVD for [[2.35883e-09, -9.65581e-09, 1.09599e-09], [8.86718e-09, 1.67718e-09, -4.30815e-09], [3.97605e-09, 1.98805e-09, 8.9576e-09]]
+Verifying SVD for [[-0.466739, 0.674663, 0.97647], [-0.0324608, 0.0465845, 0.0674312], [-0.0888851, 0.128039, 0.185326]]
+Verifying SVD for [[1e-08, 0, 0], [0, 1e-08, 0], [0, 0, 1e-08]]
+Verifying SVD for [[1, 0, 0], [0, 0.00036, 0], [1e-18, 0, 0.00018]]
+Verifying SVD for [[1.3, 0, 0], [0, 0.0003, 0], [1e-17, 0, 0]]
+Verifying SVD for [[1, 0, 0], [0, 0.01, 0], [0, 0, 0.01]]
+Verifying SVD for [[1, 0, 0], [0, 1, 0], [0, 0, 0]]
+Verifying SVD for [[1, 0, 0], [0, 0.001, 0], [0, 0, 1e-06]]
+Verifying SVD for [[0.595886, -0.797612, -1], [0.391945, 0.917631, -0.341818], [-0.450561, -0.712591, 0.47125]]
+Verifying SVD for [[4.38805e-09, -2.5319e-09, -4.65679e-09], [-3.23e-10, 1.8637e-10, 3.42781e-10], [-4.61573e-09, 2.66326e-09, 4.8984e-09]]
+Verifying SVD for [[0, -1e-22, 0], [1e-07, 0, 0], [0, 0, 0]]
+Verifying SVD for [[0, -1e-22, 0], [1e-07, 0, 0], [0, 0, 1]]
+Verifying SVD for [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]
+Verifying SVD for [[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]
+Verifying SVD for [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 0]]
+Verifying SVD for [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
+Verifying SVD for [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
+Verifying SVD for [[1, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
+Verifying SVD for [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]
+Verifying SVD for [[0, -1e-22, 0, 0], [1e-07, 0, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]
+Verifying SVD for [[10000, 0.001, 0, 0], [0.001, 1e-10, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
+Verifying SVD for [[62720, 73500, 4900, 2450], [5120, 6000, 400, 2450], [256, 300, 20, 2450], [128, 150, 10, 5]]
+Verifying SVD for [[62750, 73560, 4990, 2540], [5130, 6020, 430, 2540], [266, 320, 50, 2540], [138, 170, 40, 35]]
+
+************ Testing IMATH_INTERNAL_NAMESPACE::ImathJacobiEigenSolver ************
+Jacobi EigenSolver in single precision...PASS
+Jacobi EigenSolver in double precision...PASS
+Min/Max EigenValue in single precision...PASS
+Min/Max EigenValue in double precision...PASS
+Timing Jacobi EigenSolver in single precision...
+Timing Jacobi EigenSolver in double precision...
+************      ALL PASS          ************
+Testing functions in ImathFrustumTest.h
+isVisible(Vec3) passed Vec3
+passed Box
+passed Sphere
+
 ok
 
 PASS: ImathTest
-==================
-All 1 tests passed
-==================
+=============
+1 test passed
+=============
 Making check in IlmThread
 Making check in config