From 7d7d8644ea1f682cb92efe8ce8a8b70d25012da6 Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Fri, 16 Jun 2023 18:20:08 -0700 Subject: [PATCH 01/20] Use security@openexr.com for consistency (#326) openexr.com forwards to openexr.org, but for consistency, let's refer to all email addresses as @openexr.com, to match the website. Signed-off-by: Cary Phillips --- SECURITY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SECURITY.md b/SECURITY.md index 624c18f1..9f663d82 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -6,7 +6,7 @@ ## Reporting a Vulnerability If you think you've found a potential vulnerability in Imath, please -report it by emailing security@openexr.org. Only OpenEXR Technical +report it by emailing security@openexr.com. Only OpenEXR Technical Steering Committee members and Academy Software Foundation project management have access to these messages. Include detailed steps to reproduce the issue, and any other information that could aid an From f8768d2f1b07b6c28e27dfd360fd7fec26fe625a Mon Sep 17 00:00:00 2001 From: Zachary Klein Date: Tue, 4 Jul 2023 10:42:35 -0400 Subject: [PATCH 02/20] Expand epsilon bounds for m44x pyImath test (#333) Extends epsilon bounds for extracted scale vector comparison to allow up to one representable value of deviation in precision. Signed-off-by: Zachary Klein --- src/python/PyImathTest/pyImathTest.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/python/PyImathTest/pyImathTest.in b/src/python/PyImathTest/pyImathTest.in index dc9be34d..7d9294e8 100644 --- a/src/python/PyImathTest/pyImathTest.in +++ b/src/python/PyImathTest/pyImathTest.in @@ -6137,7 +6137,7 @@ def testM44x (Mat, Vec): b = m.extractSHRT(sInq, hInq, rInq, tInq) - assert sInq.equalWithAbsError(s, sInq.baseTypeEpsilon()) + assert sInq.equalWithAbsError(s, 2 * sInq.baseTypeEpsilon()) assert hInq.equalWithAbsError(h, hInq.baseTypeEpsilon()) assert rInq.equalWithAbsError((0, 0, -a), 2 * rInq.baseTypeEpsilon()) assert tInq.equalWithAbsError(t, tInq.baseTypeEpsilon()) From 60a69b2ba1f526f9886ae1113ab7a14d78bb3095 Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Thu, 15 Jun 2023 11:39:52 -0700 Subject: [PATCH 03/20] Add .readthedocs.yml (#327) Now required by readthedocs.com. Signed-off-by: Cary Phillips --- .readthedocs.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .readthedocs.yml diff --git a/.readthedocs.yml b/.readthedocs.yml new file mode 100644 index 00000000..a89bc120 --- /dev/null +++ b/.readthedocs.yml @@ -0,0 +1,21 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright Contributors to the OpenEXR Project. +# +# .readthedocs.yml +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details + +# Required +version: 2 + +build: + os: "ubuntu-22.04" + tools: + python: "3.9" + +sphinx: + configuration: docs/conf.py + +python: + install: + - requirements: docs/requirements.txt From b7894fe2bf9ba36dbe002d4e62742d816db2a8b5 Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Tue, 1 Aug 2023 10:38:30 -0700 Subject: [PATCH 04/20] Rename "docs" to "website" (#338) * Rename "docs" to "website" "website" is a more accurate term than "docs", so: - The source lives in the ``website`` subdirectory (was ``docs``) - The CMake option is now ``BUILD_WEBSITE`` (was ``BUILD_DOCS``) - The CMake target is now ``website`` (was ``docs``) - There's no longer a CMake option to install the docs, since copying the ``.html`` to the install location is pointless. The ``INSTALL_DOCS`` option has been removed. Signed-off-by: Cary Phillips * change $ to % in install.rst Signed-off-by: Cary Phillips * rename docs to website in ci_workflows.yml Signed-off-by: Cary Phillips * mention sphinx_press_theme and rst Signed-off-by: Cary Phillips --------- Signed-off-by: Cary Phillips --- .github/workflows/ci_workflow.yml | 12 ++-- .readthedocs.yml | 4 +- CMakeLists.txt | 7 +-- {docs => website}/CMakeLists.txt | 10 +--- {docs => website}/Doxyfile.in | 0 {docs => website}/Makefile | 0 {docs => website}/PortingGuide.rst | 0 {docs => website}/PortingGuide2-3.md | 0 {docs => website}/SymbolVisibility.rst | 0 {docs => website}/about.rst | 0 {docs => website}/classes.rst | 0 {docs => website}/classes/Box.rst | 0 {docs => website}/classes/Color3.rst | 0 {docs => website}/classes/Color4.rst | 0 {docs => website}/classes/Euler.rst | 0 {docs => website}/classes/Frustum.rst | 0 {docs => website}/classes/Interval.rst | 0 {docs => website}/classes/Line3.rst | 0 {docs => website}/classes/Matrix22.rst | 0 {docs => website}/classes/Matrix33.rst | 0 {docs => website}/classes/Matrix44.rst | 0 {docs => website}/classes/Plane3.rst | 0 {docs => website}/classes/Quat.rst | 0 {docs => website}/classes/Rand32.rst | 0 {docs => website}/classes/Rand48.rst | 0 {docs => website}/classes/Shear6.rst | 0 {docs => website}/classes/Sphere3.rst | 0 {docs => website}/classes/Vec2.rst | 0 {docs => website}/classes/Vec3.rst | 0 {docs => website}/classes/Vec4.rst | 0 {docs => website}/classes/float.rst | 0 {docs => website}/classes/half.rst | 0 {docs => website}/classes/half_c.rst | 0 {docs => website}/classes/half_class.rst | 0 {docs => website}/classes/half_conversion.rst | 0 {docs => website}/classes/half_limits.rst | 0 {docs => website}/concepts.rst | 0 {docs => website}/conf.py | 0 {docs => website}/examples/Box.cpp | 0 {docs => website}/examples/CMakeLists.txt | 0 {docs => website}/examples/Color3.cpp | 0 {docs => website}/examples/Color4.cpp | 0 {docs => website}/examples/Euler.cpp | 0 {docs => website}/examples/Frustum.cpp | 0 {docs => website}/examples/Interval.cpp | 0 {docs => website}/examples/Line3.cpp | 0 {docs => website}/examples/Matrix22.cpp | 0 {docs => website}/examples/Matrix33.cpp | 0 {docs => website}/examples/Matrix44.cpp | 0 {docs => website}/examples/Plane3.cpp | 0 {docs => website}/examples/Quat.cpp | 0 {docs => website}/examples/Shear6.cpp | 0 {docs => website}/examples/Sphere3.cpp | 0 {docs => website}/examples/Vec2.cpp | 0 {docs => website}/examples/Vec3.cpp | 0 {docs => website}/examples/Vec4.cpp | 0 {docs => website}/examples/gl.cpp | 0 {docs => website}/examples/half.c | 0 {docs => website}/examples/half.cpp | 0 {docs => website}/examples/intro.cpp | 0 {docs => website}/examples/main.cpp | 0 {docs => website}/fixmanpages.sh | 0 {docs => website}/functions.rst | 0 {docs => website}/functions/box.rst | 0 {docs => website}/functions/color.rst | 0 {docs => website}/functions/frame.rst | 0 {docs => website}/functions/gl.rst | 0 {docs => website}/functions/glu.rst | 0 {docs => website}/functions/line.rst | 0 {docs => website}/functions/matrix.rst | 0 {docs => website}/functions/random.rst | 0 {docs => website}/functions/roots.rst | 0 {docs => website}/functions/vec.rst | 0 {docs => website}/images/imath-fav.ico | Bin {docs => website}/images/imath-logo-black.png | Bin {docs => website}/images/imath-logo-blue.png | Bin {docs => website}/images/imath-logo-white.png | Bin {docs => website}/index.rst | 0 {docs => website}/install.rst | 55 ++++++++++++------ {docs => website}/license.rst | 0 {docs => website}/requirements.txt | 0 {docs => website}/toc_redirect.rst | 0 82 files changed, 50 insertions(+), 38 deletions(-) rename {docs => website}/CMakeLists.txt (86%) rename {docs => website}/Doxyfile.in (100%) rename {docs => website}/Makefile (100%) rename {docs => website}/PortingGuide.rst (100%) rename {docs => website}/PortingGuide2-3.md (100%) rename {docs => website}/SymbolVisibility.rst (100%) rename {docs => website}/about.rst (100%) rename {docs => website}/classes.rst (100%) rename {docs => website}/classes/Box.rst (100%) rename {docs => website}/classes/Color3.rst (100%) rename {docs => website}/classes/Color4.rst (100%) rename {docs => website}/classes/Euler.rst (100%) rename {docs => website}/classes/Frustum.rst (100%) rename {docs => website}/classes/Interval.rst (100%) rename {docs => website}/classes/Line3.rst (100%) rename {docs => website}/classes/Matrix22.rst (100%) rename {docs => website}/classes/Matrix33.rst (100%) rename {docs => website}/classes/Matrix44.rst (100%) rename {docs => website}/classes/Plane3.rst (100%) rename {docs => website}/classes/Quat.rst (100%) rename {docs => website}/classes/Rand32.rst (100%) rename {docs => website}/classes/Rand48.rst (100%) rename {docs => website}/classes/Shear6.rst (100%) rename {docs => website}/classes/Sphere3.rst (100%) rename {docs => website}/classes/Vec2.rst (100%) rename {docs => website}/classes/Vec3.rst (100%) rename {docs => website}/classes/Vec4.rst (100%) rename {docs => website}/classes/float.rst (100%) rename {docs => website}/classes/half.rst (100%) rename {docs => website}/classes/half_c.rst (100%) rename {docs => website}/classes/half_class.rst (100%) rename {docs => website}/classes/half_conversion.rst (100%) rename {docs => website}/classes/half_limits.rst (100%) rename {docs => website}/concepts.rst (100%) rename {docs => website}/conf.py (100%) rename {docs => website}/examples/Box.cpp (100%) rename {docs => website}/examples/CMakeLists.txt (100%) rename {docs => website}/examples/Color3.cpp (100%) rename {docs => website}/examples/Color4.cpp (100%) rename {docs => website}/examples/Euler.cpp (100%) rename {docs => website}/examples/Frustum.cpp (100%) rename {docs => website}/examples/Interval.cpp (100%) rename {docs => website}/examples/Line3.cpp (100%) rename {docs => website}/examples/Matrix22.cpp (100%) rename {docs => website}/examples/Matrix33.cpp (100%) rename {docs => website}/examples/Matrix44.cpp (100%) rename {docs => website}/examples/Plane3.cpp (100%) rename {docs => website}/examples/Quat.cpp (100%) rename {docs => website}/examples/Shear6.cpp (100%) rename {docs => website}/examples/Sphere3.cpp (100%) rename {docs => website}/examples/Vec2.cpp (100%) rename {docs => website}/examples/Vec3.cpp (100%) rename {docs => website}/examples/Vec4.cpp (100%) rename {docs => website}/examples/gl.cpp (100%) rename {docs => website}/examples/half.c (100%) rename {docs => website}/examples/half.cpp (100%) rename {docs => website}/examples/intro.cpp (100%) rename {docs => website}/examples/main.cpp (100%) rename {docs => website}/fixmanpages.sh (100%) rename {docs => website}/functions.rst (100%) rename {docs => website}/functions/box.rst (100%) rename {docs => website}/functions/color.rst (100%) rename {docs => website}/functions/frame.rst (100%) rename {docs => website}/functions/gl.rst (100%) rename {docs => website}/functions/glu.rst (100%) rename {docs => website}/functions/line.rst (100%) rename {docs => website}/functions/matrix.rst (100%) rename {docs => website}/functions/random.rst (100%) rename {docs => website}/functions/roots.rst (100%) rename {docs => website}/functions/vec.rst (100%) rename {docs => website}/images/imath-fav.ico (100%) rename {docs => website}/images/imath-logo-black.png (100%) rename {docs => website}/images/imath-logo-blue.png (100%) rename {docs => website}/images/imath-logo-white.png (100%) rename {docs => website}/index.rst (100%) rename {docs => website}/install.rst (88%) rename {docs => website}/license.rst (100%) rename {docs => website}/requirements.txt (100%) rename {docs => website}/toc_redirect.rst (100%) diff --git a/.github/workflows/ci_workflow.yml b/.github/workflows/ci_workflow.yml index 18d59eba..f1cf5f4e 100644 --- a/.github/workflows/ci_workflow.yml +++ b/.github/workflows/ci_workflow.yml @@ -301,7 +301,7 @@ jobs: ./bin/ImathTest # Confirm the examples compile and execute rm -rf bin CMakeCache.txt CMakeFiles cmake_install.cmake Makefile - cmake ../docs/examples \ + cmake ../website/examples \ -DCMAKE_PREFIX_PATH=../../_install \ -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \ -DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \ @@ -609,14 +609,14 @@ jobs: shell: bash working-directory: _build - Docs: + Website: # Build the documentation, using a process that mimics the readthedoc build. # # Note that this job does not actually build Imath libraries, # it just runs doxygen and sphinx. - name: 'Docs' + name: 'Website' runs-on: ubuntu-latest steps: @@ -628,14 +628,14 @@ jobs: # Need help2man for tool manpages run: sudo apt-get install -y doxygen help2man - name: Install sphinx requirements - run: pip3 install -r docs/requirements.txt + run: pip3 install -r website/requirements.txt - name: Configure - run: cmake .. -DBUILD_DOCS='ON' + run: cmake .. -DBUILD_WEBSITE='ON' working-directory: _build - name: Build run: | cmake --build . \ - --target docs \ + --target website \ --config Release working-directory: _build diff --git a/.readthedocs.yml b/.readthedocs.yml index a89bc120..b450ec53 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -14,8 +14,8 @@ build: python: "3.9" sphinx: - configuration: docs/conf.py + configuration: website/conf.py python: install: - - requirements: docs/requirements.txt + - requirements: website/requirements.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 1ffdccbb..fe6dd10a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,10 +73,9 @@ if (PYTHON) add_subdirectory(src/python) endif() -option(BUILD_DOCS "Set ON to build readthedocs documentation") -if (BUILD_DOCS AND NOT IMATH_IS_SUBPROJECT) - option(INSTALL_DOCS "Set ON to install html documentation" ON) - add_subdirectory(docs) +option(BUILD_WEBSITE "Set ON to build the readthedocs website source") +if (BUILD_WEBSITE AND NOT IMATH_IS_SUBPROJECT) + add_subdirectory(website) endif() # If you want to use ctest to configure, build and diff --git a/docs/CMakeLists.txt b/website/CMakeLists.txt similarity index 86% rename from docs/CMakeLists.txt rename to website/CMakeLists.txt index 799c445c..8e2c320d 100644 --- a/docs/CMakeLists.txt +++ b/website/CMakeLists.txt @@ -38,11 +38,5 @@ add_custom_command(OUTPUT ${SPHINX_INDEX_FILE} MAIN_DEPENDENCY conf.py COMMENT "Generating documentation with Sphinx") -add_custom_target(docs ALL DEPENDS ${SPHINX_INDEX_FILE} ${DOXYGEN_INDEX_FILE}) - -# Add an install target to install the docs -if(INSTALL_DOCS) - include(GNUInstallDirs) - install(DIRECTORY ${SPHINX_BUILD} - DESTINATION ${CMAKE_INSTALL_DOCDIR}) -endif() +add_custom_target(website ALL DEPENDS ${SPHINX_INDEX_FILE} ${DOXYGEN_INDEX_FILE}) + diff --git a/docs/Doxyfile.in b/website/Doxyfile.in similarity index 100% rename from docs/Doxyfile.in rename to website/Doxyfile.in diff --git a/docs/Makefile b/website/Makefile similarity index 100% rename from docs/Makefile rename to website/Makefile diff --git a/docs/PortingGuide.rst b/website/PortingGuide.rst similarity index 100% rename from docs/PortingGuide.rst rename to website/PortingGuide.rst diff --git a/docs/PortingGuide2-3.md b/website/PortingGuide2-3.md similarity index 100% rename from docs/PortingGuide2-3.md rename to website/PortingGuide2-3.md diff --git a/docs/SymbolVisibility.rst b/website/SymbolVisibility.rst similarity index 100% rename from docs/SymbolVisibility.rst rename to website/SymbolVisibility.rst diff --git a/docs/about.rst b/website/about.rst similarity index 100% rename from docs/about.rst rename to website/about.rst diff --git a/docs/classes.rst b/website/classes.rst similarity index 100% rename from docs/classes.rst rename to website/classes.rst diff --git a/docs/classes/Box.rst b/website/classes/Box.rst similarity index 100% rename from docs/classes/Box.rst rename to website/classes/Box.rst diff --git a/docs/classes/Color3.rst b/website/classes/Color3.rst similarity index 100% rename from docs/classes/Color3.rst rename to website/classes/Color3.rst diff --git a/docs/classes/Color4.rst b/website/classes/Color4.rst similarity index 100% rename from docs/classes/Color4.rst rename to website/classes/Color4.rst diff --git a/docs/classes/Euler.rst b/website/classes/Euler.rst similarity index 100% rename from docs/classes/Euler.rst rename to website/classes/Euler.rst diff --git a/docs/classes/Frustum.rst b/website/classes/Frustum.rst similarity index 100% rename from docs/classes/Frustum.rst rename to website/classes/Frustum.rst diff --git a/docs/classes/Interval.rst b/website/classes/Interval.rst similarity index 100% rename from docs/classes/Interval.rst rename to website/classes/Interval.rst diff --git a/docs/classes/Line3.rst b/website/classes/Line3.rst similarity index 100% rename from docs/classes/Line3.rst rename to website/classes/Line3.rst diff --git a/docs/classes/Matrix22.rst b/website/classes/Matrix22.rst similarity index 100% rename from docs/classes/Matrix22.rst rename to website/classes/Matrix22.rst diff --git a/docs/classes/Matrix33.rst b/website/classes/Matrix33.rst similarity index 100% rename from docs/classes/Matrix33.rst rename to website/classes/Matrix33.rst diff --git a/docs/classes/Matrix44.rst b/website/classes/Matrix44.rst similarity index 100% rename from docs/classes/Matrix44.rst rename to website/classes/Matrix44.rst diff --git a/docs/classes/Plane3.rst b/website/classes/Plane3.rst similarity index 100% rename from docs/classes/Plane3.rst rename to website/classes/Plane3.rst diff --git a/docs/classes/Quat.rst b/website/classes/Quat.rst similarity index 100% rename from docs/classes/Quat.rst rename to website/classes/Quat.rst diff --git a/docs/classes/Rand32.rst b/website/classes/Rand32.rst similarity index 100% rename from docs/classes/Rand32.rst rename to website/classes/Rand32.rst diff --git a/docs/classes/Rand48.rst b/website/classes/Rand48.rst similarity index 100% rename from docs/classes/Rand48.rst rename to website/classes/Rand48.rst diff --git a/docs/classes/Shear6.rst b/website/classes/Shear6.rst similarity index 100% rename from docs/classes/Shear6.rst rename to website/classes/Shear6.rst diff --git a/docs/classes/Sphere3.rst b/website/classes/Sphere3.rst similarity index 100% rename from docs/classes/Sphere3.rst rename to website/classes/Sphere3.rst diff --git a/docs/classes/Vec2.rst b/website/classes/Vec2.rst similarity index 100% rename from docs/classes/Vec2.rst rename to website/classes/Vec2.rst diff --git a/docs/classes/Vec3.rst b/website/classes/Vec3.rst similarity index 100% rename from docs/classes/Vec3.rst rename to website/classes/Vec3.rst diff --git a/docs/classes/Vec4.rst b/website/classes/Vec4.rst similarity index 100% rename from docs/classes/Vec4.rst rename to website/classes/Vec4.rst diff --git a/docs/classes/float.rst b/website/classes/float.rst similarity index 100% rename from docs/classes/float.rst rename to website/classes/float.rst diff --git a/docs/classes/half.rst b/website/classes/half.rst similarity index 100% rename from docs/classes/half.rst rename to website/classes/half.rst diff --git a/docs/classes/half_c.rst b/website/classes/half_c.rst similarity index 100% rename from docs/classes/half_c.rst rename to website/classes/half_c.rst diff --git a/docs/classes/half_class.rst b/website/classes/half_class.rst similarity index 100% rename from docs/classes/half_class.rst rename to website/classes/half_class.rst diff --git a/docs/classes/half_conversion.rst b/website/classes/half_conversion.rst similarity index 100% rename from docs/classes/half_conversion.rst rename to website/classes/half_conversion.rst diff --git a/docs/classes/half_limits.rst b/website/classes/half_limits.rst similarity index 100% rename from docs/classes/half_limits.rst rename to website/classes/half_limits.rst diff --git a/docs/concepts.rst b/website/concepts.rst similarity index 100% rename from docs/concepts.rst rename to website/concepts.rst diff --git a/docs/conf.py b/website/conf.py similarity index 100% rename from docs/conf.py rename to website/conf.py diff --git a/docs/examples/Box.cpp b/website/examples/Box.cpp similarity index 100% rename from docs/examples/Box.cpp rename to website/examples/Box.cpp diff --git a/docs/examples/CMakeLists.txt b/website/examples/CMakeLists.txt similarity index 100% rename from docs/examples/CMakeLists.txt rename to website/examples/CMakeLists.txt diff --git a/docs/examples/Color3.cpp b/website/examples/Color3.cpp similarity index 100% rename from docs/examples/Color3.cpp rename to website/examples/Color3.cpp diff --git a/docs/examples/Color4.cpp b/website/examples/Color4.cpp similarity index 100% rename from docs/examples/Color4.cpp rename to website/examples/Color4.cpp diff --git a/docs/examples/Euler.cpp b/website/examples/Euler.cpp similarity index 100% rename from docs/examples/Euler.cpp rename to website/examples/Euler.cpp diff --git a/docs/examples/Frustum.cpp b/website/examples/Frustum.cpp similarity index 100% rename from docs/examples/Frustum.cpp rename to website/examples/Frustum.cpp diff --git a/docs/examples/Interval.cpp b/website/examples/Interval.cpp similarity index 100% rename from docs/examples/Interval.cpp rename to website/examples/Interval.cpp diff --git a/docs/examples/Line3.cpp b/website/examples/Line3.cpp similarity index 100% rename from docs/examples/Line3.cpp rename to website/examples/Line3.cpp diff --git a/docs/examples/Matrix22.cpp b/website/examples/Matrix22.cpp similarity index 100% rename from docs/examples/Matrix22.cpp rename to website/examples/Matrix22.cpp diff --git a/docs/examples/Matrix33.cpp b/website/examples/Matrix33.cpp similarity index 100% rename from docs/examples/Matrix33.cpp rename to website/examples/Matrix33.cpp diff --git a/docs/examples/Matrix44.cpp b/website/examples/Matrix44.cpp similarity index 100% rename from docs/examples/Matrix44.cpp rename to website/examples/Matrix44.cpp diff --git a/docs/examples/Plane3.cpp b/website/examples/Plane3.cpp similarity index 100% rename from docs/examples/Plane3.cpp rename to website/examples/Plane3.cpp diff --git a/docs/examples/Quat.cpp b/website/examples/Quat.cpp similarity index 100% rename from docs/examples/Quat.cpp rename to website/examples/Quat.cpp diff --git a/docs/examples/Shear6.cpp b/website/examples/Shear6.cpp similarity index 100% rename from docs/examples/Shear6.cpp rename to website/examples/Shear6.cpp diff --git a/docs/examples/Sphere3.cpp b/website/examples/Sphere3.cpp similarity index 100% rename from docs/examples/Sphere3.cpp rename to website/examples/Sphere3.cpp diff --git a/docs/examples/Vec2.cpp b/website/examples/Vec2.cpp similarity index 100% rename from docs/examples/Vec2.cpp rename to website/examples/Vec2.cpp diff --git a/docs/examples/Vec3.cpp b/website/examples/Vec3.cpp similarity index 100% rename from docs/examples/Vec3.cpp rename to website/examples/Vec3.cpp diff --git a/docs/examples/Vec4.cpp b/website/examples/Vec4.cpp similarity index 100% rename from docs/examples/Vec4.cpp rename to website/examples/Vec4.cpp diff --git a/docs/examples/gl.cpp b/website/examples/gl.cpp similarity index 100% rename from docs/examples/gl.cpp rename to website/examples/gl.cpp diff --git a/docs/examples/half.c b/website/examples/half.c similarity index 100% rename from docs/examples/half.c rename to website/examples/half.c diff --git a/docs/examples/half.cpp b/website/examples/half.cpp similarity index 100% rename from docs/examples/half.cpp rename to website/examples/half.cpp diff --git a/docs/examples/intro.cpp b/website/examples/intro.cpp similarity index 100% rename from docs/examples/intro.cpp rename to website/examples/intro.cpp diff --git a/docs/examples/main.cpp b/website/examples/main.cpp similarity index 100% rename from docs/examples/main.cpp rename to website/examples/main.cpp diff --git a/docs/fixmanpages.sh b/website/fixmanpages.sh similarity index 100% rename from docs/fixmanpages.sh rename to website/fixmanpages.sh diff --git a/docs/functions.rst b/website/functions.rst similarity index 100% rename from docs/functions.rst rename to website/functions.rst diff --git a/docs/functions/box.rst b/website/functions/box.rst similarity index 100% rename from docs/functions/box.rst rename to website/functions/box.rst diff --git a/docs/functions/color.rst b/website/functions/color.rst similarity index 100% rename from docs/functions/color.rst rename to website/functions/color.rst diff --git a/docs/functions/frame.rst b/website/functions/frame.rst similarity index 100% rename from docs/functions/frame.rst rename to website/functions/frame.rst diff --git a/docs/functions/gl.rst b/website/functions/gl.rst similarity index 100% rename from docs/functions/gl.rst rename to website/functions/gl.rst diff --git a/docs/functions/glu.rst b/website/functions/glu.rst similarity index 100% rename from docs/functions/glu.rst rename to website/functions/glu.rst diff --git a/docs/functions/line.rst b/website/functions/line.rst similarity index 100% rename from docs/functions/line.rst rename to website/functions/line.rst diff --git a/docs/functions/matrix.rst b/website/functions/matrix.rst similarity index 100% rename from docs/functions/matrix.rst rename to website/functions/matrix.rst diff --git a/docs/functions/random.rst b/website/functions/random.rst similarity index 100% rename from docs/functions/random.rst rename to website/functions/random.rst diff --git a/docs/functions/roots.rst b/website/functions/roots.rst similarity index 100% rename from docs/functions/roots.rst rename to website/functions/roots.rst diff --git a/docs/functions/vec.rst b/website/functions/vec.rst similarity index 100% rename from docs/functions/vec.rst rename to website/functions/vec.rst diff --git a/docs/images/imath-fav.ico b/website/images/imath-fav.ico similarity index 100% rename from docs/images/imath-fav.ico rename to website/images/imath-fav.ico diff --git a/docs/images/imath-logo-black.png b/website/images/imath-logo-black.png similarity index 100% rename from docs/images/imath-logo-black.png rename to website/images/imath-logo-black.png diff --git a/docs/images/imath-logo-blue.png b/website/images/imath-logo-blue.png similarity index 100% rename from docs/images/imath-logo-blue.png rename to website/images/imath-logo-blue.png diff --git a/docs/images/imath-logo-white.png b/website/images/imath-logo-white.png similarity index 100% rename from docs/images/imath-logo-white.png rename to website/images/imath-logo-white.png diff --git a/docs/index.rst b/website/index.rst similarity index 100% rename from docs/index.rst rename to website/index.rst diff --git a/docs/install.rst b/website/install.rst similarity index 88% rename from docs/install.rst rename to website/install.rst index 120153c0..1c307cfc 100644 --- a/docs/install.rst +++ b/website/install.rst @@ -69,11 +69,12 @@ To build via CMake, you need to first identify three directories: libraries and headers, referred to below as ``$installdir``. To build: + .. code-block:: - $ cd $builddir - $ cmake $srcdir --install-prefix $installdir - $ cmake --build $builddir --target install --config Release + % cd $builddir + % cmake $srcdir --install-prefix $installdir + % cmake --build $builddir --target install --config Release Note that the CMake configuration prefers to apply an out-of-tree build process, since there may be multiple build configurations @@ -102,7 +103,7 @@ can specify a local install directory to cmake via the .. code-block:: - $ cmake .. -DCMAKE_INSTALL_PREFIX=$Imath_install_directory + % cmake .. -DCMAKE_INSTALL_PREFIX=$Imath_install_directory Library Names ------------- @@ -141,27 +142,45 @@ See the :doc:`PortingGuide` for details about differences from previous releases and how to address them. Also refer to the porting guide for details about changes to Imath. -Building the Documentation --------------------------- +Building the Website +-------------------- The Imath technical documentation at `https://imath.readthedocs.io `_ is generated via `Sphinx `_ with the `Breathe `_ extension using information -extracted from header comments by `Doxygen `_. - -To build the documentation locally from the source headers and -``.rst`` files, set the CMake option ``BUILD_DOCS=ON``. This adds -``Doxygen`` and ``Sphinx`` CMake targets and enables building the docs -by default. generation is off by default. - -Building the documentation requires that ``sphinx``, ``breathe``, and +extracted from header comments by `Doxygen `_, +using the `sphinx-press-theme +`_, and is hosted by +`readthedocs `_. The website +source is in `restructured text +`_ +in the ``website`` directory. + +To build the website locally from the source headers and +``.rst`` files, set the CMake option ``BUILD_WEBSITE=ON``. This adds +``website`` CMake target. Generation is off by default. + +Building the website requires that ``sphinx``, ``breathe``, and ``doxygen`` are installed. It further requires the `sphinx-press-theme -`_, as indicated in the -`requirements.txt +`_. Complete dependencies are +described in the `requirements.txt `_ file. +On Debian/Ubuntu Linux: + +.. code-block:: + + % apt-get install doxygen python3-sphinx + % pip3 install breathe + % pip3 install sphinx_press_theme + + % mkdir _build + % cd _build + % cmake .. -DBUILD_WEBSITE=ON + % cmake --build . --target website + CMake Build-time Configuration Options -------------------------------------- @@ -171,7 +190,7 @@ variables, run: .. code-block:: - $ cmake -LAH $imath_source_directory + % cmake -LAH $imath_source_directory You can customize these options three ways: @@ -306,5 +325,5 @@ initial generation: .. code-block:: - $ cmake -G “Ninja” .. + % cmake -G “Ninja” .. diff --git a/docs/license.rst b/website/license.rst similarity index 100% rename from docs/license.rst rename to website/license.rst diff --git a/docs/requirements.txt b/website/requirements.txt similarity index 100% rename from docs/requirements.txt rename to website/requirements.txt diff --git a/docs/toc_redirect.rst b/website/toc_redirect.rst similarity index 100% rename from docs/toc_redirect.rst rename to website/toc_redirect.rst From e14263e168aa30dad669f663f66187729607dd57 Mon Sep 17 00:00:00 2001 From: Yuya Asano <64895419+sukeya@users.noreply.github.com> Date: Thu, 3 Aug 2023 23:58:04 +0900 Subject: [PATCH 05/20] Fix calling default constructor by uniform init. (#340) I fixed calling default constructor in ImathTypeTraits.h by using uniform initialization. Signed-off-by: Yuya Asano <64895419+sukeya@users.noreply.github.com> --- src/Imath/ImathTypeTraits.h | 51 ++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/src/Imath/ImathTypeTraits.h b/src/Imath/ImathTypeTraits.h index 4e8447d3..66b474b7 100644 --- a/src/Imath/ImathTypeTraits.h +++ b/src/Imath/ImathTypeTraits.h @@ -86,10 +86,11 @@ struct has_xy { typedef char No[2]; // Valid only if .x, .y exist and are the right type: return a Yes. - template::value), - IMATH_ENABLE_IF(std::is_same::value)> - static Yes& test(int); + template < + typename C, + IMATH_ENABLE_IF (std::is_same::value), + IMATH_ENABLE_IF (std::is_same::value)> + static Yes& test (int); // Fallback, default to returning a No. template static No& test(...); @@ -110,11 +111,12 @@ struct has_xyz { typedef char No[2]; // Valid only if .x, .y, .z exist and are the right type: return a Yes. - template::value), - IMATH_ENABLE_IF(std::is_same::value), - IMATH_ENABLE_IF(std::is_same::value)> - static Yes& test(int); + template < + typename C, + IMATH_ENABLE_IF (std::is_same::value), + IMATH_ENABLE_IF (std::is_same::value), + IMATH_ENABLE_IF (std::is_same::value)> + static Yes& test (int); // Fallback, default to returning a No. template static No& test(...); @@ -135,12 +137,13 @@ struct has_xyzw { typedef char No[2]; // Valid only if .x, .y, .z, .w exist and are the right type: return a Yes. - template::value), - IMATH_ENABLE_IF(std::is_same::value), - IMATH_ENABLE_IF(std::is_same::value), - IMATH_ENABLE_IF(std::is_same::value)> - static Yes& test(int); + template < + typename C, + IMATH_ENABLE_IF (std::is_same::value), + IMATH_ENABLE_IF (std::is_same::value), + IMATH_ENABLE_IF (std::is_same::value), + IMATH_ENABLE_IF (std::is_same::value)> + static Yes& test (int); // Fallback, default to returning a No. template static No& test(...); @@ -162,9 +165,12 @@ struct has_subscript { typedef char No[2]; // Valid only if T[] is possible and is the right type: return a Yes. - template::type, Base>::value)> - static Yes& test(int); + template < + typename C, + IMATH_ENABLE_IF (std::is_same< + typename std::decay::type, + Base>::value)> + static Yes& test (int); // Fallback, default to returning a No. template static No& test(...); @@ -191,9 +197,12 @@ struct has_double_subscript { typedef char No[2]; // Valid only if T[][] is possible and is the right type: return a Yes. - template::type, Base>::value)> - static Yes& test(int); + template < + typename C, + IMATH_ENABLE_IF (std::is_same< + typename std::decay::type, + Base>::value)> + static Yes& test (int); // Fallback, default to returning a No. template static No& test(...); From 06b60089edd107faaea53f940726cab4fda0e38c Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Thu, 3 Aug 2023 16:31:41 -0700 Subject: [PATCH 06/20] Add missing copyright/license identifiers (#342) Signed-off-by: Cary Phillips --- .clang-format | 2 ++ .git-blame-ignore-revs | 12 ++++++++---- .gitignore | 3 +++ CHANGES.md | 3 +++ CODE_OF_CONDUCT.md | 3 +++ share/ci/scripts/linux/install_boost.sh | 3 +++ share/ci/scripts/linux/install_cmake.sh | 3 +++ share/ci/scripts/linux/install_gdb.sh | 3 +++ share/ci/scripts/linux/install_six.sh | 3 +++ share/ci/scripts/linux/install_sonar.sh | 3 +++ share/ci/scripts/linux/install_valgrind.sh | 3 +++ share/ci/scripts/linux/log_valgrind.sh | 3 +++ share/ci/scripts/linux/run_gcov.sh | 3 +++ share/ci/scripts/macos/install_python.sh | 3 +++ share/ci/scripts/windows/install_boost.ps1 | 3 +++ share/ci/scripts/windows/install_cmake.ps1 | 3 +++ share/ci/scripts/windows/install_python.ps1 | 3 +++ src/python/PyImathTest/testStringTable.h | 5 +++++ website/fixmanpages.sh | 5 ++++- website/requirements.txt | 3 +++ 20 files changed, 67 insertions(+), 5 deletions(-) diff --git a/.clang-format b/.clang-format index 1f6f5854..65235a27 100644 --- a/.clang-format +++ b/.clang-format @@ -1,3 +1,5 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) Contributors to the OpenEXR Project. --- Language: Cpp BasedOnStyle: LLVM diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index 01d2f635..fac6951d 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -1,6 +1,10 @@ -# Disable clang-format in half.cpp -344334aef268206ed1d46399ea85ab276f3f13e6 +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) Contributors to the OpenEXR Project. + +# if you have git newer than 2.23, you can either +# specify this on the command line +# git blame foo.cpp --ignore-revs-file path/to/this/file +# or add this file to your config (use global to change your global user pref) +# git config [--global] blame.ignoreRevsFile .git-blame-ignore-revs -# Tune .clang-format to match existing style -c6014892de1acccca0deada8ab3353cd290e9fbc diff --git a/.gitignore b/.gitignore index 0f0bab0c..a36992cf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) Contributors to the OpenEXR Project. + build/ _build/ _install/ diff --git a/CHANGES.md b/CHANGES.md index fc47b69c..91d1803a 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,6 @@ + + + # Imath Release Notes * [Version 3.1.9](#version-319-May-31-2023) May 31, 2023 diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 3501232b..ff561298 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,3 +1,6 @@ + + + # Code of Conduct Imath is a sub-project of the OpenEXR project, which abides by Linux diff --git a/share/ci/scripts/linux/install_boost.sh b/share/ci/scripts/linux/install_boost.sh index 471ecffb..e194e3b1 100755 --- a/share/ci/scripts/linux/install_boost.sh +++ b/share/ci/scripts/linux/install_boost.sh @@ -1,5 +1,8 @@ #!/usr/bin/env bash +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) Contributors to the OpenEXR Project. + set -ex BOOST_VERSION="$1" diff --git a/share/ci/scripts/linux/install_cmake.sh b/share/ci/scripts/linux/install_cmake.sh index 7f194ed3..ab796d02 100755 --- a/share/ci/scripts/linux/install_cmake.sh +++ b/share/ci/scripts/linux/install_cmake.sh @@ -1,5 +1,8 @@ #!/usr/bin/env bash +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) Contributors to the OpenEXR Project. + set -ex echo "Updating to newer cmake to enable python-3" diff --git a/share/ci/scripts/linux/install_gdb.sh b/share/ci/scripts/linux/install_gdb.sh index 484b0239..16a9b4b1 100755 --- a/share/ci/scripts/linux/install_gdb.sh +++ b/share/ci/scripts/linux/install_gdb.sh @@ -1,5 +1,8 @@ #!/usr/bin/env bash +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) Contributors to the OpenEXR Project. + set -ex GDB_VERSION="8.3" diff --git a/share/ci/scripts/linux/install_six.sh b/share/ci/scripts/linux/install_six.sh index 7d87ed3b..aa7fb32f 100755 --- a/share/ci/scripts/linux/install_six.sh +++ b/share/ci/scripts/linux/install_six.sh @@ -1,5 +1,8 @@ #!/usr/bin/env bash +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) Contributors to the OpenEXR Project. + set -ex SIX_VERSION="1.12.0" diff --git a/share/ci/scripts/linux/install_sonar.sh b/share/ci/scripts/linux/install_sonar.sh index 8ed08615..a8779c4c 100755 --- a/share/ci/scripts/linux/install_sonar.sh +++ b/share/ci/scripts/linux/install_sonar.sh @@ -1,5 +1,8 @@ #!/usr/bin/env bash +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) Contributors to the OpenEXR Project. + set -ex SONAR_VERSION="$1" diff --git a/share/ci/scripts/linux/install_valgrind.sh b/share/ci/scripts/linux/install_valgrind.sh index d6135fd6..7006a3a8 100755 --- a/share/ci/scripts/linux/install_valgrind.sh +++ b/share/ci/scripts/linux/install_valgrind.sh @@ -1,5 +1,8 @@ #!/usr/bin/env bash +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) Contributors to the OpenEXR Project. + set -ex VALGRIND_VERSION="3.15.0" diff --git a/share/ci/scripts/linux/log_valgrind.sh b/share/ci/scripts/linux/log_valgrind.sh index 39183ba2..9153c95c 100755 --- a/share/ci/scripts/linux/log_valgrind.sh +++ b/share/ci/scripts/linux/log_valgrind.sh @@ -1,5 +1,8 @@ #!/usr/bin/env bash +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) Contributors to the OpenEXR Project. + set -ex LOGDIR="$1" diff --git a/share/ci/scripts/linux/run_gcov.sh b/share/ci/scripts/linux/run_gcov.sh index 35ce32fe..46536690 100755 --- a/share/ci/scripts/linux/run_gcov.sh +++ b/share/ci/scripts/linux/run_gcov.sh @@ -3,6 +3,9 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright (c) Contributors to the OpenEXR Project. +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) Contributors to the OpenEXR Project. + set -ex if [ $# -gt 0 ] diff --git a/share/ci/scripts/macos/install_python.sh b/share/ci/scripts/macos/install_python.sh index ab2b7092..4f27e64a 100755 --- a/share/ci/scripts/macos/install_python.sh +++ b/share/ci/scripts/macos/install_python.sh @@ -1,5 +1,8 @@ #!/usr/bin/env bash +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) Contributors to the OpenEXR Project. + set -ex PYTHON_VERSION="$1" diff --git a/share/ci/scripts/windows/install_boost.ps1 b/share/ci/scripts/windows/install_boost.ps1 index 087c06f4..ef11c84d 100755 --- a/share/ci/scripts/windows/install_boost.ps1 +++ b/share/ci/scripts/windows/install_boost.ps1 @@ -1,3 +1,6 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) Contributors to the OpenEXR Project. + # # TODO: fix this script to work with sourceforge archive! # diff --git a/share/ci/scripts/windows/install_cmake.ps1 b/share/ci/scripts/windows/install_cmake.ps1 index 92cb6d61..6a47ffe8 100755 --- a/share/ci/scripts/windows/install_cmake.ps1 +++ b/share/ci/scripts/windows/install_cmake.ps1 @@ -1,3 +1,6 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) Contributors to the OpenEXR Project. + $cmakeVersion = $Args[0] $cmakeMajorMinor = [io.path]::GetFileNameWithoutExtension("$cmakeVersion") diff --git a/share/ci/scripts/windows/install_python.ps1 b/share/ci/scripts/windows/install_python.ps1 index 24cb0e9f..6456b345 100755 --- a/share/ci/scripts/windows/install_python.ps1 +++ b/share/ci/scripts/windows/install_python.ps1 @@ -1,3 +1,6 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) Contributors to the OpenEXR Project. + $homeDir = (pwd) $pythonVersion = $Args[0] diff --git a/src/python/PyImathTest/testStringTable.h b/src/python/PyImathTest/testStringTable.h index 1ef13a53..311a12d4 100644 --- a/src/python/PyImathTest/testStringTable.h +++ b/src/python/PyImathTest/testStringTable.h @@ -1,2 +1,7 @@ +// +// SPDX-License-Identifier: BSD-3-Clause +// Copyright Contributors to the OpenEXR Project. +// + void testStringTable(); diff --git a/website/fixmanpages.sh b/website/fixmanpages.sh index 0036179b..8bc2b3fb 100755 --- a/website/fixmanpages.sh +++ b/website/fixmanpages.sh @@ -1,6 +1,9 @@ #!/bin/bash -# Fix the names of doxygen-generated man page files: +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) Contributors to the OpenEXR Project. + +# Fix the names of doxygen-generated man page Files: # * Strip "_ Vec" and "_ T _ _" from "Imath_Box_ Vec2_ T _ _.3" # * and rename "Imath_*" to "Imath::*" diff --git a/website/requirements.txt b/website/requirements.txt index d030b3b5..8bf5179d 100644 --- a/website/requirements.txt +++ b/website/requirements.txt @@ -1,3 +1,6 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) Contributors to the OpenEXR Project. + sphinx == 4.4.0 breathe sphinx-press-theme From 42543c03a6a0e84f817e6395cdf1774250d5fc00 Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Sun, 13 Aug 2023 16:40:57 -0700 Subject: [PATCH 07/20] Remove unnecessary files (#341) - PortingGuide2-3.md is now PortingGuide.rst - zlib is probably copypasta from OpenEXR? - website/Makefile probably added by mistake Signed-off-by: Cary Phillips --- .github/workflows/ci_workflow.yml | 3 - share/ci/scripts/windows/install_zlib.ps1 | 36 -- website/Makefile | 177 ------- website/PortingGuide2-3.md | 547 ---------------------- 4 files changed, 763 deletions(-) delete mode 100755 share/ci/scripts/windows/install_zlib.ps1 delete mode 100644 website/Makefile delete mode 100644 website/PortingGuide2-3.md diff --git a/.github/workflows/ci_workflow.yml b/.github/workflows/ci_workflow.yml index f1cf5f4e..0b4545e5 100644 --- a/.github/workflows/ci_workflow.yml +++ b/.github/workflows/ci_workflow.yml @@ -571,7 +571,6 @@ jobs: # run: | # share/ci/scripts/windows/install_python.ps1 ${{ matrix.python-version }} $HOME # share/ci/scripts/windows/install_boost.ps1 ${{ matrix.boost-version }} $HOME 3.8 - # share/ci/scripts/windows/install_zlib.ps1 ${{ matrix.zlib-version }} $HOME # shell: powershell - name: Configure run: | @@ -584,8 +583,6 @@ jobs: -DBUILD_SHARED_LIBS=${{ matrix.build-shared }} # NB: removed trailing slash from these lines # -DBOOST_ROOT:FILEPATH=$BOOST_ROOT - # -DZLIB_ROOT:FILEPATH="$ZLIB_ROOT" - # -DZLIB_LIBRARY:FILEPATH="$ZLIB_ROOT/lib/${{ matrix.zlib-lib }}" # -DPYTHON='ON' # -DPython_EXECUTABLE:FILEPATH="$PYTHON_ROOT" # -DPython_INCLUDE_DIR:FILEPATH="$PYTHON_ROOT/include" diff --git a/share/ci/scripts/windows/install_zlib.ps1 b/share/ci/scripts/windows/install_zlib.ps1 deleted file mode 100755 index 4c3bea20..00000000 --- a/share/ci/scripts/windows/install_zlib.ps1 +++ /dev/null @@ -1,36 +0,0 @@ -$homeDir = (pwd) - -$zlibVersion = $Args[0] -$zlibWorkingDir = $Args[1] - -$zlibMajorMinor = [io.path]::GetFileNameWithoutExtension("$zlibVersion") -$zlibVersionConcise = $zlibVersion -replace '[.]','' -$zlibArchive = "https://www.zlib.net/zlib${zlibVersionConcise}.zip" - -$zlibRoot = "${zlibWorkingDir}\_zlib" -$zlibBuildPath = "${zlibWorkingDir}\zlib-${zlibVersion}" -$zlibDllPath = "${zlibRoot}\bin" -$msbuild = "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe" - -Write-Host "Retrieving ${zlibArchive}" -Invoke-WebRequest "${zlibArchive}" -OutFile "${zlibBuildPath}.zip" -Write-Host "Expanding archive ${zlibBuildPath}.zip" -Expand-Archive "${zlibBuildPath}.zip" -DestinationPath "${zlibWorkingDir}" - -if (-NOT (Test-Path $zlibRoot)) -{ - New-Item -ItemType Directory $zlibRoot -} - -cd $zlibBuildPath -mkdir _build -cd _build -cmake .. -G"Visual Studio 16 2019" -DCMAKE_INSTALL_PREFIX="${zlibRoot}" - -Write-Host "Building ${zlibBuildPath}\_build\INSTALL.vcxproj" -foregroundcolor green -& "${msbuild}" "${zlibBuildPath}\_build\INSTALL.vcxproj" /P:Configuration=Release - -cd $homeDir - -echo "::set-env name=ZLIB_ROOT::$zlibRoot" -echo "::add-path::$zlibDllPath" diff --git a/website/Makefile b/website/Makefile deleted file mode 100644 index 9e86a0dc..00000000 --- a/website/Makefile +++ /dev/null @@ -1,177 +0,0 @@ -# Makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = sphinx-build -PAPER = -BUILDDIR = _build - -# User-friendly check for sphinx-build -ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) -$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) -endif - -# Internal variables. -PAPEROPT_a4 = -D latex_paper_size=a4 -PAPEROPT_letter = -D latex_paper_size=letter -ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . -# the i18n builder cannot share the environment and doctrees with the others -I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . - -.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext - -help: - @echo "Please use \`make ' where is one of" - @echo " html to make standalone HTML files" - @echo " dirhtml to make HTML files named index.html in directories" - @echo " singlehtml to make a single large HTML file" - @echo " pickle to make pickle files" - @echo " json to make JSON files" - @echo " htmlhelp to make HTML files and a HTML help project" - @echo " qthelp to make HTML files and a qthelp project" - @echo " devhelp to make HTML files and a Devhelp project" - @echo " epub to make an epub" - @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" - @echo " latexpdf to make LaTeX files and run them through pdflatex" - @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" - @echo " text to make text files" - @echo " man to make manual pages" - @echo " texinfo to make Texinfo files" - @echo " info to make Texinfo files and run them through makeinfo" - @echo " gettext to make PO message catalogs" - @echo " changes to make an overview of all changed/added/deprecated items" - @echo " xml to make Docutils-native XML files" - @echo " pseudoxml to make pseudoxml-XML files for display purposes" - @echo " linkcheck to check all external links for integrity" - @echo " doctest to run all doctests embedded in the documentation (if enabled)" - -clean: - rm -rf $(BUILDDIR)/* - -html: - $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." - -dirhtml: - $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." - -singlehtml: - $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml - @echo - @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." - -pickle: - $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle - @echo - @echo "Build finished; now you can process the pickle files." - -json: - $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json - @echo - @echo "Build finished; now you can process the JSON files." - -htmlhelp: - $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp - @echo - @echo "Build finished; now you can run HTML Help Workshop with the" \ - ".hhp project file in $(BUILDDIR)/htmlhelp." - -qthelp: - $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp - @echo - @echo "Build finished; now you can run "qcollectiongenerator" with the" \ - ".qhcp project file in $(BUILDDIR)/qthelp, like this:" - @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/ReadTheDocs-Breathe.qhcp" - @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/ReadTheDocs-Breathe.qhc" - -devhelp: - $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp - @echo - @echo "Build finished." - @echo "To view the help file:" - @echo "# mkdir -p $$HOME/.local/share/devhelp/ReadTheDocs-Breathe" - @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/ReadTheDocs-Breathe" - @echo "# devhelp" - -epub: - $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub - @echo - @echo "Build finished. The epub file is in $(BUILDDIR)/epub." - -latex: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo - @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." - @echo "Run \`make' in that directory to run these through (pdf)latex" \ - "(use \`make latexpdf' here to do that automatically)." - -latexpdf: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through pdflatex..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -latexpdfja: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through platex and dvipdfmx..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -text: - $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text - @echo - @echo "Build finished. The text files are in $(BUILDDIR)/text." - -man: - $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man - @echo - @echo "Build finished. The manual pages are in $(BUILDDIR)/man." - -texinfo: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo - @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." - @echo "Run \`make' in that directory to run these through makeinfo" \ - "(use \`make info' here to do that automatically)." - -info: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo "Running Texinfo files through makeinfo..." - make -C $(BUILDDIR)/texinfo info - @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." - -gettext: - $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale - @echo - @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." - -changes: - $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes - @echo - @echo "The overview file is in $(BUILDDIR)/changes." - -linkcheck: - $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck - @echo - @echo "Link check complete; look for any errors in the above output " \ - "or in $(BUILDDIR)/linkcheck/output.txt." - -doctest: - $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest - @echo "Testing of doctests in the sources finished, look at the " \ - "results in $(BUILDDIR)/doctest/output.txt." - -xml: - $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml - @echo - @echo "Build finished. The XML files are in $(BUILDDIR)/xml." - -pseudoxml: - $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml - @echo - @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." diff --git a/website/PortingGuide2-3.md b/website/PortingGuide2-3.md deleted file mode 100644 index 851b64c2..00000000 --- a/website/PortingGuide2-3.md +++ /dev/null @@ -1,547 +0,0 @@ -# OpenEXR/Imath 2.x to 3.x Porting Guide - -This porting guide outlines the several areas where switching from OpenEXR -2.x to OpenEXR 3.x + Imath 3.x will require source code or build changes of -downstream software. - -In each case, we will often explain both how to change if you are expecting -3.x only hereafter, or usually a more complex accommodation if you want to -keep compatibility with both 2.x and 3.x. - -## OpenEXR and Imath Are Different Packages - -If your use of OpenEXR was only for the sake of using the math classes and -utilities, maybe you were unhappy that you needed to download and build the -full OpenEXR dependency. You are in luck -- now Imath is a separate, very -lightweight open source package. You can use Imath functionality without -needing any of OpenEXR, which as of 3.x only includes the parts you need to -read and write OpenEXR image files. - -The parts of "IlmBase" that were `Imath` and `half` are now repackaged -as the `Imath` library. The `IlmThread` and `Iex` libraries have been -folded into the OpenEXR package, since they were were not necessary to -the rest of Imath. - -When building OpenEXR 3.x, note that if Imath 3.x library is not found -already installed at build time, it will be automatically downloaded and -built as part of the OpenEXR build. - -## Background - -Why is this happening? Here is the relevant history. - -The OpenEXR project has historically consisted of four separate subprojects: - -* OpenEXR - the Imf image format -* IlmBase - supporting utilities (Imath, Half, Iex, IlmThread) -* PyIlmBase - python bindings for the IlmBase libraries -* OpenEXR_Viewers - code for an example EXR image viewer - -Prior to the 2.4 release in 2019, OpenEXR relied primarily on the Gnu -autotools build system and was released as four separate tarballs -(ilmbase, pyilmbase, openexr, openexr_viewers) that were constructed -via the Gnu tools. This gave direct access to the "IlmBase" libraries -independent of the OpenEXR format library. The project also included -CMake files but CMake support was incomplete. - -With the adoption of OpenEXR by the Academy Software Foundation in -2019, the technical steering committee made several key changes: - -1. Drop support for autotools in favor of CMake. A significant portion - of the OpenEXR user base uses Windows, which the Gnu autotools does - not support. Supporting two build systems is a maintenance burden - that the TSC opted to avoid. We now assume that all modern users of - OpenEXR can reasonably be expected to rely on CMake. - -2. Rely on GitHub's automatic release packaging mechanism. This - packages the entire contents of package in a single - tarball. Separate tarballs are no longer generated by the Gnu - autotools setup. - -3. Deprecate the OpenEXR_Viewers code. It was impossibly out of date - and of little modern value. - -Thus, with the 2.4 release, the "IlmBase" libraries are no longer -distributed in a form that is readily separable from the rest of -OpenEXR. The build and installation process for the overall OpenEXR -project is complicated by the fact it consists of four separate -projects, which added signifcant complexity to the CMake setup. - -Because Imath is generally useful to the community, the TSC decided to -simplify the configuration by separating Imath into its own independent -project, maintained and released independently of OpenEXR, and -introducing it as a new external dependency of OpenEXR. - -To further simplify matters, the new Imath library includes the half -data type directly, rather than maintaining it in a separate -library. Also, the community at large has a strong desire for simple -vector/matrix utilities that are unencumbered by Iex, the IlmBase -library that provides higher-level exception classes, and even -further, a clear delineation between functionality that (1) relies on -exception handlings and (2) is free from exceptions. As a result, -support for Iex has been removed from Imath, and the Iex library is -now packaged as a component of OpenEXR. - -The Imath python bindings are a part of Imath as a configuration -option, although support is off by default to simplify the build process -for most users. - -## New Library Names and Repository Structures - -The new repositories place all source code under the `src` top-level -subdirectory. - -### Imath: - - src - ├── Imath - ├── ImathTest - └── python - ├── config - ├── PyImath - ├── PyImathNumpy - ├── PyImathTest - ├── PyImathNumpyTest - └── PyImathSpeedTest - - -### OpenEXR: - -The 'IlmImf' library has been renamed 'OpenEXR'. No header files have -changed names, only their locations in the repo have changes. - - src - ├── bin - │ ├── exr2aces - │ ├── exrbuild - │ ├── exrcheck - │ ├── exrenvmap - │ ├── exrheader - │ ├── exrmakepreview - │ ├── exrmaketiled - │ ├── exrmultipart - │ ├── exrmultiview - │ └── exrstdattr - ├── lib - │ ├── Iex - │ ├── IexMath - │ ├── IlmThread - │ ├── OpenEXR - │ └── OpenEXRUtil - ├── examples - └── test - ├── IexTest - ├── OpenEXRTest - ├── OpenEXRUtilTest - └── OpenEXRFuzzTest - - -## Finding and Using OpenEXR and Imath CMake Configs - -### OpenEXR/Imath 3.x only - -If you are *only* concerned with OpenEXR/Imath 3.x going forward, this is -the recommended way to find the libraries in a downstream project that uses -the CMake build system: - - find_package(Imath CONFIG) - find_package(OpenEXR CONFIG) - -Note that the second line may be omitted if you only need the Imath -portions. - -And then your project can reference the imported targets like this: - - target_link_libraries (my_target - PRIVATE - OpenEXR::OpenEXR - Imath::Imath - Imath::Half - ) - -You only need the parts you use, so for example, if you only need Half and -Imath, you can omit the OpenEXR target. Also note that in our example above, -we have used the `PRIVATE` label, but you should specify them as `PUBLIC` if -you are exposing those classes in your own package's public interface. - - -### Accommodating OpenEXR/Imath 3.x or OpenEXR 2.x - -On the other hand, to accommodate both 2.x and 3.x, it's admittedly -inconvenient because the packages and the import targets have changed their -names. We have found the following idioms to work: - -Finding either/both packages: - - # First, try to find just the right config files - find_package(Imath CONFIG) - if (NOT TARGET Imath::Imath) - # Couldn't find Imath::Imath, maybe it's older and has IlmBase? - find_package(IlmBase CONFIG) - endif () - find_package(OpenEXR CONFIG) - -To link against them, we use CMake generator expressions so that we can -reference *both* sets of targets, but it will only use the ones -corresponding to the package version that was found. - - target_link_libraries (my_target - PRIVATE - # For OpenEXR/Imath 3.x: - $<$:OpenEXR::OpenEXR> - $<$:Imath::Imath> - $<$:Imath::Half> - # For OpenEXR 2.4/2.5: - $<$:OpenEXR::IlmImf> - $<$:IlmBase::Imath> - $<$:IlmBase::Half> - $<$:IlmBase::IlmThread> - $<$:IlmBase::Iex> - ) - -Again, you can eliminate the references to any of the individual libaries -that you don't actually need for your application. - -### Simultaneous Static/Shared Build - -The OpenEXR 2.x CMake configuration had options to simultaneously -build both shared and statically linked libraries. This has been -deprecated. A CMake configuration setting specifies whether to build -static or shared, but if you want both, you will need to run cmake and -build twice. - -### Simultaneous Python 2/3 Build - -The PyIlmBase 2.x CMake configuration had options to simultaneously -build both python2 and python3 bindings. This has been deprecated. -A CMake configuration setting specifies whether to build for -python 2 or python 3, but if you want both, you will need to run -cmake and build twice. - -## Imath Include Files Are in a Different Subdirectory - -Imath 3.0 will copy its headers to some `include/Imath` subdirectory -instead of the old `include/OpenEXR`. - -### OpenEXR/Imath 3.x only - -If you know that you are only using Imath 3.x, then just change any -include directions, like this: - - #include - #include - -to the new locations: - - #include - #include - -### Accommodating OpenEXR/Imath 3.x or OpenEXR 2.x - -If you want your software to be able to build against either OpenEXR 2.x or -3.x (depending on which dependency is available at build time), we recommend -using a more complicated idiom: - - // The version can reliably be found in this header file from OpenEXR, - // for both 2.x and 3.x: - #include - #define COMBINED_OPENEXR_VERSION ((10000*OPENEXR_VERSION_MAJOR) + \ - (100*OPENEXR_VERSION_MINOR) + \ - OPENEXR_VERSION_PATCH) - - // There's just no easy way to have an `#include` that works in both - // cases, so we use the version to switch which set of include files we - // use. - #if COMBINED_OPENEXR_VERSION >= 20599 /* 2.5.99: pre-3.0 */ - # include - # include - #else - // OpenEXR 2.x, use the old locations - # include - # include - #endif - -## Include Files Include Fewer Other Headers - -Extraneous ``#include`` statements have been removed from some header -files, which can lead to compile failures in application code that -previously included certain headers indirectly. - -For example, the Imath header files no longer include ``float.h``, so -application code that references symbols such as ``FLT_MAX`` may need -to add an explicit ``#include `` or equivalent. - -If your application code reports compile errors due to undefined or -incompletely-defined Imath or OpenEXR data types, locate the Imath or -OpenEXR header file that defines the type and include it explicitly. - -## Symbols Are Hidden by Default - -To reduce library size and make linkage behavior similar across -platforms, Imath and OpenEXR now build with directives that make -symbol visibility hidden by default, with specific externally-visible -symbols explicitly marked for export. See the [Symbol -Visibility](https://github.com/AcademySoftwareFoundation/openexr/blob/main/docs/SymbolVisibility.md) -doc and the appropriate ``*Export.h`` header file for more details. - -## Imath Now Uses Standard C++ Exceptions and `noexcept` - -In OpenEXR 2.x, the Imath functions that threw exceptions used to throw -various Iex varieties. - -In Imath 3.x, these functions just throw `std::exception` varieties that -correspond to the failure (e.g., `std::invalid_argument`, -`std::domain_error`, etc.). For that reason, all of the Iex exceptions are -now only part of the OpenEXR library (where they are still used in the same -manner they were for OpenEXR 2.x). - -Imath 3.x has very few functions that throw exceptions. Each is clearly -marked as such, and each has a version that does not throw exceptions (so -that it may be used from code where exceptions are avoided). The functions -that do not throw exceptions are now marked `noexcept`. - -## Some Headers and Classes Have Been Removed from Imath 3.x - -* The `Math` class (and `ImathMath.h` header file) are - deprecated. All of the `Math` functionality is subsumed by C++11 - `std::` math functions. For example, calls to - `Imath::Math::abs(x)` should be replaced with `std::abs(x)`. - -* The `Limits` class (and the `ImathLimits.h` and - `ImathHalfLimits.h` headers) have been removed entirely. All uses of - `Limits<>` should be replaced with the appropriate - `std::numeric_limits<>` method call. The Imath-specific versions - predated C++11, and were not only redundant in a C++11 world, but - also potentially confusing because some of their functions behaved - quite differently than the `std::numeric_limits` method with the - same name. We are following the precept that if C++11 does something - in a standard way, we should not define our own equivalent function - (and especially not define it in a way that doesn't match the - standard behavior). - -* `Vec::normalize()` and `length()` methods, for integer `T` types, - have been removed. Also the standalone `project()` and - `orthogonal()` functions are no longer defined for vectors made of - integer elements. These all had behavior that was hard to understand - and probably useless. They still work as expected for vectors of - floating-point types. - -* The ``Int64`` and ``SInt64`` types are deprecated in favor of the - now-standard ``int64_t`` and ``uint64_t``. - -## File/Class-specific changes: - -### `half` in half.h - -* The half type is now in the `Imath` namespace, but a compile-time - option puts it in the global namespace, except when compiling for - CUDA, in which case the 'half' type refers to the CUDA type: - - #ifndef __CUDACC__ - using half = IMATH_INTERNAL_NAMESPACE::half; - #else - #include - #endif - - If you desire to use Imath::half inside a CUDA kernal, you can refer - to it via the namespace, or define `CUDA_NO_HALF` to avoid the CUDA - type altogether. - -* `HALF_MIN` has changed value. It is now the smallest **normalized** - positive value, returned by `std::numeric_limits::min()`. - -* New constructor from a bit pattern: - - enum FromBitsTag - { - FromBits - }; - - constexpr half(FromBitsTag, unsigned short bits) noexcept; - -### `Imath::Box` in ImathBox.h - -* `baseTypeMin()` is replaced with `baseTypeLowest()` - -### `Color3`, `Color4` in ImathColor.h - -* `baseTypeMin()` is replaced with `baseTypeLowest()` - -### `Imath::Frustum` in ImathFrustum.h - -Akin to the `Vec` classes, there are now seperate API calls for -throwing and non-throwing functions: - -These functions previously threw exceptions but now do not throw and -are marked `noexcept`: - -* `Frustum::projectionMatrix() noexcept` - -* `Frustum::aspect() noexcept` - -* `Frustum::set() noexcept` - -* `Frustum::projectPointToScreen() noexcept` - -* `Frustum::ZToDepth() noexcept` - -* `Frustum::DepthToZ() noexcept` - -* `Frustum::screenRadius() noexcept` - -* `Frustum::localToScreen() noexcept` - -These functions throw `std::domain_error` exceptions when the -associated frustum is degenerate: - -* `Frustum::projectionMatrixExc()` - -* `Frustum::aspectExc()` - -* `Frustum::setExc()` - -* `Frustum::projectPointToScreenExc()` - -* `Frustum::ZToDepthExc()` - -* `Frustum::DepthToZExc()` - -* `Frustum::screenRadiusExc()` - -* `Frustum::localToScreenExc()` - -### `Imath::Interval` in ImathInterval.h - -New methods/functions: - -* `Interval::operator !=` - -* `Interval::makeInfinite()` - -* `IntervalisInfinite()` - -* `operator<< (std::ostream& s, const Interval&)` - -### ImathMatrixAlgo.h - -* `checkForZeroScaleInRow()` and `extractAndRemoveScalingAndShear()` - throw `std::domain_error` exceptions instead of `Iex::ZeroScale` - -### `Matrix22`, `Matrix33`, `Matrix44` in ImathMatrix.h - -* `baseTypeMin()` is replaced with `baseTypeLowest()` - -* `invert(bool singExc = false)` is replace by: - - - `invert() noexcept` - - - `invert(bool)` which optionally throws an `std::invalid_argument` - exception. - -* `inverse(bool singExc = false)` is replace by: - - - `inverse() noexcept` - - - `inverse(bool)` which optionally throws an `std::invalid_argument` - exception. - -* `gjInvert(bool singExc = false)` is replace by: - - - `gjInvert()` noexcept - - - `gjInvert(bool)` which optionally throws an - `std::invalid_argument` exception. - -* `gJinverse(bool singExc = false)` is replace by: - - - `gjInverse()` noexcept - - - `gjInverse(bool)` which optionally throws an - `std::invalid_argument` exception. - -New functions: - -* `operator<< (std::ostream& s, const Matrix22&)` - -* `operator<< (std::ostream& s, const Matrix33&)` - -* `operator<< (std::ostream& s, const Matrix44&)` - -Other changes: - -* Initialization loops unrolled for efficiency - -* inline added where appropriate - -### ImathRoots.h - -* When compiling for CUDA, the `complex` type comes from `thrust` - rather than `std` - -### `Shear6` in ImathShear.h - -* `baseTypeMin()` is replaced with `baseTypeLowest()` - -### ImathVecAlgo.h - -The following functions are no longer defined for integer-based -vectors, because such behavior is not clearly defined: - -* `project (const Vec& s, const Vec& t)` - -* `orgthogonal (const Vec& s, const Vec& t)` - -* `reflect (const Vec& s, const Vec& t)` - -### `Vec2`, `Vec3`, `Vec4` in ImathVec.h - -* `baseTypeMin()` is replaced with `baseTypeLowest()` - -* The following methods are removed (via `= delete`) for integer-based - vectors because the behavior is not clearly defined and thus prone - to confusion: - - - `length()` - although the length is indeed defined, its proper value - is floating point and can thus not be represented by the 'T' - return type. - - - `normalize()` - - - `normalizeExc()` - - - `normalizeNonNull()` - - - `normalized()` - - - `normalizedExc()` - - - `normalizedNonNull()` - -* Interoperability Constructors: The Vec and Matrix classes now have - constructors that take as an argument any data object of similar - size and layout. - -## Python Changes: - -In general, the changes at the C++ level are reflected in the python -bindings. In particular: - -* The following methods are removed for integer-based - vector and matrix objects and arrays: - - - `length()` - - `normalize()` - - `normalizeExc()` - - `normalizeNonNull()` - - `normalized()` - - `normalizedExc()` - - `normalizedNonNull()` - -* `baseTypeMin()` is replaced with `baseTypeLowest()` for: - - - `Vec2`, `Vec3`, `Vec4` - - `Color3`, `Color4` - - `Matrix22`, `Matrix33`, `Matrix44` - - `Box` - - `Shear6` - From 8c5a12a751e9a507720f61d4e7af8d2dbdde3075 Mon Sep 17 00:00:00 2001 From: Jean-Marie Aubry Date: Fri, 13 Oct 2023 08:12:30 +1300 Subject: [PATCH 08/20] Changed implementation of succ and pred to use std::nextafter. (#353) Signed-off-by: Jean-Marie Aubry --- src/Imath/ImathFun.cpp | 153 ++++------------------------------------- 1 file changed, 13 insertions(+), 140 deletions(-) diff --git a/src/Imath/ImathFun.cpp b/src/Imath/ImathFun.cpp index 74799366..bfec292d 100644 --- a/src/Imath/ImathFun.cpp +++ b/src/Imath/ImathFun.cpp @@ -4,159 +4,32 @@ // #include "ImathFun.h" +#include IMATH_INTERNAL_NAMESPACE_SOURCE_ENTER -float -succf (float f) IMATH_NOEXCEPT +float succf(float f) IMATH_NOEXCEPT { - union - { - float f; - uint32_t i; - } u; - u.f = f; - - if (isinf(f) || isnan (f)) - { - // Nan or infinity; don't change value. - } - else if (u.i == 0x00000000 || u.i == 0x80000000) - { - // Plus or minus zero. - - u.i = 0x00000001; - } - else if (u.f > 0) - { - // Positive float, normalized or denormalized. - // Incrementing the largest positive float - // produces +infinity. - - ++u.i; - } - else - { - // Negative normalized or denormalized float. - - --u.i; - } - - return u.f; + return isfinite(f) ? + std::nextafter(f, std::numeric_limits::infinity()) : f; } -float -predf (float f) IMATH_NOEXCEPT +float predf(float f) IMATH_NOEXCEPT { - union - { - float f; - uint32_t i; - } u; - u.f = f; - - if (isinf(f) || isnan (f)) - { - // Nan or infinity; don't change value. - } - else if (u.i == 0x00000000 || u.i == 0x80000000) - { - // Plus or minus zero. - - u.i = 0x80000001; - } - else if (u.f > 0) - { - // Positive float, normalized or denormalized. - - --u.i; - } - else - { - // Negative normalized or denormalized float. - // Decrementing the largest negative float - // produces -infinity. - - ++u.i; - } - - return u.f; + return isfinite(f) ? + std::nextafter(f, -std::numeric_limits::infinity()) : f; } -double -succd (double d) IMATH_NOEXCEPT +double succd(double d) IMATH_NOEXCEPT { - union - { - double d; - uint64_t i; - } u; - u.d = d; - - if (isinf(d) || isnan (d)) - { - // Nan or infinity; don't change value. - } - else if (u.i == 0x0000000000000000LL || u.i == 0x8000000000000000LL) - { - // Plus or minus zero. - - u.i = 0x0000000000000001LL; - } - else if (u.d > 0) - { - // Positive double, normalized or denormalized. - // Incrementing the largest positive double - // produces +infinity. - - ++u.i; - } - else - { - // Negative normalized or denormalized double. - - --u.i; - } - - return u.d; + return isfinite(d) ? + std::nextafter(d, std::numeric_limits::infinity()) : d; } -double -predd (double d) IMATH_NOEXCEPT +double predd(double d) IMATH_NOEXCEPT { - union - { - double d; - uint64_t i; - } u; - u.d = d; - - if ((u.i & 0x7ff0000000000000LL) == 0x7ff0000000000000LL) - { - // Nan or infinity; don't change value. - } - else if (u.i == 0x0000000000000000LL || u.i == 0x8000000000000000LL) - { - // Plus or minus zero. - - u.i = 0x8000000000000001LL; - } - else if (u.d > 0) - { - // Positive double, normalized or denormalized. - - --u.i; - } - else - { - // Negative normalized or denormalized double. - // Decrementing the largest negative double - // produces -infinity. - - ++u.i; - } - - return u.d; + return isfinite(d) ? + std::nextafter(d, -std::numeric_limits::infinity()) : d; } IMATH_INTERNAL_NAMESPACE_SOURCE_EXIT From b6ad9b07a7511cc425d44391ab9fe3b6b415d29d Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Thu, 12 Oct 2023 16:06:10 -0400 Subject: [PATCH 09/20] Fix check for the availability of std::bit_cast (#350) See #346: Checking for the language version is not going to help for incomplete libraries such as on Apple or Android. This fixes this by using the bit_cast-specific macro. Signed-off-by: Cary Phillips --- src/ImathTest/testFun.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/ImathTest/testFun.cpp b/src/ImathTest/testFun.cpp index 483b6ac3..758ead2d 100644 --- a/src/ImathTest/testFun.cpp +++ b/src/ImathTest/testFun.cpp @@ -8,7 +8,7 @@ #endif #include -#if __cplusplus >= 202002L +#if defined(__cpp_lib_bit_cast) && __cpp_lib_bit_cast >= 201806L # include #endif #include @@ -20,20 +20,20 @@ using namespace std; -#if __cplusplus < 202002L - template - static inline To - bit_cast (From from) +#if !defined(__cpp_lib_bit_cast) || __cpp_lib_bit_cast < 201806L +template +static inline To +bit_cast (From from) +{ + static_assert (sizeof (From) == sizeof (To), "Type sizes do not match"); + union { - static_assert (sizeof (From) == sizeof (To), "Type sizes do not match"); - union - { - From f; - To t; - } u; - u.f = from; - return u.t; - } + From f; + To t; + } u; + u.f = from; + return u.t; +} #endif void From 422c56e5bb7c4ccfe8b097890e884027b45fa0c0 Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Thu, 12 Oct 2023 16:06:30 -0400 Subject: [PATCH 10/20] IMATH_INSTALL_PKG_CONFIG is on by default, even on Windows (#349) Similar to https://github.com/AcademySoftwareFoundation/openexr/pull/1541, there seems to be no downside to generating the Imath.pc file even on windows, so for consistency, apply the same default to all platforms. Signed-off-by: Cary Phillips --- config/CMakeLists.txt | 3 ++- config/ImathSetup.cmake | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/CMakeLists.txt b/config/CMakeLists.txt index 32fb7af8..4a413801 100644 --- a/config/CMakeLists.txt +++ b/config/CMakeLists.txt @@ -58,8 +58,9 @@ if(IMATH_INSTALL_PKG_CONFIG) ) endfunction() imath_pkg_config_help(Imath.pc.in) + message(STATUS "Imath pkg-config generation enabled") else() - message(STATUS "pkg-config generation disabled") + message(STATUS "Imath pkg-config generation disabled") endif() # diff --git a/config/ImathSetup.cmake b/config/ImathSetup.cmake index 6cd37ce2..50a774a1 100644 --- a/config/ImathSetup.cmake +++ b/config/ImathSetup.cmake @@ -38,12 +38,11 @@ set(IMATH_PACKAGE_NAME "Imath ${IMATH_VERSION}${IMATH_VERSION_RELEASE_TYPE}" CAC # Whether to generate and install a pkg-config file Imath.pc on if(WIN32) - option(IMATH_INSTALL_PKG_CONFIG "Install Imath.pc file" OFF) option(IMATH_INSTALL_SYM_LINK "Create symbolic links for shared objects" OFF) else() - option(IMATH_INSTALL_PKG_CONFIG "Install Imath.pc file" ON) option(IMATH_INSTALL_SYM_LINK "Create symbolic links for shared objects" ON) endif() +option(IMATH_INSTALL_PKG_CONFIG "Install Imath.pc file" ON) # # Build related options From e26b54c7e61d637313e6156982261dfc8d1887b9 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sat, 16 Dec 2023 08:30:27 +0100 Subject: [PATCH 11/20] Fix half to float giving wrong results on older x86_64 CPUs on Windows (#358) The lzcnt instruction is not supported on some older x86_64 CPUs. On these CPUs it will silently execute a bsr instruction instead, leading to wrong results. Instead use the bsr instruction and one additional subtraction, which should have a negligible impact on performance. Additionally, this likely improves performance on ARM. Thanks to Ray Molenkamp for tracking down this bug. Signed-off-by: Brecht Van Lommel --- src/Imath/half.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Imath/half.h b/src/Imath/half.h index 92b47013..203251ad 100644 --- a/src/Imath/half.h +++ b/src/Imath/half.h @@ -327,8 +327,14 @@ imath_half_to_float (imath_half_bits_t h) // other compilers may provide count-leading-zeros primitives, // but we need the community to inform us of the variants uint32_t lc; -# if defined(_MSC_VER) && (_M_IX86 || _M_X64) - lc = __lzcnt (hexpmant); +# if defined(_MSC_VER) + // The direct intrinsic for this is __lznct, but that is not supported + // on older x86_64 hardware or ARM. Instead uses the bsr instruction + // and one additional subtraction. This assumes hexpmant != 0, for 0 + // bsr and lznct would behave differently. + unsigned long bsr; + _BitScanReverse (&bsr, hexpmant); + lc = (31 - bsr); # elif defined(__GNUC__) || defined(__clang__) lc = (uint32_t) __builtin_clz (hexpmant); # else From d0f675e8e9724919cacfe13de3f4d8438c62badd Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Sun, 21 Jan 2024 16:54:56 -0800 Subject: [PATCH 12/20] Require sphinx 5.0 (#362) Apparently now required by other dependencies Signed-off-by: Cary Phillips --- website/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/requirements.txt b/website/requirements.txt index 8bf5179d..4d2fe8c1 100644 --- a/website/requirements.txt +++ b/website/requirements.txt @@ -1,6 +1,6 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright (c) Contributors to the OpenEXR Project. -sphinx == 4.4.0 +sphinx >= 5.0 breathe sphinx-press-theme From 547e69c71cf523ffd34dd9fc747da6ecd896ff0c Mon Sep 17 00:00:00 2001 From: josch Date: Mon, 22 Jan 2024 00:55:39 +0000 Subject: [PATCH 13/20] src/python/config/ModuleDefine.cmake: do not install a cmake file exporting targets for dependent projects (#361) Thanks: Jochen Sprickerhof Closes: #360 Signed-off-by: Johannes Schauer Marin Rodrigues --- src/python/config/ModuleDefine.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/src/python/config/ModuleDefine.cmake b/src/python/config/ModuleDefine.cmake index 7e30614d..b51c6c10 100644 --- a/src/python/config/ModuleDefine.cmake +++ b/src/python/config/ModuleDefine.cmake @@ -52,7 +52,6 @@ function(PYIMATH_ADD_LIBRARY_PRIV libname) add_library(${PROJECT_NAME}::${libname} ALIAS ${libname}) install(TARGETS ${libname} - EXPORT ${PROJECT_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} From 1c4aae1ddb61b601bdba9e9d8a076af5170a068a Mon Sep 17 00:00:00 2001 From: Yuya Asano <64895419+sukeya@users.noreply.github.com> Date: Mon, 22 Jan 2024 09:56:28 +0900 Subject: [PATCH 14/20] rm unnecessary IMATH_HOSTDEVICE attributes. (#344) Signed-off-by: Yuya Asano <64895419+sukeya@users.noreply.github.com> --- src/Imath/ImathMatrix.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Imath/ImathMatrix.h b/src/Imath/ImathMatrix.h index 63e1447e..8033b84b 100644 --- a/src/Imath/ImathMatrix.h +++ b/src/Imath/ImathMatrix.h @@ -4782,7 +4782,7 @@ operator*= (Vec3& v, const Matrix44& m) IMATH_NOEXCEPT template IMATH_HOSTDEVICE inline Vec3 -IMATH_HOSTDEVICE operator* (const Vec3& v, const Matrix44& m) IMATH_NOEXCEPT +operator* (const Vec3& v, const Matrix44& m) IMATH_NOEXCEPT { S x = S (v.x * m.x[0][0] + v.y * m.x[1][0] + v.z * m.x[2][0] + m.x[3][0]); S y = S (v.x * m.x[0][1] + v.y * m.x[1][1] + v.z * m.x[2][1] + m.x[3][1]); @@ -4794,7 +4794,7 @@ IMATH_HOSTDEVICE operator* (const Vec3& v, const Matrix44& m) IMATH_NOEXCE template IMATH_HOSTDEVICE inline const Vec4& -IMATH_HOSTDEVICE operator*= (Vec4& v, const Matrix44& m) IMATH_NOEXCEPT +operator*= (Vec4& v, const Matrix44& m) IMATH_NOEXCEPT { S x = S (v.x * m.x[0][0] + v.y * m.x[1][0] + v.z * m.x[2][0] + v.w * m.x[3][0]); S y = S (v.x * m.x[0][1] + v.y * m.x[1][1] + v.z * m.x[2][1] + v.w * m.x[3][1]); @@ -4811,7 +4811,7 @@ IMATH_HOSTDEVICE operator*= (Vec4& v, const Matrix44& m) IMATH_NOEXCEPT template IMATH_HOSTDEVICE inline Vec4 -IMATH_HOSTDEVICE operator* (const Vec4& v, const Matrix44& m) IMATH_NOEXCEPT +operator* (const Vec4& v, const Matrix44& m) IMATH_NOEXCEPT { S x = S (v.x * m.x[0][0] + v.y * m.x[1][0] + v.z * m.x[2][0] + v.w * m.x[3][0]); S y = S (v.x * m.x[0][1] + v.y * m.x[1][1] + v.z * m.x[2][1] + v.w * m.x[3][1]); From 80775e017b7637b3ed034d62d0ccc639f23d1273 Mon Sep 17 00:00:00 2001 From: Yuya Asano <64895419+sukeya@users.noreply.github.com> Date: Mon, 22 Jan 2024 09:59:01 +0900 Subject: [PATCH 15/20] Export Imath from the build tree and so on. (#347) make each file path of ImathConfig.cmake.in and ImathConfigVersion.cmake exact. Signed-off-by: Yuya Asano <64895419+sukeya@users.noreply.github.com> --- config/CMakeLists.txt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/config/CMakeLists.txt b/config/CMakeLists.txt index 4a413801..f6a70280 100644 --- a/config/CMakeLists.txt +++ b/config/CMakeLists.txt @@ -70,12 +70,12 @@ endif() include(CMakePackageConfigHelpers) -configure_package_config_file(ImathConfig.cmake.in +configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/ImathConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} ) -write_basic_package_version_file("${PROJECT_NAME}ConfigVersion.cmake" +write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" VERSION ${IMATH_VERSION} COMPATIBILITY SameMajorVersion ) @@ -91,3 +91,8 @@ install(EXPORT ${PROJECT_NAME} NAMESPACE ${PROJECT_NAME}:: EXPORT_LINK_INTERFACE_LIBRARIES ) + +export(EXPORT ${PROJECT_NAME} + FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake" + NAMESPACE ${PROJECT_NAME}:: +) From 83d7fce94ccff8b494a602622b0292110cff5d59 Mon Sep 17 00:00:00 2001 From: Zachary Klein Date: Wed, 5 Jul 2023 17:24:58 -0400 Subject: [PATCH 16/20] Fixed redundant PYIMATH_EXPORTS causing compile issues on Windows Clang (#331) Signed-off-by: Zachary Klein --- src/python/PyImath/PyImathStringTable.cpp | 4 ++-- src/python/PyImath/PyImathUtil.h | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/python/PyImath/PyImathStringTable.cpp b/src/python/PyImath/PyImathStringTable.cpp index af385bcc..344fa958 100644 --- a/src/python/PyImath/PyImathStringTable.cpp +++ b/src/python/PyImath/PyImathStringTable.cpp @@ -89,8 +89,8 @@ StringTableT::hasStringIndex(const StringTableIndex &s) const } namespace { -template class PYIMATH_EXPORT StringTableDetailT; -template class PYIMATH_EXPORT StringTableDetailT; +template class StringTableDetailT; +template class StringTableDetailT; } template class PYIMATH_EXPORT StringTableT; diff --git a/src/python/PyImath/PyImathUtil.h b/src/python/PyImath/PyImathUtil.h index 52a1fbdf..4b3351f8 100644 --- a/src/python/PyImath/PyImathUtil.h +++ b/src/python/PyImath/PyImathUtil.h @@ -40,10 +40,10 @@ class PyAcquireLock PYIMATH_EXPORT PyAcquireLock(); PYIMATH_EXPORT ~PyAcquireLock(); - PYIMATH_EXPORT PyAcquireLock(const PyAcquireLock& other) = delete; - PYIMATH_EXPORT PyAcquireLock & operator = (PyAcquireLock& other) = delete; - PYIMATH_EXPORT PyAcquireLock(PyAcquireLock&& other) = delete; - PYIMATH_EXPORT PyAcquireLock & operator = (PyAcquireLock&& other) = delete; + PyAcquireLock(const PyAcquireLock& other) = delete; + PyAcquireLock & operator = (PyAcquireLock& other) = delete; + PyAcquireLock(PyAcquireLock&& other) = delete; + PyAcquireLock & operator = (PyAcquireLock&& other) = delete; private: PyGILState_STATE _gstate; @@ -64,10 +64,10 @@ class PyReleaseLock public: PYIMATH_EXPORT PyReleaseLock(); PYIMATH_EXPORT ~PyReleaseLock(); - PYIMATH_EXPORT PyReleaseLock(const PyReleaseLock& other) = delete; - PYIMATH_EXPORT PyReleaseLock & operator = (PyReleaseLock& other) = delete; - PYIMATH_EXPORT PyReleaseLock(PyReleaseLock&& other) = delete; - PYIMATH_EXPORT PyReleaseLock & operator = (PyReleaseLock&& other) = delete; + PyReleaseLock(const PyReleaseLock& other) = delete; + PyReleaseLock & operator = (PyReleaseLock& other) = delete; + PyReleaseLock(PyReleaseLock&& other) = delete; + PyReleaseLock & operator = (PyReleaseLock&& other) = delete; private: PyThreadState *_save; From bbafde9abe019b927516f65147815a3b089ae6de Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Tue, 23 Jan 2024 11:14:47 -0800 Subject: [PATCH 17/20] Update version for v3.1.10 Signed-off-by: Cary Phillips --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fe6dd10a..11c12707 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,7 +14,7 @@ endif() # Imath version -project(Imath VERSION 3.1.9 LANGUAGES C CXX) +project(Imath VERSION 3.1.10 LANGUAGES C CXX) set(IMATH_VERSION_RELEASE_TYPE "" CACHE STRING "Extra version tag string for Imath build, such as -dev, -beta1, etc.") From 298f9bfd50906e4af945c9221ea0dc7e2a00397f Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Tue, 23 Jan 2024 12:12:17 -0800 Subject: [PATCH 18/20] Release notes for v3.1.10 Signed-off-by: Cary Phillips --- CHANGES.md | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 91d1803a..e0d9d695 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,7 @@ # Imath Release Notes +* [Version 3.1.10](#version-3110-January-25-2024) January 25, 2024 * [Version 3.1.9](#version-319-May-31-2023) May 31, 2023 * [Version 3.1.8](#version-318-May-22-2023) May 22, 2023 * [Version 3.1.7](#version-317-March-1-2023) March 1, 2023 @@ -21,6 +22,108 @@ * [Version 3.0.0-beta](#version-300-beta-march-15-2021) March 15, 2021 * [Inherited History from OpenEXR](#inherited-history-from-openexr) +## Version 3.1.10 (January 25, 2024) + +Patch release with various build/bug fixes. + +Build fixes: + + - Fix a problem where downstream projects using Imath would build + python bindings even if they weren't requested. + + - Fix for missing `std::bit_cast` + + - Fix missing/necessary use of IMATH_HOSTDEVICE + + - IMATH_INSTALL_PKG_CONFIG is now on by default, even on Windows + + - Fix calling default constructor by uniform init in TypeTraits + + - Fix redundant PYIMATH_EXPORTS causing compile issues on Windows Clang + + - Update to SO versioning policy: + + This change adopts a policy of appending the ``MAJOR.MINOR.PATCH`` + software release name to the ``SONAME`` to form the real name of the + shared library. + + See [website/install.rst](website/install.rst) and [PR + #339](https://github.com/AcademySoftwareFoundation/openexr/pull/339) + for more details. + +Bug fixes: + + - Fix half to float giving wrong results on older x86_64 CPUs on Windows + +Tests: + + - Expand epsilon bounds for m44x pyImath test. + +Other: + + - succ()/pred() now use std::nextafter(). + + - Rename "docs" to "website". + + - Add missing copyright/license identifiers. + +### Merged Pull Requests + +* \[[#363](https://github.com/AcademySoftwareFoundation/Imath/pull/363)\] +Update install instructions to reflect new SO versioning policy + +* \[[#362](https://github.com/AcademySoftwareFoundation/Imath/pull/362)\] +Require sphinx 5.0 + +* \[[#361](https://github.com/AcademySoftwareFoundation/Imath/pull/361)\] +src/python/config/ModuleDefine.cmake: do not install a cmake file exporting targets for dependent projects + +* \[[#358](https://github.com/AcademySoftwareFoundation/Imath/pull/358)\] +Fix half to float giving wrong results on older x86_64 CPUs on Windows + +* \[[#353](https://github.com/AcademySoftwareFoundation/Imath/pull/353)\] +Changed implementation of succ and pred to use std::nextafter. + +* \[[#350](https://github.com/AcademySoftwareFoundation/Imath/pull/350)\] +Fix check for the availability of std::bit_cast + +* \[[#349](https://github.com/AcademySoftwareFoundation/Imath/pull/349)\] +IMATH_INSTALL_PKG_CONFIG is on by default, even on Windows + +* \[[#347](https://github.com/AcademySoftwareFoundation/Imath/pull/347)\] +Export Imath from the build tree and so on. + +* \[[#344](https://github.com/AcademySoftwareFoundation/Imath/pull/344)\] +rm unnecessary IMATH_HOSTDEVICE attributes. + +* \[[#342](https://github.com/AcademySoftwareFoundation/Imath/pull/342)\] +Add missing copyright/license identifiers + +* \[[#341](https://github.com/AcademySoftwareFoundation/Imath/pull/341)\] +Remove unnecessary files + +* \[[#340](https://github.com/AcademySoftwareFoundation/Imath/pull/340)\] +Fix calling default constructor by uniform init. + +* \[[#339](https://github.com/AcademySoftwareFoundation/Imath/pull/339)\] +Update and simply SO versioning policy + +* \[[#338](https://github.com/AcademySoftwareFoundation/Imath/pull/338)\] +Rename "docs" to "website" + +* \[[#333](https://github.com/AcademySoftwareFoundation/Imath/pull/333)\] +Expand epsilon bounds for m44x pyImath test + +* \[[#331](https://github.com/AcademySoftwareFoundation/Imath/pull/331)\] +Fixed redundant PYIMATH_EXPORTS causing compile issues on Windows Clang + +* \[[#326](https://github.com/AcademySoftwareFoundation/Imath/pull/326)\] +Use security@openexr.com for consistency + +* \[[#320](https://github.com/AcademySoftwareFoundation/Imath/pull/320)\] +Add missing IMATH_HOSTDEVICE to Matrix33::invert(bool) + + ## Version 3.1.9 (May 31, 2023) Patch release that fixes an correct .so version number introduced in From 1d363e8f08f54bdc678d546c93e661cf5aceaa69 Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Tue, 23 Jan 2024 20:52:11 -0800 Subject: [PATCH 19/20] update release notes Signed-off-by: Cary Phillips --- CHANGES.md | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index e0d9d695..ec7e2132 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,7 +3,7 @@ # Imath Release Notes -* [Version 3.1.10](#version-3110-January-25-2024) January 25, 2024 +* [Version 3.1.10](#version-3110-January-26-2024) January 26, 2024 * [Version 3.1.9](#version-319-May-31-2023) May 31, 2023 * [Version 3.1.8](#version-318-May-22-2023) May 22, 2023 * [Version 3.1.7](#version-317-March-1-2023) March 1, 2023 @@ -22,7 +22,7 @@ * [Version 3.0.0-beta](#version-300-beta-march-15-2021) March 15, 2021 * [Inherited History from OpenEXR](#inherited-history-from-openexr) -## Version 3.1.10 (January 25, 2024) +## Version 3.1.10 (January 26, 2024) Patch release with various build/bug fixes. @@ -30,17 +30,11 @@ Build fixes: - Fix a problem where downstream projects using Imath would build python bindings even if they weren't requested. - - Fix for missing `std::bit_cast` - - Fix missing/necessary use of IMATH_HOSTDEVICE - - IMATH_INSTALL_PKG_CONFIG is now on by default, even on Windows - - Fix calling default constructor by uniform init in TypeTraits - - Fix redundant PYIMATH_EXPORTS causing compile issues on Windows Clang - - Update to SO versioning policy: This change adopts a policy of appending the ``MAJOR.MINOR.PATCH`` @@ -55,16 +49,11 @@ Bug fixes: - Fix half to float giving wrong results on older x86_64 CPUs on Windows -Tests: - - - Expand epsilon bounds for m44x pyImath test. - -Other: +Other changes: - succ()/pred() now use std::nextafter(). - + - Expand epsilon bounds for m44x pyImath test. - Rename "docs" to "website". - - Add missing copyright/license identifiers. ### Merged Pull Requests From a649b83ffb44abef0601fff6a7826e6d3ae10e19 Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Tue, 23 Jan 2024 20:52:41 -0800 Subject: [PATCH 20/20] Set SO version to 29.9.0 Signed-off-by: Cary Phillips --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 11c12707..823eea0f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,7 +39,7 @@ set(IMATH_VERSION_API "${Imath_VERSION_MAJOR}_${Imath_VERSION_MINOR}") # 3. API changed: CURRENT+1.0.0 # set(IMATH_LIBTOOL_CURRENT 29) -set(IMATH_LIBTOOL_REVISION 8) +set(IMATH_LIBTOOL_REVISION 9) set(IMATH_LIBTOOL_AGE 0) set(IMATH_LIB_VERSION "${IMATH_LIBTOOL_CURRENT}.${IMATH_LIBTOOL_REVISION}.${IMATH_LIBTOOL_AGE}") set(IMATH_LIB_SOVERSION ${IMATH_LIBTOOL_CURRENT})