diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4a00e9814..f097b3f76 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,43 +38,7 @@ jobs: fail-fast: false matrix: include: - - desc: gcc6/C++14 llvm9 py2.7 exr2.4 oiio2.3 sse2 - nametag: linux-vfx2020 - runner: ubuntu-latest - container: aswftesting/ci-osl:2019-clang9 - vfxyear: 2019 - cxx_std: 14 - openexr_ver: v2.4.3 - openimageio_ver: v2.4.13.0 - python_ver: 2.7 - pybind11_ver: v2.4.2 - setenvs: export CMAKE_VERSION=3.15.5 - - desc: clang9/C++14 llvm9 oiio-release avx2 exr2.4 py2.7 - nametag: linux-clang9-llvm9 - runner: ubuntu-20.04 - container: aswftesting/ci-osl:2019-clang9 - vfxyear: 2019 - cc_compiler: clang - cxx_compiler: clang++ - cxx_std: 14 - openexr_ver: v2.4.3 - openimageio_ver: release - python_ver: 2.7 - # pybind11_ver: v2.9.0 - simd: avx - setenvs: export CMAKE_VERSION=3.15.5 - - desc: gcc6/C++14 llvm10 py3.7 exr2.4 oiio2.2 sse4 - nametag: linux-vfx2020 - runner: ubuntu-latest - container: aswftesting/ci-osl:2020 - vfxyear: 2020 - cxx_std: 14 - openimageio_ver: v2.4.13.0 - python_ver: 3.7 - pybind11_ver: v2.5.0 - simd: sse4.2 - setenvs: export CONAN_LLVM_VERSION=10.0.1 - - desc: gcc9/C++17 llvm11 py3.7 exr2.5 oiio2.3 sse2 batch-b4sse2 + - desc: gcc9/C++17 llvm11 py3.7 exr2.5 oiio2.3 sse4 batch-b8avx2 nametag: linux-vfx2021 runner: ubuntu-latest container: aswftesting/ci-osl:2021-clang11 @@ -83,9 +47,9 @@ jobs: openimageio_ver: v2.4.13.0 python_ver: 3.7 pybind11_ver: v2.7.0 - simd: sse2 - batched: b4_SSE2 - - desc: gcc9/C++17 llvm11 py3.7 exr2.5 oiio2.3 avx2 batch-b8avx2 + simd: sse4.2 + batched: b8_AVX2_noFMA + - desc: gcc9/C++17 llvm11 py3.7 exr2.5 oiio2.3 sse2 batch-b4sse2 nametag: linux-vfx2021 runner: ubuntu-latest container: aswftesting/ci-osl:2021-clang11 @@ -94,8 +58,8 @@ jobs: openimageio_ver: v2.4.13.0 python_ver: 3.7 pybind11_ver: v2.7.0 - simd: avx2,f16c - batched: b8_AVX2_noFMA + simd: sse2 + batched: b4_SSE2 - desc: gcc9/C++17 llvm13 py3.9 exr3.1 oiio-rel avx2 nametag: linux-vfx2022 runner: ubuntu-latest @@ -158,6 +122,7 @@ jobs: simd: avx2,f16c batched: b8_AVX2_noFMA setenvs: export OSL_CMAKE_FLAGS="-DSTOP_ON_WARNING=OFF" USE_OPENVDB=0 + OPENCOLORIO_VERSION=v2.3.2 OPENCOLORIO_CXX=g++ - desc: gcc11/C++17 llvm15 py3.10 exr3.1 oiio-rel avx2 nametag: linux-vfx2023 runner: ubuntu-latest @@ -182,15 +147,15 @@ jobs: skip_tests: 1 setenvs: export OSL_CMAKE_FLAGS="-DOSL_USE_OPTIX=1" OPTIX_VERSION=7.0 OPENIMAGEIO_CMAKE_FLAGS=-DBUILD_FMT_VERSION=9.1.0 - - desc: oldest everything gcc6/C++14 llvm9 py2.7 oiio2.3 no-simd exr2.4 + - desc: oldest everything gcc9/C++17 llvm9 py3.7 oiio2.3 no-simd exr2.4 nametag: linux-oldest runner: ubuntu-latest - container: aswftesting/ci-osl:2019-clang9 - vfxyear: 2019 - cxx_std: 14 + container: aswftesting/ci-osl:2021-clang11 + vfxyear: 2021 + cxx_std: 17 openexr_ver: v2.4.3 openimageio_ver: v2.4.13.0 - python_ver: 2.7 + python_ver: 3.7 pybind11_ver: v2.7.0 simd: 0 setenvs: export PUGIXML_VERSION=v1.8 @@ -276,6 +241,8 @@ jobs: USE_BATCHED: ${{matrix.batched}} USE_SIMD: ${{matrix.simd}} ABI_CHECK: ${{matrix.abi_check}} + ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16 + ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true steps: # We would like to use harden-runner, but it flags too many false # positives, every time we download a dependency. We should use it only @@ -353,11 +320,11 @@ jobs: fail-fast: false matrix: include: - - desc: Debug gcc7/C++14 llvm9 py2.7 oiio2.3 exr2.4 sse4 exr2.4 + - desc: Debug gcc7/C++17 llvm9 py3.7 oiio2.3 exr2.4 sse4 exr2.4 nametag: linux-debug-gcc7-llvm9 runner: ubuntu-20.04 - cxx_compiler: g++-7 - cxx_std: 14 + cxx_compiler: g++-9 + cxx_std: 17 openexr_ver: v2.4.3 openimageio_ver: v2.4.13.0 pybind11_ver: v2.6.2 diff --git a/CHANGES.md b/CHANGES.md index a2c2b87e7..3eaa51601 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,42 +6,158 @@ Release 1.14 -- in progress (compared to 1.13) ### New minimum dependencies and compatibility changes: * Note: it is likely that by the time it is released, OSL 1.14 will require - Imath >= 3.1. + Imath >= 3.1, Python >= 3.7, C++ >= 17, gcc >= 9.3. -### OSL Language and oslc compiler (for shader writers): +### OSL Language, standard library, and oslc compiler (for shader writers): + - Fix the subsurface_bssrdf parameters to conform to MaterialX. [#1823](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1823) (by Christopher Kulla) (1.14.1.0) ### ⛰️ API changes and new ShadingSystem features (for renderer writers): +* The big switch to `ustringhash`: To better accommodate GPU execution, and to + make the code and techniques less divergent between CPU and GPU code paths, + we have changed the runtime representation of strings from `ustring` to + `ustringhash` -- which is still a 64 bit token, but rather than the address + of the unique characters, which may change from run to run and harm the + OptiX/CUDA PTX cache performance, it is the deterministic hash of the + characters. Thus, not just the runtime, but all of the interfaces of + RendererServices and other APIs that the renderers use to set up and + communicate with the ShadingSystem, now have been changed to expect + ustringhash instead of ustring. + [#1732](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1732) (by Steena Monteiro) (1.14.0.0) +* Add API for building interpolated getter free functions. + [#1765](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1765) (by Thibault Vergne) (1.14.0.0) +* Switch `shade_image()` to use current OIIO::paropt [#1843](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1843) (1.14.1.1) ### 🚀 SIMD batched shading mode + - *batched*: Codegen bug for compref with varying index [#1776](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1776) (by Alex Wells) (1.14.1.0) ### 🚀 OptiX GPU rendering + - Fix NVPTX TargetMachine leak, etc. [#1763](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1763) (by Tim Grant) (1.14.0.0) + - Fix GPU interpolated param initialization [#1791](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1791) (by Chris Hellmuth) (1.14.1.0) + - Add `lazytrace` ShadingSystem option to avoid combinatoric optixTrace + inlining: when enabled, run layers with trace ops unconditionally at the + start of shader evaluation. This costs some potential performance in cases + where the trace layer would never be evaluated, but removes all the + compilation penalties that the inlining was presenting. + [#1815](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1815) (by Chris Hellmuth) (1.14.1.0) ### 🐛/🔧 Internals: fixes, improvements, and developer concerns + - Mute partio error prints [#1774](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1774) (by olegul) (1.14.1.0) + - calculatenormal needs to use the fliphandedness global [#1783](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1783) (by sfriedmapixar) (1.14.1.0) + - Print closure missing error message at compile time instead of run time. [#1781](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1781) (by sfriedmapixar) (1.14.1.0) + - Make isconnected() work with downstream renderer "connections." [#1782](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1782) (by sfriedmapixar) (1.14.1.0) + - *int*: Change OSL_CONSTEXPR14 to constexpr [#1805](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1805) (1.14.1.0) + - Remove unnecessary ustring lookup [#1824](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1824) (by Chris Hellmuth) (1.14.1.0) + - Make backfacing shadeop indicate backfacing shader-global is needed [#1827](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1827) (by sfriedmapixar) (1.14.1.0) + - Reparameter string needed to be ustringhash [#1841](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1841) (by Chris Hellmuth) (1.14.1.0) + - Some modernization of osl.imageio [#1840](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1840) (1.14.1.1) ### 🏗 Build/test/CI and platform ports * CMake build system and scripts: + - *build*: Add options to use static Cuda libraries (controlled by + CMake variable `CUDA_PREFER_STATIC_LIBS`) [#1772](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1772) (1.14.1.0) + - *build*: Remove a lot of old SPI build cruft [#1778](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1778) (1.14.1.0) + - Simplify oslquery library include and link needs [#1787](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1787) (1.14.1.0) + - Propagate cpp version: when building against an OIIO that needs C++17, + OSL will need to be build with C++17, too. [#1797](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1797) (1.14.1.0) + - Eliminate boost as a dependency: [#1802](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1802) (by Christopher Kulla) (1.14.1.0) [#1808](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1808) (by Christopher Kulla) (1.14.1.0) + - Default to C++17 mode (but for now, C++14 is still supported by + setting `CMAKE_CXX_STANDARD`). [#1818](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1818) (1.14.1.0) * Dependency version support: + - Support for LLVM 18. [#1773](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1773) (by مهدي شينون (Mehdi Chinoune)) (1.14.1.0) + [#1803](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1803) (1.14.1.0) + - LLVM 18 compat issue - include libclangAPINotes [#1812](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1812) (1.14.1.1) + - Various fixes to deal with deprecations in the development branch and + upcoming 3.0 release of OpenImageIO: + [#1788](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1788) (1.14.1.0), [#1806](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1806) (1.14.1.0), [#1834](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1834) (1.14.1.0), [#1838](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1838) (1.14.1.0), [#1842](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1842) (1.14.1.1), [#1844](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1844) (1.14.1.1) + - *Use new OIIO ustringhash decode methods when available [#1792](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1792) (by Chris Hellmuth) (1.14.1.0) * Testing and Continuous integration (CI) systems: + - *(testrender)*: Fix testrender GPU regression with bad destruction order [#1814](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1814) (1.14.1.0) + - *(testrender)*: Implement new Oren-Nayar model from OpenPBR [#1817](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1817) (by Christopher Kulla) (1.14.1.0) + - *(testrender)*: Implement OpenPBR's sheen BRDF [#1819](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1819) (by Christopher Kulla) (1.14.1.0) + - *tests*: Update ref output for OptiX execution order variance [#1816](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1816) (1.14.1.0) + - *ci*: Test against LLVM 17 [#1760](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1760) (1.14.0.0) + - *ci*: Increase timeout for slow MacOS-13 runner [#1775](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1775) (1.14.1.0) + - *ci*: Fix broken Macos-13 CI [#1780](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1780) (1.14.1.0) + - *ci*: Allow triggering CI workflow from web [#1779](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1779) (1.14.1.0) + - *ci*: Lock down to OIIO 2.5 for icc tests [#1799](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1799) (1.14.1.0) + - *ci*: Print commit hash of locally built dependencies [#1798](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1798) (1.14.1.0) + - *ci*: Suppress leak sanitizer warnings about internals of robin_hash [#1807](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1807) (1.14.1.0) + - *ci*: Mods to CI to deal with OIIO master raising dependency mins [#1833](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1833) (1.14.1.0) + - *ci*: Fix GHA CI after they upgraded nodejs [#1837](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1837) (1.14.1.0) + - *ci*: Deal with CentOS 7 EOL and disappearance of yum mirrors [#1839](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1839) (1.14.1.0) * Platform support: + - *Mac ARM*: Test with Mac ARM runner [#1770](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1770) (1.14.1.0) + - *Mac ARM*: Make finding bison work better on Apple Silicon Macs + homebrew + [#1822](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1822) (1.14.1.1) ### 📚 Documentation - + - Fix links to RTD docs from github landing page [#1768](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1768) (1.14.0.0) + - Clarify behavior of `round()`: OSL uses "round away from zero" policy for + input values exactly half way between two integers, matching C/C++ + standard round(). But we were not clear about it in the docs. + [#1767](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1767) (1.14.1.0) + - More detail about supported platforms in INSTALL.md [#1796](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1796) (1.14.1.0) + - Fix outdated or wrong repo URLs [#1811](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1811) (1.14.1.0) + - Fixes to documentation of new oren_nayar_diffuse_bsdf parameters [#1820](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1820) (1.14.1.0) ### 🏢 Project Administration + - Account for duplicate emails in the .mailmap [#1759](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1759) (1.14.0.0) + - Releases trigger automatic announcements to the Slack channel. + [#1766](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1766) [#1777](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1777) (by John Mertic) (1.14.1.0) + - Raise our code formatting standard to clang-format 17 [#1761](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1761) (1.14.0.0) -Release 1.13 -- beta 1: December 20, 2023 (compared to 1.12) -------------------------------------------------------------- +Release 1.13.10.0 -- 1 June 2024 (compared to 1.13.9.0) +-------------------------------------------------------- + - *testrender*: Implement new Oren-Nayar model from OpenPBR [#1817](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1817) (by Christopher Kulla) + - *docs*: Fix outdated or wrong repo URLs [#1811](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1811) + + +Release 1.13.9.0 -- 1 May 2024 (compared to 1.13.8.0) +-------------------------------------------------------- + - *deps*: Support for LLVM-18 [#1773](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/1773) (by مهدي شينون (Mehdi Chinoune) [#1803](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/1803) (by Larry Gritz) + - *fix*: Make isconnected() work with downstream renderer "connections." [#1782](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/1782) (by sfriedmapixar) + - *cleanup*: Change OSL_CONSTEXPR14 to constexpr [#1805](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/1805) + - *internals build*: Fix ifdef typo [#1804](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/1804) + - *build*: Propagate cpp version [#1797](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/1797) + - *build*: Print commit hash of locally built dependencies [#1798](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/1798) + - *ci*: Lock down to OIIO 2.5 for icc tests [#1799](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/1799) + - *ci*: Suppress leak sanitizer warnings about internals of robin_hash [#1807](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/1807) + - *docs*: More detail about supported platforms in INSTALL.md [#1796](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/1796) + + +Release 1.13.8.0 -- 1 Apr 2024 (compared to 1.13.7.0) +-------------------------------------------------------- +* *fix(batched)*: Codegen bug for compref with varying index for batched shading [#1776](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/1776) (by Alex Wells) +* *fix*: Calculatenormal needs fliphandedness [#1783](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/1783) (by sfriedmapixar) +* *fix*: Print closure missing error message at compile time instead of run time. [#1781](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/1781) (by sfriedmapixar) +* *int*: Change long-deprecated OIIO macro to new one [#1788](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/1788) +* *ci*: Fix broken Macos-13 CI [#1780](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/1780) + +Release 1.13.7.0 -- 1 Mar 2024 (compared to 1.13.6.1) +-------------------------------------------------------- +* *fix*: Mute partio error prints [#1774](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/1774) (by olegul) +* *ci*: Test with Mac ARM runner [#1770](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/1770) +* *docs*: Fix links to RTD docs from github landing page [#1768](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/1768) +* *admin*: Switch release announcement workflow to jmertic's awesome action [#1766](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/1766) + +
+ + +Release 1.13 -- Feb 1, 2024 (compared to 1.12) +=============================================== +- beta 1: December 20, 2023 +- release v1.13.6.1: Feb 1, 2024 ### New minimum dependencies and compatibility changes: @@ -130,6 +246,7 @@ Release 1.13 -- beta 1: December 20, 2023 (compared to 1.12) * OptiX PTX pipeline overhaul [#1680](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1680) (by Tim Grant) (1.13.5.0) * Perf: Don't insert redundant run layer calls inside a basic block [#1665](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1665) [#1669](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1669) [#1672](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1672) (by Chris Hellmuth) (1.13.4.0) +* Fix NVPTX TargetMachine leak, etc. [#1763](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/1763) (by Tim Grant) ### 🐛/🔧 Internals: fixes, improvements, and developer concerns @@ -225,6 +342,7 @@ Release 1.13 -- beta 1: December 20, 2023 (compared to 1.12) * For clarity, use the term 'runner' instead of 'os' [#1743](https://github.com/AcademySoftwareFoundation/OpenShadingLangauge/pull/1743) * Test ABI compliance [#1748](https://github.com/AcademySoftwareFoundation/OpenShadingLangauge/pull/1748) * Fix tests passing when test commands fail [#1733](https://github.com/AcademySoftwareFoundation/OpenShadingLangauge/pull/1733) (by Brecht Van Lommel) + * *ci*: Test against LLVM 17 [#1760](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1760) * Platform support: * Include `immintrin.h` only when needed. #1605 (1.13.1.0) * Changed snprintf formatting to satisfy some compilers. @@ -250,6 +368,7 @@ Release 1.13 -- beta 1: December 20, 2023 (compared to 1.12) * Alert slack "release-announcements" channel upon OSL release [#1740](https://github.com/AcademySoftwareFoundation/OpenShadingLangauge/pull/1740) [#1749](https://github.com/AcademySoftwareFoundation/OpenShadingLangauge/pull/1749) * Update pull request template [#1741](https://github.com/AcademySoftwareFoundation/OpenShadingLangauge/pull/1741) +* Account for duplicate emails in the .mailmap [#1759](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1759) --- diff --git a/CMakeLists.txt b/CMakeLists.txt index b0e96253f..a0d7af7ce 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ cmake_minimum_required (VERSION 3.15) -set (OSL_VERSION "1.14.1.0") +set (OSL_VERSION "1.14.1.1") set (OSL_VERSION_OVERRIDE "" CACHE STRING "Version override (use with caution)!") mark_as_advanced (OSL_VERSION_OVERRIDE) @@ -39,6 +39,28 @@ if (CMAKE_VERSION VERSION_LESS 3.21) endif () endif () +# Set up module path for our own cmake modules and add some esential ones +list (APPEND CMAKE_MODULE_PATH + "${PROJECT_SOURCE_DIR}/src/cmake/modules" + "${PROJECT_SOURCE_DIR}/src/cmake") + +# Utilities +include (colors) +include (set_utils) +include (check_is_enabled) +include (fancy_add_executable) + +# If the user wants to use Conan to build dependencies, they will have done +# this prior to the cmake config: +# cd +# conan install +# and that will leave a conanbuildinfo.cmake in the build area for us. +if (EXISTS ${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) + include (${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) + message (STATUS "Using Conan for dependencies") + conan_basic_setup() +endif() + if (NOT CMAKE_BUILD_TYPE) set (CMAKE_BUILD_TYPE "Release") endif () @@ -60,6 +82,7 @@ message (STATUS "Project build dir = ${CMAKE_BINARY_DIR}") message (STATUS "Project install prefix = ${CMAKE_INSTALL_PREFIX}") message (STATUS "Configuration types = ${CMAKE_CONFIGURATION_TYPES}") message (STATUS "Build type = ${CMAKE_BUILD_TYPE}") +message (STATUS "Supported release = ${${PROJECT_NAME}_SUPPORTED_RELEASE}") # Make the build area layout look a bit more like the final dist layout set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) @@ -70,7 +93,6 @@ if ("${PROJECT_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}") message (FATAL_ERROR "Not allowed to run in-source build!") endif () - option (CMAKE_USE_FOLDERS "Use the FOLDER target property to organize targets into folders." ON) mark_as_advanced (CMAKE_USE_FOLDERS) if (CMAKE_USE_FOLDERS) @@ -118,28 +140,28 @@ option (OSL_USTRINGREP_IS_HASH "Always use ustringhash for strings" OFF) set (OSL_NO_DEFAULT_TEXTURESYSTEM OFF CACHE BOOL "Do not use create a raw OIIO::TextureSystem") if (OSL_NO_DEFAULT_TEXTURESYSTEM) - add_definitions ("-DOSL_NO_DEFAULT_TEXTURESYSTEM=1") + add_compile_definitions (OSL_NO_DEFAULT_TEXTURESYSTEM=1) endif () option (USE_FAST_MATH "Use fast math approximations (if no, then use system math library)" ON) if (USE_FAST_MATH) - add_definitions ("-DOSL_FAST_MATH=1") + add_compile_definitions (OSL_FAST_MATH=1) else () - add_definitions ("-DOSL_FAST_MATH=0") + add_compile_definitions (OSL_FAST_MATH=0) endif () option (OIIO_FMATH_SIMD_FRIENDLY "Make sure OIIO fmath functions are SIMD-friendly" OFF) if (OIIO_FMATH_SIMD_FRIENDLY) - add_definitions (-DOIIO_FMATH_SIMD_FRIENDLY=1) + add_compile_definitions (OIIO_FMATH_SIMD_FRIENDLY=1) endif () # Define OSL_INTERNAL symbol only when building OSL itself, will not be # defined for downstream projects using OSL. -add_definitions (-DOSL_INTERNAL=1) +add_compile_definitions (OSL_INTERNAL=1) # To make sure we aren't relying on deprecated OIIO features, we define # OIIO_DISABLE_DEPRECATED before including any OIIO headers. -add_definitions (-DOIIO_DISABLE_DEPRECATED=900000) +add_compile_definitions (OIIO_DISABLE_DEPRECATED=900000) # Set the default namespace. For symbol hiding reasons, it's important that # the project name is a subset of the namespace name. @@ -158,22 +180,24 @@ if (${PROJ_NAME}_NAMESPACE_INCLUDE_PATCH) endif () message(STATUS "Setting Namespace to: ${PROJ_NAMESPACE_V}") +# Define OSL_INTERNAL symbol only when building OSL itself, will not be +# defined for downstream projects using OSL. +add_definitions (-DOSL_INTERNAL=1) -list (APPEND CMAKE_MODULE_PATH - "${PROJECT_SOURCE_DIR}/src/cmake/modules" - "${PROJECT_SOURCE_DIR}/src/cmake") - -# Helpful functions and macros for our project -include (colors) -include (check_is_enabled) -include (checked_find_package) +# To make sure we aren't relying on deprecated OIIO features, we define +# OIIO_DISABLE_DEPRECATED before including any OIIO headers. +add_definitions (-DOIIO_DISABLE_DEPRECATED=900000) # All the C++ and compiler related options and adjustments include (compiler) +# Dependency finding utilities and all dependency-related options +include (dependency_utils) + # Utilities and options related to finding python and making python bindings include (pythonutils) +# Dependency finding utilities and all dependency-related options include (externalpackages) include (flexbison) include (cuda_macros) @@ -311,3 +335,5 @@ endif () if (PROJECT_IS_TOP_LEVEL) include (packaging) endif () + +print_package_notfound_report () diff --git a/INSTALL.md b/INSTALL.md index 58ba76337..af474fdbb 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -21,11 +21,11 @@ NEW or CHANGED dependencies since the last major release are **bold**. * Build system: [CMake](https://cmake.org/) **3.15 or newer** (tested through 3.27) -* A suitable C++14 or C++17 compiler to build OSL itself, which may be any of: - - GCC 6.1 or newer (tested through gcc 12.1) - - Clang 3.4 or newer (tested through clang 17) +* A suitable C++17 compiler to build OSL itself, which may be any of: + - **GCC 9.3** or newer (tested through gcc 12.1) + - **Clang 5** or newer (tested through clang 18) - Microsoft Visual Studio 2017 or newer - - Intel C++ compiler icc version 17 or newer or LLVM-based icx compiler + - Intel C++ compiler **icc version 19** or newer or LLVM-based icx compiler version 2022 or newer. * **[OpenImageIO](http://openimageio.org) 2.4 or newer** (tested through 2.5 and master) diff --git a/Makefile b/Makefile index 4742da3f3..3c9b0dee2 100644 --- a/Makefile +++ b/Makefile @@ -349,7 +349,7 @@ help: @echo " VERBOSE=1 Show all compilation commands" @echo " STOP_ON_WARNING=0 Do not stop building if compiler warns" @echo " MYCC=xx MYCXX=yy Use custom compilers" - @echo " CMAKE_CXX_STANDARD=14 C++ standard to build with (default is 14)" + @echo " CMAKE_CXX_STANDARD=17 C++ standard to build with (default is 17)" @echo " USE_LIBCPLUSPLUS=1 For clang, use libc++" @echo " GLIBCXX_USE_CXX11_ABI=1 For gcc, use the new string ABI" @echo " EXTRA_CPP_ARGS= Additional args to the C++ command" diff --git a/README.md b/README.md index aa6953d95..710e802e6 100644 --- a/README.md +++ b/README.md @@ -426,7 +426,7 @@ nominated for major awards.) Obi-Wan Kenobi (series), The Boys (S3), Andor (S1) -* **(2023 / upcoming)** +* **(2023)** Ant-Man and the Wasp: Quantumania, The Mandalorian S3, The Magician's Elephant, @@ -434,6 +434,12 @@ nominated for major awards.) Guardians of the Galaxy 3, Spider-Man: Across the Spider-Verse, Elemental, + The Marvels, + Leo +* **(2024 / upcoming)** + Ghostbusters: Frozen Empire, + Inside Out 2, + In Your Dreams, ... @@ -527,21 +533,21 @@ The current project leadership is documented in the Many people have contributed features, bug fixes, and other changes to OSL over the years: Steve Agland, Shane Ambler, Martijn Berger, Farchad Bidgolirad, Nicholas Bishop, Curtis Black, Rasmus Bonnedal, Solomon Boulos, -Stefan Bruens, Stefan Büttner, Matthaus G. Chajdas, Clark Chen, Alejandro -Conty, Damien Courtois, Dieter De Baets, Thomas Dinges, Daniel Dresser, Mads -Drøschler, Peter Ellerington, Luke Emrose, Louis Feng, Mark Final, Henri -Fousse, Stephen Friedman, Syoyo Fujita, Tim Grant, Larry Gritz, Nicolas -Guiard, Euan Haahr, Derek Haase, Sven-Hendrik Haase, John Haddon, Niklas -Harrysson, Daniel Heckenberg, Chris Hellmuth, Adrien Herubel, Dan Horák, -Thiago Ize, Matt Johnson, Ronan Keryell, Chris Kulla, Elvic Liang, Max Liani, -Adam Martinez, John Mertic, Bastien Montagne, Steena Monteiro, Patrick Mours, -Alexis Oblet, Erich Ocean, Mikko Ohtamaa, Jino Park, Alexei Pawlow, Jay -Reynolds, Declan Russell, Benoit Ruiz, Patrick Scheibe, Alex Schworer, -Jonathan Scruggs, Sergey Sharybin, Mark Sisson, Sandip Shukla, Cliff Stein, -Stephan Steinbach, Luya Tshimbalanga, Esteban Tovagliari, Brecht Van Lommel, -Alexander von Knorring, Aidan Welch, Alex Wells, Roman Zulak. (Listed -alphabetically; if we've left anybody out, it is inadvertent, please let us -know.) +Stefan Bruens, Stefan Büttner, Matthaus G. Chajdas, Clark Chen, Mehdi +Chinoune, Alejandro Conty, Damien Courtois, Dieter De Baets, Thomas Dinges, +Daniel Dresser, Mads Drøschler, Peter Ellerington, Luke Emrose, Louis Feng, +Mark Final, Henri Fousse, Stephen Friedman, Syoyo Fujita, Tim Grant, Larry +Gritz, Nicolas Guiard, Euan Haahr, Derek Haase, Sven-Hendrik Haase, John +Haddon, Niklas Harrysson, Daniel Heckenberg, Chris Hellmuth, Adrien Herubel, +Dan Horák, Thiago Ize, Matt Johnson, Ronan Keryell, Chris Kulla, Elvic Liang, +Max Liani, Adam Martinez, John Mertic, Bastien Montagne, Steena Monteiro, +Patrick Mours, Alexis Oblet, Erich Ocean, Mikko Ohtamaa, Jino Park, Alexei +Pawlow, Mitch Prater, Jay Reynolds, Declan Russell, Benoit Ruiz, Patrick +Scheibe, Alex Schworer, Jonathan Scruggs, Sergey Sharybin, Mark Sisson, Sandip +Shukla, Cliff Stein, Stephan Steinbach, Luya Tshimbalanga, Esteban Tovagliari, +Brecht Van Lommel, Thibault Vergne, Alexander von Knorring, Aidan Welch, Alex +Wells, Roman Zulak. (Listed alphabetically; if we've left anybody out, it is +inadvertent, please let us know.) We cannot possibly express sufficient gratitude to the managers at Sony Pictures Imageworks who allowed this project to proceed, supported it diff --git a/doc/build_install/windows/build_osl.py b/doc/build_install/windows/build_osl.py index d8eebb678..62a0e59d3 100644 --- a/doc/build_install/windows/build_osl.py +++ b/doc/build_install/windows/build_osl.py @@ -896,7 +896,7 @@ def InstallPtex_Windows(context, force, buildArgs): ) PatchFile( "src\\tests\\CMakeLists.txt", - [("add_definitions(-DPTEX_STATIC)", "# add_definitions(-DPTEX_STATIC)")], + [("add_compile_definitions(PTEX_STATIC)", "# add_compile_definitions(PTEX_STATIC)")], ) # Patch Ptex::String to export symbol for operator<< @@ -1048,8 +1048,7 @@ def InstallOSL(context, force, buildArgs): extraArgs.append("-DUSE_PYTHON=0") extraArgs.append("-DOSL_BUILD_TESTS=0") - # if you are using LLVM 10 or higher C++ should be set on 14 - extraArgs.append("-DCMAKE_CXX_STANDARD=14") + extraArgs.append("-DCMAKE_CXX_STANDARD=17") # if you are using LLVM 10 or higher C++ should be set on 11 # extraArgs.append("-DCMAKE_CXX_STANDARD=11") @@ -1273,7 +1272,7 @@ def InstallOpenColorIO(context, force, buildArgs): option. This values for this option must take the form ,