diff --git a/CMakeLists.txt b/CMakeLists.txt index b17664f2..88d6e473 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,7 @@ list(APPEND CMAKE_MESSAGE_CONTEXT ${PROJECT_NAME}) if(NOT DEFINED CMAKE_INSTALL_PREFIX OR ${CMAKE_INSTALL_PREFIX} STREQUAL "/usr/local") set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/release) endif() + list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/cmake) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/rats/cmake) @@ -92,4 +93,3 @@ if(GLD STREQUAL "$ENV{STUDIO}") GROUP_READ GROUP_WRITE WORLD_READ) endif() - diff --git a/CMakeMacOSPresets.json b/CMakeMacOSPresets.json index 0524fa1f..4cd61213 100644 --- a/CMakeMacOSPresets.json +++ b/CMakeMacOSPresets.json @@ -5,8 +5,8 @@ "name": "macos-environment", "hidden": true, "environment": { - "DEPS_ROOT" : "${sourceParentDir}/installs", - "BUILD_DIR" : "${sourceParentDir}/build", + "DEPS_ROOT" : "/Applications/MoonRay/installs", + "BUILD_DIR" : "/Applications/MoonRay/build", "Boost_ROOT" : "$env{DEPS_ROOT}", "Libuuid_ROOT" : "$env{DEPS_ROOT}", "CppUnit_ROOT" : "$env{DEPS_ROOT}", @@ -20,17 +20,30 @@ "OPTIX_ROOT" : "$env{DEPS_ROOT}/optix", "PXR_USD_LOCATION" : "$env{DEPS_ROOT}", "PXR_INCLUDE_DIRS" : "$env{DEPS_ROOT}/include", + "PXR_BOOST_PYTHON_LIB" : "/Applications/Houdini/Houdini22.0.408/Frameworks/Houdini.framework/Versions/Current/Libraries/libhboost_python313-mt-a64.dylib", "Random123_ROOT" : "$env{DEPS_ROOT}", "ZLIB_ROOT" : "$env{DEPS_ROOT}", - "OIIO_PYTHON" : "$env{DEPS_ROOT}/lib/python3.9/site-packages" + "OIIO_PYTHON" : "$env{DEPS_ROOT}/lib/python3.13/site-packages" }, "cacheVariables": { "CMAKE_PREFIX_PATH": "$env{DEPS_ROOT}", - "CMAKE_CXX_FLAGS": "-D_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION -I${sourceParentDir}/building/macOS/houdini-usd-fixes", + "CMAKE_CXX_FLAGS": "-D_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION -DFMT_USE_NONTYPE_TEMPLATE_ARGS=0 -DFMT_USE_CONSTEXPR=0 -DFMT_CONSTEVAL= -I/Applications/MoonRay/source/openmoonray/building/macOS/houdini-usd-fixes", "CMAKE_IGNORE_PATH": "/opt/homebrew", "CMAKE_IGNORE_PREFIX_PATH": "/opt/homebrew", "CMAKE_POLICY_VERSION_MINIMUM": "3.5", - "Python_EXECUTABLE": "/usr/bin/python3" + "Python_EXECUTABLE": "/Applications/Houdini/Houdini22.0.408/Frameworks/Python.framework/Versions/3.13/Resources/Python.app/Contents/MacOS/Python", + "CMAKE_CXX_STANDARD": "20", + "BUILD_QT_APPS": "OFF", + "BUILD_MATERIALX_SHADERS": "ON", + "BUILD_TESTING": "OFF", + "SCENERDL2_BUILD_TESTING": "OFF", + "MOONRAY_BUILD_TESTING": "OFF", + "ARRAS4_CORE_BUILD_TESTING": "OFF", + "MOONRAY_USE_METAL": "OFF", + "BUILD_MOONRAY_SDR_PLUGINS": "OFF", + "Vulkan_INCLUDE_DIR": "$env{HOUDINI_INSTALL_DIR}/Frameworks/Houdini.framework/Versions/Current/Resources/toolkit/include", + "Vulkan_LIBRARY": "$env{HOUDINI_INSTALL_DIR}/Frameworks/Houdini.framework/Versions/Current/Libraries/libvulkan.dylib", + "CMAKE_ISPC_COMPILER": "$env{ISPC}" } }, { @@ -38,12 +51,12 @@ "hidden": true, "inherits": "macos-environment", "environment": { - "PREFIX_PXR" : "${sourceParentDir}/building/macOS/pxr-houdini", - "HOUDINI_INSTALL_DIR" : "/Applications/Houdini/Houdini20.0.751", + "PREFIX_PXR" : "/Applications/MoonRay/source/openmoonray/building/macOS/pxr-houdini", + "HOUDINI_INSTALL_DIR" : "/Applications/Houdini/Houdini22.0.408", "PXR_LIB_PREFIX" : "$env{HOUDINI_INSTALL_DIR}/Frameworks/Houdini.framework/Versions/Current/Libraries", "PXR_INCLUDE_PREFIX" : "$env{HOUDINI_INSTALL_DIR}/Frameworks/Houdini.framework/Versions/Current/Resources/toolkit/include", "PXR_DEPS_PREFIX" : "$env{DEPS_ROOT}", - "PXR_BOOST_PYTHON_LIB" : "$env{HOUDINI_INSTALL_DIR}/Frameworks/Houdini.framework/Versions/Current/Libraries/libhboost_python39-mt-a64.dylib" + "PXR_BOOST_PYTHON_LIB" : "$env{HOUDINI_INSTALL_DIR}/Frameworks/Houdini.framework/Versions/Current/Libraries/libhboost_python313-mt-a64.dylib" }, "cacheVariables": { "CMAKE_PREFIX_PATH": "$env{DEPS_ROOT};$env{PREFIX_PXR}", @@ -57,7 +70,7 @@ "binaryDir": "$env{BUILD_DIR}", "cacheVariables": { "CMAKE_BUILD_TYPE": "Release", - "CMAKE_INSTALL_PREFIX": "${sourceParentDir}/installs/openmoonray" + "CMAKE_INSTALL_PREFIX": "/Applications/MoonRay/installs/openmoonray" }, "generator": "Xcode" }, @@ -68,9 +81,9 @@ "binaryDir": "$env{BUILD_DIR}", "cacheVariables": { "CMAKE_BUILD_TYPE": "Release", - "CMAKE_INSTALL_PREFIX": "${sourceParentDir}/installs/openmoonray" + "CMAKE_INSTALL_PREFIX": "/Applications/MoonRay/installs/openmoonray" }, - "generator": "Xcode" + "generator": "Unix Makefiles" } ], "buildPresets": [ diff --git a/arras/arras4_core b/arras/arras4_core index 17c49f11..91da6002 160000 --- a/arras/arras4_core +++ b/arras/arras4_core @@ -1 +1 @@ -Subproject commit 17c49f115dc9c849003cfa15aa05869c97c5d801 +Subproject commit 91da6002d66f4f858b1e42beb874cad989c9aaa4 diff --git a/building/macOS/Boost-no-numpy.patch b/building/macOS/Boost-no-numpy.patch new file mode 100644 index 00000000..f9cef76b --- /dev/null +++ b/building/macOS/Boost-no-numpy.patch @@ -0,0 +1,6 @@ +diff --git a/libs/python/build/Jamfile b/libs/python/build/Jamfile +--- a/libs/python/build/Jamfile ++++ b/libs/python/build/Jamfile +@@ -136,1 +136,1 @@ +-if [ python.configured ] && [ python.numpy ] ++if "" diff --git a/building/macOS/CMakeLists.txt b/building/macOS/CMakeLists.txt index 00085e2f..640a814b 100644 --- a/building/macOS/CMakeLists.txt +++ b/building/macOS/CMakeLists.txt @@ -37,8 +37,10 @@ set(THIS_DIR ${CMAKE_CURRENT_SOURCE_DIR}) # User configurable settings set(InstallRoot ${rootSrcDir}/../../../../installs CACHE FILEPATH "Install root for dependencies") -set(PythonVer 3.9.6 CACHE STRING "Python version (n.m), e.g. 3.6") -set(PythonRoot /usr CACHE FILEPATH "Location of Python install") +set(HoudiniInstallRoot "/Applications/Houdini/Houdini22.0.408" CACHE PATH "Houdini installation root") +set(PythonVer 3.13.10 CACHE STRING "Python version (n.m), e.g. 3.6") +set(PythonRoot "${HoudiniInstallRoot}/Frameworks/Python.framework/Versions/3.13" CACHE FILEPATH "Location of Python install") +set(HoudiniPython "${PythonRoot}/Resources/Python.app/Contents/MacOS/Python" CACHE FILEPATH "Houdini Python executable") # Arguments shared by every CMake-based dependency: policy floor for CMake 4, # find dependencies only in ${InstallRoot}, never in homebrew, and install @@ -61,13 +63,14 @@ ExternalProject_Add(Blosc set(CHAIN Blosc) ExternalProject_Add(Boost - URL https://archives.boost.io/release/1.78.0/source/boost_1_78_0.tar.gz - https://downloads.sourceforge.net/project/boost/boost/1.78.0/boost_1_78_0.tar.gz - URL_HASH SHA256=94ced8b72956591c4775ae2207a9763d3600b30d9d7446562c552f0a14a63be7 - UPDATE_COMMAND ./bootstrap.sh --prefix=${InstallRoot} --with-libraries=python,filesystem,system,thread,regex,date_time,chrono,program_options,iostreams --with-toolset=clang linkflags="-arch ${BOOST_ARCH}" + URL https://archives.boost.io/release/1.88.0/source/boost_1_88_0.tar.gz + https://downloads.sourceforge.net/project/boost/boost/1.88.0/boost_1_88_0.tar.gz + UPDATE_COMMAND ./bootstrap.sh --prefix=${InstallRoot} --with-toolset=clang linkflags="-arch ${BOOST_ARCH}" CONFIGURE_COMMAND "" PATCH_COMMAND patch -p3 -N < ${THIS_DIR}/Boost.patch || true - BUILD_COMMAND ./b2 install ${JOBS_ARG} --user-config=${THIS_DIR}/user-config.jam variant=release link=shared threading=multi define=BOOST_UNORDERED_HAVE_PIECEWISE_CONSTRUCT=0 + COMMAND patch -p1 -N < ${THIS_DIR}/Boost-no-numpy.patch || true + COMMAND /usr/bin/perl -0pi -e "s/boost-install boost_python boost_numpy/boost-install boost_python/" libs/python/build/Jamfile + BUILD_COMMAND ./b2 install ${JOBS_ARG} --user-config=${THIS_DIR}/user-config.jam --with-python --with-iostreams --with-atomic --with-chrono --with-date_time --with-filesystem --with-program_options --with-regex --with-system --with-thread variant=release link=shared threading=multi architecture=arm address-model=64 define=BOOST_UNORDERED_HAVE_PIECEWISE_CONSTRUCT=0 BUILD_IN_SOURCE 1 INSTALL_COMMAND "" DEPENDS ${CHAIN} @@ -112,7 +115,7 @@ set(CHAIN MicroHttpd) ExternalProject_Add(OpenSubdiv GIT_REPOSITORY https://github.com/PixarAnimationStudios/OpenSubdiv - GIT_TAG 8ffa2b6566be10209529d7a0d1db02a0796b160c # v3_5_0 + GIT_TAG 4951f30c00f395aa831a9fc42577cc28ce46fa81 # v3_7_0 BUILD_COMMAND make ${JOBS_ARG} CMAKE_ARGS ${COMMON_CMAKE_ARGS} @@ -123,41 +126,67 @@ ExternalProject_Add(OpenSubdiv ) set(CHAIN OpenSubdiv) +ExternalProject_Add(Imath + GIT_REPOSITORY https://github.com/AcademySoftwareFoundation/Imath + GIT_TAG 1e480d11cb98b032a2dece9b9a8730512effc7f6 # v3.2.2 + BUILD_COMMAND make ${JOBS_ARG} + CMAKE_ARGS + ${COMMON_CMAKE_ARGS} + -DCMAKE_BUILD_TYPE=Release + -DBUILD_TESTING=OFF + -DIMATH_INSTALL_PKG_CONFIG=ON + DEPENDS ${CHAIN} +) +set(CHAIN Imath) + ExternalProject_Add(OpenEXR GIT_REPOSITORY https://github.com/AcademySoftwareFoundation/openexr - GIT_TAG 8bc3741131db146ad08a5b83af9e6e48f0e94a03 # v2.5.7 - PATCH_COMMAND patch IlmBase/Half/CMakeLists.txt ${THIS_DIR}/../Imath_include_paths.patch + GIT_TAG 4b7ce9c503d0b069f58f07f915f7682c4030cbf1 # v3.4.3 BUILD_COMMAND make ${JOBS_ARG} CMAKE_ARGS ${COMMON_CMAKE_ARGS} - -DBoost_ROOT=${InstallRoot} - -DBUILD_SHARED_LIBS=OFF + -DImath_ROOT=${InstallRoot} + -DImath_DIR=${InstallRoot}/lib/cmake/Imath + -DCMAKE_BUILD_TYPE=Release + -DBUILD_SHARED_LIBS=ON + -DOPENEXR_BUILD_TOOLS=OFF + -DOPENEXR_BUILD_EXAMPLES=OFF + -DOPENEXR_BUILD_TESTS=OFF + -DOPENEXR_BUILD_PYTHON=OFF + -DOPENEXR_INSTALL_EXAMPLES=OFF DEPENDS ${CHAIN} ) set(CHAIN OpenEXR) ExternalProject_Add(TBB - URL https://github.com/oneapi-src/oneTBB/archive/2020_U3.tar.gz - URL_HASH SHA256=2103cc6238c935664f87680618f6684d57501d4a2fa8ea8f6c97ad6ff7dc722a - BUILD_IN_SOURCE 1 - CONFIGURE_COMMAND "" - BUILD_COMMAND make ${JOBS_ARG} arch=arm64 - INSTALL_COMMAND bash -c "cp build/*_release/libtbb*.* ${InstallRoot}/lib" - COMMAND bash -c "cp -r include/tbb ${InstallRoot}/include" + GIT_REPOSITORY https://github.com/oneapi-src/oneTBB.git + GIT_TAG 45587e94dfb6dfe00220c5f520020a5bc745e92f # v2022.1.0 + BUILD_COMMAND ${CMAKE_COMMAND} --build --config Release --parallel ${N} + INSTALL_COMMAND ${CMAKE_COMMAND} --install --config Release + CMAKE_ARGS + ${COMMON_CMAKE_ARGS} + -DCMAKE_BUILD_TYPE=Release + -DTBB_TEST=OFF + -DTBB_EXAMPLES=OFF + -DTBB_STRICT=OFF DEPENDS ${CHAIN} ) set(CHAIN TBB) ExternalProject_Add(OpenVDB GIT_REPOSITORY https://github.com/AcademySoftwareFoundation/openvdb - GIT_TAG ab935574cdb25c3df66b068fce2a3b0a74281c54 # v9.1.0 - PATCH_COMMAND patch -p1 -N < ${THIS_DIR}/OpenVDB.patch || true + GIT_TAG 7c03e1f084873cd1b3422c7ff7aec6ee681b3b38 # v13.0.0 BUILD_COMMAND make ${JOBS_ARG} CMAKE_ARGS ${COMMON_CMAKE_ARGS} -DBlosc_ROOT=${InstallRoot} -DBoost_ROOT=${InstallRoot} -DTBB_ROOT=${InstallRoot} + -DCMAKE_BUILD_TYPE=Release + -DOPENVDB_BUILD_BINARIES=OFF + -DOPENVDB_BUILD_UNITTESTS=OFF + -DOPENVDB_BUILD_PYTHON_MODULE=OFF + -DOPENVDB_BUILD_NANOVDB=OFF DEPENDS ${CHAIN} ) set(CHAIN OpenVDB) @@ -233,7 +262,7 @@ set(CHAIN embree) ExternalProject_Add(OpenColorIO GIT_REPOSITORY https://github.com/AcademySoftwareFoundation/OpenColorIO - GIT_TAG 056b7b0cb0d087961e9dba75104820e44faf52a1 # v2.0.2 + GIT_TAG 592a122b37467c3376f2387fbbdbe7b571fad39f # v2.5.0 BUILD_COMMAND ${CMAKE_COMMAND} -E env ${POLICY_MIN_ENV} make ${JOBS_ARG} CMAKE_ARGS ${COMMON_CMAKE_ARGS} @@ -245,7 +274,7 @@ ExternalProject_Add(OpenColorIO -DOCIO_BUILD_PYTHON=OFF -DBUILD_SHARED_LIBS=ON -DOCIO_BUILD_STATIC=OFF - -DCMAKE_CXX_STANDARD=17 + -DCMAKE_CXX_STANDARD=20 DEPENDS ${CHAIN} ) set(CHAIN OpenColorIO) @@ -286,33 +315,49 @@ set(CHAIN pybind11) ExternalProject_Add(OpenImageIO GIT_REPOSITORY https://github.com/OpenImageIO/oiio - GIT_TAG 331a323468928c8017ad048b26d47c4e57a724a7 # 2.3.20.0 + GIT_TAG 372c57696909513a8ea97180cb34b925c4fe09e3 # v2.5.18.0 BUILD_COMMAND make ${JOBS_ARG} CMAKE_ARGS ${COMMON_CMAKE_ARGS} -DBoost_ROOT=${InstallRoot} -DIMath_ROOT=${InstallRoot} + -DImath_DIR=${InstallRoot}/lib/cmake/Imath -DDISABLE_CMAKE_SEARCH_PATHS=TRUE -DCMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH=TRUE -DOpenEXR_ROOT=${InstallRoot} + -DOpenEXR_DIR=${InstallRoot}/lib/cmake/OpenEXR + -DOpenColorIO_ROOT=${InstallRoot} + -DTBB_ROOT=${InstallRoot} + -DCMAKE_BUILD_TYPE=Release -DUSE_QT=0 -DUSE_PYTHON=1 - -DPython_EXECUTABLE=/usr/bin/python3 + -DPython_EXECUTABLE=${HoudiniPython} + -DPython_ROOT=${PythonRoot} + -DPython_LIBRARIES=${PythonRoot}/lib/libpython3.13.dylib + -DPython_INCLUDE_DIR=${PythonRoot}/include/python3.13 + -DUSE_OPENVDB=0 + -DUSE_FFMPEG=0 + -DUSE_OPENCV=0 + -DUSE_WEBP=0 + -DUSE_DCMTK=0 + -DUSE_OPENJPEG=0 + -DUSE_TESTS=0 DEPENDS ${CHAIN} ) set(CHAIN OpenImageIO) ExternalProject_Add(OpenImageDenoise - URL https://github.com/OpenImageDenoise/oidn/releases/download/v2.2.0/oidn-2.2.0.arm64.macos.tar.gz - URL_HASH SHA256=16cdaddabeb0f2af22fc8e466317c1a14a54b6ec03db2ac343e17fad40c70f3f + URL https://github.com/OpenImageDenoise/oidn/releases/download/v2.3.3/oidn-2.3.3.arm64.macos.tar.gz BUILD_COMMAND "" CONFIGURE_COMMAND "" - INSTALL_COMMAND bash -c "rm -f ../OpenImageDenoise/lib/libtbb.dylib" + INSTALL_COMMAND bash -c "rm -f ../OpenImageDenoise/lib/libtbb*.dylib" COMMAND bash -c "ditto ../OpenImageDenoise ${InstallRoot}" DEPENDS ${CHAIN} ) set(CHAIN OpenImageDenoise) +option(NO_QT "Skip building the Qt dependency" OFF) +if(NOT NO_QT) ExternalProject_Add(qt5 GIT_REPOSITORY https://code.qt.io/qt/qt5.git GIT_SUBMODULES_RECURSE false @@ -327,6 +372,22 @@ ExternalProject_Add(qt5 DEPENDS ${CHAIN} ) set(CHAIN qt5) +endif() + +ExternalProject_Add(MaterialX + GIT_REPOSITORY https://github.com/AcademySoftwareFoundation/MaterialX + GIT_TAG 7b64921ef1d42f2d57871e9d2c43dc11f041f26b # v1.39.5 + BUILD_COMMAND make ${JOBS_ARG} + CMAKE_ARGS + ${COMMON_CMAKE_ARGS} + -DMATERIALX_BUILD_PYTHON=OFF + -DMATERIALX_BUILD_TESTS=OFF + -DMATERIALX_BUILD_VIEWER=OFF + -DMATERIALX_BUILD_GRAPH_EDITOR=OFF + -DCMAKE_BUILD_TYPE=Release + DEPENDS ${CHAIN} +) +set(CHAIN MaterialX) if(NOT NO_USD) ExternalProject_Add(USD @@ -379,6 +440,8 @@ set(CHAIN libuuid) ExternalProject_Add(OpenSSL GIT_REPOSITORY https://github.com/openssl/openssl.git + GIT_SHALLOW TRUE + GIT_SUBMODULES "" # GIT_TAG a92271e03a8d0dee507b6f1e7f49512568b2c7ad # 3.1.0 - contains a bug on Apple Silicon GIT_TAG 31157bc0b46e04227b8468d3e6915e4d0332777c # 3.0.8 CONFIGURE_COMMAND ./Configure darwin64-arm64 --prefix=${InstallRoot} --openssldir=${InstallRoot} -rpath ${InstallRoot}/lib @@ -432,4 +495,3 @@ ExternalProject_Add(GLFW DEPENDS ${CHAIN} ) set(CHAIN GLFW) - diff --git a/building/macOS/Houdini22_build_notes.md b/building/macOS/Houdini22_build_notes.md new file mode 100644 index 00000000..99305555 --- /dev/null +++ b/building/macOS/Houdini22_build_notes.md @@ -0,0 +1,248 @@ +# Houdini 22 macOS alignment notes + +This document records the changes and validation performed on the +`test/houdini22-clean-build` branch. The work started from +`OpenMoonRay/openmoonray` `main` at `b9b0ac2` and targets Houdini 22.0.408 on +Apple Silicon. + +This is a validation branch, not a statement of upstream support for every +Houdini 22 production workflow. + +## Validated platform + +- Houdini 22.0.408 +- Houdini USD 26.05 +- Houdini Python 3.13.10 +- AppleClang arm64 with C++20 +- macOS Tahoe on Apple Silicon +- Qt applications disabled +- MaterialX shader DSOs and Houdini nodes enabled +- Houdini's USD, Python, Vulkan headers, and Vulkan library used by the build +- MoonRay Embree generation retained at Embree 4 +- Metal accelerator compatibility retained, while `MOONRAY_USE_METAL` remains + disabled in the validation preset + +## Dependency alignment + +The macOS dependency build was refreshed without building a second USD copy. +The Houdini build uses `NO_USD=1` and links against Houdini's USD 26.05. + +| Dependency | Version | +| --- | --- | +| Boost | 1.88.0 | +| OpenSubdiv | 3.7.0 | +| Imath | 3.2.2 | +| OpenEXR | 3.4.3 | +| oneTBB | 2022.1.0 | +| OpenVDB | 13.0.0 | +| OpenColorIO | 2.5.0 | +| OpenImageIO | 2.5.18.0 | +| MaterialX | 1.39.5 | +| OpenImageDenoise | 2.3.3 | +| Embree | 4.2.0 | + +The dependency work also: + +- builds standalone Imath before OpenEXR 3; +- uses oneTBB's CMake build and install flow; +- removes OIDN's bundled TBB libraries so the dependency tree uses one TBB; +- disables Boost.NumPy, which is not required and did not build against the + Houdini Python configuration; +- uses Houdini Python 3.13 for Boost.Python and OpenImageIO; +- installs MaterialX independently instead of relying on Houdini's private copy; +- disables Qt and GUI applications for this build; +- isolates dependency discovery from Homebrew to avoid accidental ABI mixing; +- supplies CMake 4 policy compatibility to older dependency projects. + +## Houdini USD 26.05 integration + +The local PXR imported-target shim was regenerated for Houdini 22. The target +set follows the libraries shipped by Houdini 22.0.408, including `hdsi`, +`usdRi`, and `usdviewq`. Obsolete targets not shipped by this USD build, such as +`ndr` and `usdRiImaging`, are not synthesized. `usdRiPxrImaging` is also not +invented when Houdini does not ship that library. + +The shim uses Houdini's Python 3.13 framework and +`libhboost_python313-mt-a64.dylib`. A small Boost.Asio compatibility header is +provided for USD code that still includes the removed `io_service.hpp` path. + +The root preset now uses: + +- `CMAKE_CXX_STANDARD=20`; +- Houdini's Python executable and Python 3.13 module paths; +- Houdini's Vulkan include directory and library; +- Unix Makefiles for the Houdini configuration; +- `BUILD_MATERIALX_SHADERS=ON`; +- `BUILD_QT_APPS=OFF`; +- `BUILD_MOONRAY_SDR_PLUGINS=OFF` for the legacy SDR plugin path. + +## Submodule alignment and compatibility work + +The branch intentionally pins coordinated submodule revisions. The effective +changes are summarized below. + +### hdMoonray + +- starts from Rob's Hydra 2.0 `hdm_10` work; +- adapts renderer plugin entry points for USD 26; +- adds C++20 and Houdini 22 integer-value compatibility; +- retains the Apple Silicon half-float AOV allocation fix; +- keeps the internal `HdMoonray_Light` class name—this is a C++ implementation + name, not a Hydra prim token; +- recognizes Houdini 22's `houdini:viewport` setting as an interactive client; +- keeps an active Render Settings prim on the interactive Solaris render-pass + path instead of switching IPR to the one-shot disk-product path; +- invalidates completed offline product renders when their Render Settings or + scene changes. + +Houdini's generic Light LOP is expected to produce a Hydra `SphereLight` with +`moonray:class=PointLight`. Its default position is the origin; if the test +sphere is also at the origin, the point light is inside the sphere and the +outside initially appears black. + +### MoonRay, scene_rdl2, and Moonshine + +- replaces the Metal GPU accelerator map's legacy `tbb::atomic` use with + `std::atomic`; +- adds the remaining USD 26 and oneTBB source compatibility needed by the + H22 build; +- fixes ARM half conversion in MoonRay render-output writing and scene_rdl2 + tile packing; +- adjusts macOS compiler, Python framework loading, and signing compatibility; +- fixes a C++20 attribute lookup in Moonshine's DwaBase material path. + +### MaterialX and Houdini DCC plugins + +- builds MaterialX shaders against the standalone MaterialX 1.39.5 package; +- updates MaterialX source compatibility for Houdini 22/C++20; +- uses Nick's updated DCC plugin work as the plugin base; +- supports MaterialX HDA generation with USD 26; +- installs the Houdini startup hook in the Python 3.13 location; +- installs renderer `.ds` files and HDAs beneath the OpenMoonRay Houdini plugin + directory. + +### Artist-facing Solaris tools + +The H22 DCC payload includes an editable **MoonRay Material Builder** shelf +tool. Create it inside a Solaris Material Library; it creates a native +`DwaBaseMaterial` and `NormalDisplacement` network and publishes `surface` and +`displacement` through Houdini 22's `suboutput` node. The builder is a plain +editable subnet, so additional MoonRay VOPs can be inserted without editing a +locked asset. + +The Light Filter Library includes the MoonRay filter HDAs supplied by the DCC +plugin (`IntensityLightFilter`, `DecayLightFilter`, `CookieLightFilter`, +`BarnDoorLightFilter`, `ColorRampLightFilter`, `CombineLightFilter`, +`RodLightFilter`, and `VdbLightFilter`). These are intended to be created +inside a Solaris Light Filter Library rather than a regular material network. + +Render Geometry already exposes MoonRay mesh tessellation controls in +`HdMoonrayRendererPlugin_Geometry.ds`. Set the control mode to **Set or Create** +before editing **Mesh Resolution** or **Adaptive Error**; their default +**Do Nothing** mode intentionally leaves existing scene-authored primvars +untouched. + +### Arras and IPR lifecycle + +The apparent scene-update starvation had two independent causes. + +First, Athena UDP telemetry was called inline from Arras message delivery. A +blocking `sendto()` to an unavailable local syslog target could stop the client +before scene updates were delivered. The socket is now non-blocking and logging +is best-effort. + +Second, hdm10 treated every active Render Settings prim as an offline product +render. In Solaris this latched `mProductRenderComplete` after one execution and +prevented later IPR changes. Houdini 22 viewport detection and render-pass +routing now keep that path interactive. + +Temporary full-scene reload, renderer pausing, client-message serialization, +and deferred-MCRT queue workarounds were tested and reverted after transport +and render-pass tracing identified the actual causes. Investigation-only frame +and queue logging was also removed from the final state. + +## Clean build procedure + +The paths below match the checked-in validation preset. Change the Houdini +installation path in `CMakeMacOSPresets.json`, `building/macOS/CMakeLists.txt`, +and `building/macOS/user-config.jam` when testing another Houdini build. + +From a clean checkout with recursively initialized submodules: + +```bash +mkdir -p /Applications/MoonRay/{build,build-deps,installs} + +cmake \ + -S /Applications/MoonRay/source/openmoonray/building/macOS \ + -B /Applications/MoonRay/build-deps \ + -DNO_USD=1 \ + -DNO_QT=1 +cmake --build /Applications/MoonRay/build-deps --parallel + +cmake \ + --preset macos-houdini-release \ + -S /Applications/MoonRay/source/openmoonray +cmake --build --preset macos-houdini-release --parallel +``` + +The install prefix is `/Applications/MoonRay/installs/openmoonray`. + +## Houdini plugin and HDA refresh + +The normal root install copies the plugin. To regenerate HDAs after changing +RDL2 proxy definitions: + +```bash +cd /Applications/Houdini/Houdini22.0.408/Frameworks/Houdini.framework/Versions/Current/Resources +source ./houdini_setup +source /Applications/MoonRay/installs/openmoonray/scripts/macOS/setupHoudini.sh + +cd /Applications/MoonRay/source/openmoonray/moonray/moonray_dcc_plugins +hython scripts/update_hdas.py --output-dir ./houdini +cmake --install /Applications/MoonRay/build +``` + +This flow generated standard nodes such as `VdbVolume` and `DwaBaseMaterial` +and MaterialX `ND_*` nodes from the fresh proxy libraries. + +## Launch command + +Start Houdini from a terminal so its USD and Python environment is established +before the OpenMoonRay setup is applied: + +```bash +cd /Applications/Houdini/Houdini22.0.408/Frameworks/Houdini.framework/Versions/Current/Resources +source ./houdini_setup +source /Applications/MoonRay/installs/openmoonray/scripts/macOS/setupHoudini.sh +houdini +``` + +## Validation performed + +The final installed Release and Debug delegates were loaded in a fresh Houdini +22.0.408 process. Validation covered: + +- MoonRay renderer discovery in the Solaris viewport; +- a sphere rendered with the generic Houdini Light LOP resolved as + `SphereLight` plus `moonray:class=PointLight`; +- repeated PointLight intensity edits with distinct completed framebuffers; +- an active `/Render/rendersettings` prim; +- live `pixel_samples` changes with new Arras synchronization IDs and distinct + completed framebuffers; +- MaterialX shader DSO and `ND_*` node generation; +- ARM half-float framebuffer/AOV paths; +- successful compilation and installation of `hd_moonray`, + `hd_moonray_debug`, and `computation_progmcrt`. + +The install step may print duplicate `LC_RPATH` warnings when reinstalling over +an existing tree. They did not prevent the rebuilt binaries from being +installed or loaded during this validation. + +## Remaining scope + +- The preset is intentionally pinned to Houdini 22.0.408 paths. +- Qt applications and the MoonRay GUI were not part of this validation. +- Metal rendering is disabled in the preset; only the source compatibility fix + is included. +- The branch contains coordinated submodule revisions and should be reviewed as + an integration branch rather than as one isolated library update. diff --git a/building/macOS/houdini-usd-fixes/boost/asio/io_service.hpp b/building/macOS/houdini-usd-fixes/boost/asio/io_service.hpp new file mode 100644 index 00000000..47282e93 --- /dev/null +++ b/building/macOS/houdini-usd-fixes/boost/asio/io_service.hpp @@ -0,0 +1,8 @@ +// Compatibility shim for Boost 1.88, which folded io_service into io_context. +#pragma once + +#include + +namespace boost::asio { +using io_service = io_context; +} diff --git a/building/macOS/macOS_build.md b/building/macOS/macOS_build.md index 3b93c940..8127efa9 100644 --- a/building/macOS/macOS_build.md +++ b/building/macOS/macOS_build.md @@ -48,7 +48,9 @@ Note: If building for Houdini, you'll potentially need to make the following cha * Edit source/openmoonray/scripts/macOS/setupHoudini.sh to update HOUDINI_PATH * Edit source/openmoonray/building/macOS/pxr-houdini/pxrTargets.cmake to update HPYTHONLIB and HPYTHONINC if needed -Houdini 20 is officially supported. +Houdini 20 is officially supported. The experimental Houdini 22 alignment and +its exact dependency, submodule, build, and validation details are documented +in [Houdini22_build_notes.md](Houdini22_build_notes.md). --- ### Step 4. Build the dependencies diff --git a/building/macOS/pxr-houdini/pxrConfig.cmake b/building/macOS/pxr-houdini/pxrConfig.cmake index 28237a87..7cf0ae0f 100644 --- a/building/macOS/pxr-houdini/pxrConfig.cmake +++ b/building/macOS/pxr-houdini/pxrConfig.cmake @@ -17,12 +17,12 @@ get_filename_component(PXR_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) set(PXR_MAJOR_VERSION "0") -set(PXR_MINOR_VERSION "22") +set(PXR_MINOR_VERSION "26") set(PXR_PATCH_VERSION "5") -set(PXR_VERSION "2205") +set(PXR_VERSION "2605") include("${PXR_CMAKE_DIR}/pxrTargets.cmake") -set(libs "arch;tf;gf;js;trace;work;plug;vt;ar;kind;sdf;ndr;sdr;pcp;usd;usdGeom;usdVol;usdMedia;usdShade;usdLux;usdRender;usdHydra;usdRi;usdSkel;usdUI;usdUtils;usdPhysics;garch;hf;hio;cameraUtil;pxOsd;glf;hgi;hgiGL;hgiInterop;hd;hdSt;hdx;usdImaging;usdImagingGL;usdRiImaging;usdSkelImaging;usdVolImaging;usdAppUtils;usdviewq") +set(libs "arch;tf;gf;js;trace;work;plug;vt;ar;kind;sdf;sdr;pcp;usd;usdGeom;usdVol;usdMedia;usdShade;usdLux;usdRender;usdHydra;usdRi;usdSkel;usdUI;usdUtils;usdPhysics;garch;hf;hio;cameraUtil;pxOsd;glf;hgi;hgiGL;hgiInterop;hd;hdsi;hdSt;hdx;hdMtlx;usdImaging;usdImagingGL;usdSkelImaging;usdVolImaging;usdAppUtils;usdMtlx") set(PXR_LIBRARIES "") set(PXR_INCLUDE_DIRS "$ENV{PXR_INCLUDE_PREFIX}") string(REPLACE " " ";" libs "${libs}") diff --git a/building/macOS/pxr-houdini/pxrTargets-release.cmake b/building/macOS/pxr-houdini/pxrTargets-release.cmake index ae3a89da..e56ea95a 100644 --- a/building/macOS/pxr-houdini/pxrTargets-release.cmake +++ b/building/macOS/pxr-houdini/pxrTargets-release.cmake @@ -118,16 +118,6 @@ set_target_properties(sdf PROPERTIES list(APPEND _IMPORT_CHECK_TARGETS sdf ) list(APPEND _IMPORT_CHECK_FILES_FOR_sdf "${_LIB_PREFIX}/libpxr_sdf.dylib" ) -# Import target "ndr" for configuration "Release" -set_property(TARGET ndr APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) -set_target_properties(ndr PROPERTIES - IMPORTED_LOCATION_RELEASE "${_LIB_PREFIX}/libpxr_ndr.dylib" - IMPORTED_SONAME_RELEASE "libpxr_ndr.dylib" - ) - -list(APPEND _IMPORT_CHECK_TARGETS ndr ) -list(APPEND _IMPORT_CHECK_FILES_FOR_ndr "${_LIB_PREFIX}/libpxr_ndr.dylib" ) - # Import target "sdr" for configuration "Release" set_property(TARGET sdr APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) set_target_properties(sdr PROPERTIES @@ -378,6 +368,23 @@ set_target_properties(hd PROPERTIES list(APPEND _IMPORT_CHECK_TARGETS hd ) list(APPEND _IMPORT_CHECK_FILES_FOR_hd "${_LIB_PREFIX}/libpxr_hd.dylib" ) +# Import target "hdSt" for configuration "Release" +set_property(TARGET hdsi APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) +set_target_properties(hdsi PROPERTIES + IMPORTED_LOCATION_RELEASE "${_LIB_PREFIX}/libpxr_hdsi.dylib" + IMPORTED_SONAME_RELEASE "libpxr_hdsi.dylib" + ) +list(APPEND _IMPORT_CHECK_TARGETS hdsi ) +list(APPEND _IMPORT_CHECK_FILES_FOR_hdsi "${_LIB_PREFIX}/libpxr_hdsi.dylib" ) + +set_property(TARGET hdMtlx APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) +set_target_properties(hdMtlx PROPERTIES + IMPORTED_LOCATION_RELEASE "${_LIB_PREFIX}/libpxr_hdMtlx.dylib" + IMPORTED_SONAME_RELEASE "libpxr_hdMtlx.dylib" + ) +list(APPEND _IMPORT_CHECK_TARGETS hdMtlx ) +list(APPEND _IMPORT_CHECK_FILES_FOR_hdMtlx "${_LIB_PREFIX}/libpxr_hdMtlx.dylib" ) + # Import target "hdSt" for configuration "Release" set_property(TARGET hdSt APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) set_target_properties(hdSt PROPERTIES @@ -398,6 +405,15 @@ set_target_properties(hdx PROPERTIES list(APPEND _IMPORT_CHECK_TARGETS hdx ) list(APPEND _IMPORT_CHECK_FILES_FOR_hdx "${_LIB_PREFIX}/libpxr_hdx.dylib" ) +# Import target "usdImaging" for configuration "Release" +set_property(TARGET usdMtlx APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) +set_target_properties(usdMtlx PROPERTIES + IMPORTED_LOCATION_RELEASE "${_LIB_PREFIX}/libpxr_usdMtlx.dylib" + IMPORTED_SONAME_RELEASE "libpxr_usdMtlx.dylib" + ) +list(APPEND _IMPORT_CHECK_TARGETS usdMtlx ) +list(APPEND _IMPORT_CHECK_FILES_FOR_usdMtlx "${_LIB_PREFIX}/libpxr_usdMtlx.dylib" ) + # Import target "usdImaging" for configuration "Release" set_property(TARGET usdImaging APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) set_target_properties(usdImaging PROPERTIES @@ -418,16 +434,6 @@ set_target_properties(usdImagingGL PROPERTIES list(APPEND _IMPORT_CHECK_TARGETS usdImagingGL ) list(APPEND _IMPORT_CHECK_FILES_FOR_usdImagingGL "${_LIB_PREFIX}/libpxr_usdImagingGL.dylib" ) -# Import target "usdRiImaging" for configuration "Release" -set_property(TARGET usdRiImaging APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) -set_target_properties(usdRiImaging PROPERTIES - IMPORTED_LOCATION_RELEASE "${_LIB_PREFIX}/libpxr_usdRiImaging.dylib" - IMPORTED_SONAME_RELEASE "libpxr_usdRiImaging.dylib" - ) - -list(APPEND _IMPORT_CHECK_TARGETS usdRiImaging ) -list(APPEND _IMPORT_CHECK_FILES_FOR_usdRiImaging "${_LIB_PREFIX}/libpxr_usdRiImaging.dylib" ) - # Import target "usdSkelImaging" for configuration "Release" set_property(TARGET usdSkelImaging APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) set_target_properties(usdSkelImaging PROPERTIES diff --git a/building/macOS/pxr-houdini/pxrTargets.cmake b/building/macOS/pxr-houdini/pxrTargets.cmake index f3cd6feb..adfbb7aa 100644 --- a/building/macOS/pxr-houdini/pxrTargets.cmake +++ b/building/macOS/pxr-houdini/pxrTargets.cmake @@ -17,14 +17,14 @@ cmake_policy(VERSION 2.6...3.21) # Commands may need to know the format version. set(CMAKE_IMPORT_FILE_VERSION 1) -SET(HPYTHONLIB $ENV{HOUDINI_INSTALL_DIR}/Frameworks/Python.framework/Versions/3.9/lib/libpython3.9.dylib) -SET(HPYTHONINC $ENV{HOUDINI_INSTALL_DIR}/Frameworks/Python.framework/Versions/3.9/include/python3.9) +SET(HPYTHONLIB $ENV{HOUDINI_INSTALL_DIR}/Frameworks/Python.framework/Versions/3.13/lib/libpython3.13.dylib) +SET(HPYTHONINC $ENV{HOUDINI_INSTALL_DIR}/Frameworks/Python.framework/Versions/3.13/include/python3.13) # Protect against multiple inclusion, which would fail when already imported targets are added once more. set(_targetsDefined) set(_targetsNotDefined) set(_expectedTargets) -foreach(_expectedTarget arch tf gf js trace work plug vt ar kind sdf ndr sdr pcp usd usdGeom usdVol usdMedia usdShade usdLux usdRender usdHydra usdRi usdSkel usdUI usdUtils usdPhysics garch hf hio cameraUtil pxOsd glf hgi hgiGL hgiInterop hd hdSt hdx usdImaging usdImagingGL usdRiImaging usdSkelImaging usdVolImaging usdAppUtils usdviewq) +foreach(_expectedTarget arch tf gf js trace work plug vt ar kind sdf sdr pcp usd usdGeom usdVol usdMedia usdShade usdLux usdRender usdHydra usdRi usdSkel usdUI usdUtils usdPhysics garch hf hio cameraUtil pxOsd glf hgi hgiGL hgiInterop hd hdsi hdSt hdx hdMtlx usdImaging usdImagingGL usdSkelImaging usdVolImaging usdAppUtils usdMtlx usdviewq) list(APPEND _expectedTargets ${_expectedTarget}) if(NOT TARGET ${_expectedTarget}) list(APPEND _targetsNotDefined ${_expectedTarget}) @@ -161,23 +161,13 @@ set_target_properties(sdf PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_DEPS_PREFIX}/include" ) -# Create imported target ndr -add_library(ndr SHARED IMPORTED) - -set_target_properties(ndr PROPERTIES - INTERFACE_COMPILE_DEFINITIONS "PXR_PYTHON_ENABLED=1" - INTERFACE_INCLUDE_DIRECTORIES "${_INCLUDE_PREFIX}" - INTERFACE_LINK_LIBRARIES "tf;plug;vt;work;ar;sdf;${_BOOST_PYTHON_LIB}" - INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_DEPS_PREFIX}/include" -) - # Create imported target sdr add_library(sdr SHARED IMPORTED) set_target_properties(sdr PROPERTIES INTERFACE_COMPILE_DEFINITIONS "PXR_PYTHON_ENABLED=1" INTERFACE_INCLUDE_DIRECTORIES "${_INCLUDE_PREFIX}" - INTERFACE_LINK_LIBRARIES "tf;vt;ar;ndr;sdf;${_BOOST_PYTHON_LIB}" + INTERFACE_LINK_LIBRARIES "tf;vt;ar;sdf;${_BOOST_PYTHON_LIB}" INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_DEPS_PREFIX}/include" ) @@ -235,7 +225,7 @@ add_library(usdShade SHARED IMPORTED) set_target_properties(usdShade PROPERTIES INTERFACE_COMPILE_DEFINITIONS "PXR_PYTHON_ENABLED=1" INTERFACE_INCLUDE_DIRECTORIES "${_INCLUDE_PREFIX}" - INTERFACE_LINK_LIBRARIES "tf;vt;sdf;ndr;sdr;usd;usdGeom" + INTERFACE_LINK_LIBRARIES "tf;vt;sdf;sdr;usd;usdGeom" ) # Create imported target usdLux @@ -244,7 +234,7 @@ add_library(usdLux SHARED IMPORTED) set_target_properties(usdLux PROPERTIES INTERFACE_COMPILE_DEFINITIONS "PXR_PYTHON_ENABLED=1" INTERFACE_INCLUDE_DIRECTORIES "${_INCLUDE_PREFIX}" - INTERFACE_LINK_LIBRARIES "tf;vt;ndr;sdf;usd;usdGeom;usdShade" + INTERFACE_LINK_LIBRARIES "tf;vt;sdf;usd;usdGeom;usdShade" ) # Create imported target usdRender @@ -409,6 +399,26 @@ set_target_properties(hd PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_DEPS_PREFIX}/include" ) +# Create imported target hdSt +add_library(hdsi SHARED IMPORTED) + +set_target_properties(hdsi PROPERTIES + INTERFACE_COMPILE_DEFINITIONS "PXR_PYTHON_ENABLED=1" + INTERFACE_INCLUDE_DIRECTORIES "${_INCLUDE_PREFIX}" + INTERFACE_LINK_LIBRARIES "hd;tf;plug;vt;sdf;usd;usdGeom;usdShade;usdImaging" + INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_DEPS_PREFIX}/include" +) + +# Create imported target hdMtlx +add_library(hdMtlx SHARED IMPORTED) + +set_target_properties(hdMtlx PROPERTIES + INTERFACE_COMPILE_DEFINITIONS "PXR_PYTHON_ENABLED=1" + INTERFACE_INCLUDE_DIRECTORIES "${_INCLUDE_PREFIX}" + INTERFACE_LINK_LIBRARIES "hd;hdsi;sdr;usd;usdShade;usdMtlx" + INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_DEPS_PREFIX}/include" +) + # Create imported target hdSt add_library(hdSt SHARED IMPORTED) @@ -428,6 +438,16 @@ set_target_properties(hdx PROPERTIES INTERFACE_LINK_LIBRARIES "plug;tf;vt;gf;work;garch;glf;pxOsd;hd;hdSt;hgi;hgiInterop;cameraUtil;sdf" ) +# Create imported target usdImaging +add_library(usdMtlx SHARED IMPORTED) + +set_target_properties(usdMtlx PROPERTIES + INTERFACE_COMPILE_DEFINITIONS "PXR_PYTHON_ENABLED=1" + INTERFACE_INCLUDE_DIRECTORIES "${_INCLUDE_PREFIX}" + INTERFACE_LINK_LIBRARIES "usd;usdShade;usdGeom;${_BOOST_PYTHON_LIB}" + INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_DEPS_PREFIX}/include" +) + # Create imported target usdImaging add_library(usdImaging SHARED IMPORTED) @@ -448,16 +468,6 @@ set_target_properties(usdImagingGL PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${HPYTHONINC};${_DEPS_PREFIX}/include" ) -# Create imported target usdRiImaging -add_library(usdRiImaging SHARED IMPORTED) - -set_target_properties(usdRiImaging PROPERTIES - INTERFACE_COMPILE_DEFINITIONS "PXR_PYTHON_ENABLED=1" - INTERFACE_INCLUDE_DIRECTORIES "${_INCLUDE_PREFIX}" - INTERFACE_LINK_LIBRARIES "gf;tf;plug;trace;vt;work;hd;pxOsd;sdf;usd;usdGeom;usdLux;usdShade;usdImaging;usdVol;ar;${_DEPS_PREFIX}/lib/libtbb${CMAKE_SHARED_LIBRARY_SUFFIX}" - INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_DEPS_PREFIX}/include" -) - # Create imported target usdSkelImaging add_library(usdSkelImaging SHARED IMPORTED) @@ -491,9 +501,9 @@ add_library(usdviewq SHARED IMPORTED) set_target_properties(usdviewq PROPERTIES INTERFACE_COMPILE_DEFINITIONS "PXR_PYTHON_ENABLED=1" - INTERFACE_INCLUDE_DIRECTORIES "${_INCLUDE_PREFIX}" - INTERFACE_LINK_LIBRARIES "tf;usd;usdGeom;${_BOOST_PYTHON_LIB}" - INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_DEPS_PREFIX}/include" + INTERFACE_INCLUDE_DIRECTORIES "${_INCLUDE_PREFIX};${HPYTHONINC}" + INTERFACE_LINK_LIBRARIES "tf;usd;usdGeom;hd;${_BOOST_PYTHON_LIB};${HPYTHONLIB}" + INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${HPYTHONINC};${_DEPS_PREFIX}/include" ) if(CMAKE_VERSION VERSION_LESS 2.8.12) diff --git a/building/macOS/user-config.jam b/building/macOS/user-config.jam index dd729f78..bf3dd2aa 100644 --- a/building/macOS/user-config.jam +++ b/building/macOS/user-config.jam @@ -1,6 +1,6 @@ -using python : 3.9 - : "/Library/Developer/CommandLineTools/usr/bin/python3" - : "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/Headers" - : "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib" +using python : 3.13 + : "/Applications/Houdini/Houdini22.0.408/Frameworks/Python.framework/Versions/3.13/Resources/Python.app/Contents/MacOS/Python" + : "/Applications/Houdini/Houdini22.0.408/Frameworks/Python.framework/Versions/3.13/include/python3.13" + : "/Applications/Houdini/Houdini22.0.408/Frameworks/Python.framework/Versions/3.13/lib" ; using clang : : : -"arch arm64" "-arch arm64" ; diff --git a/moonray/hydra/CMakeLists.txt b/moonray/hydra/CMakeLists.txt index d088089e..7efbd028 100644 --- a/moonray/hydra/CMakeLists.txt +++ b/moonray/hydra/CMakeLists.txt @@ -2,4 +2,7 @@ # SPDX-License-Identifier: Apache-2.0 add_subdirectory(hdMoonray) -add_subdirectory(moonray_sdr_plugins) +option(BUILD_MOONRAY_SDR_PLUGINS "Build the legacy MoonRay SDR plugins" ON) +if(BUILD_MOONRAY_SDR_PLUGINS) + add_subdirectory(moonray_sdr_plugins) +endif() diff --git a/moonray/hydra/hdMoonray b/moonray/hydra/hdMoonray index 986121db..78a7dbd7 160000 --- a/moonray/hydra/hdMoonray +++ b/moonray/hydra/hdMoonray @@ -1 +1 @@ -Subproject commit 986121dbb8817237c02a254d0c4470b5eb820f9e +Subproject commit 78a7dbd744717a9dba18aecd0c93259bb8845be8 diff --git a/moonray/hydra/moonray_sdr_plugins b/moonray/hydra/moonray_sdr_plugins index 36a097e8..d0630763 160000 --- a/moonray/hydra/moonray_sdr_plugins +++ b/moonray/hydra/moonray_sdr_plugins @@ -1 +1 @@ -Subproject commit 36a097e8d2796e138d0720a47b2ce79f89931af7 +Subproject commit d0630763057a7aab0ce2aa6a63884fc4c29d12bd diff --git a/moonray/materialx_shaders b/moonray/materialx_shaders index 9b83c005..6f7666d7 160000 --- a/moonray/materialx_shaders +++ b/moonray/materialx_shaders @@ -1 +1 @@ -Subproject commit 9b83c0051418e09869c14e2a86abe788a7ab7dca +Subproject commit 6f7666d746ad37c0dfccd7abc55d77fcc8ec7b88 diff --git a/moonray/moonray b/moonray/moonray index eef67ae9..a5362140 160000 --- a/moonray/moonray +++ b/moonray/moonray @@ -1 +1 @@ -Subproject commit eef67ae992b5037943a7716cca96ed443c36dcec +Subproject commit a53621400a6852fd7f59550e74fc0f9abf70b45f diff --git a/moonray/moonray_dcc_plugins b/moonray/moonray_dcc_plugins index 5e19b0d8..3d542dc4 160000 --- a/moonray/moonray_dcc_plugins +++ b/moonray/moonray_dcc_plugins @@ -1 +1 @@ -Subproject commit 5e19b0d8ef9afa37e7db437bde8e12960ff493b3 +Subproject commit 3d542dc4ce996835bf694bf975644a7e4ebdb8e6 diff --git a/moonray/moonshine b/moonray/moonshine index a3c86672..c28fe131 160000 --- a/moonray/moonshine +++ b/moonray/moonshine @@ -1 +1 @@ -Subproject commit a3c8667298a23df7d6efed128cb475484de66c8e +Subproject commit c28fe1315eb87db58ba6af912b29a0d45913d286 diff --git a/moonray/scene_rdl2 b/moonray/scene_rdl2 index 1229d3ea..346494ed 160000 --- a/moonray/scene_rdl2 +++ b/moonray/scene_rdl2 @@ -1 +1 @@ -Subproject commit 1229d3eaa1ee41dc1ddefbe781c623edceafbac8 +Subproject commit 346494edb2c99f027d555bde4bf291b0405e6c19 diff --git a/scripts/macOS/setupHoudini.sh b/scripts/macOS/setupHoudini.sh index 6bfc563d..9461a5ab 100644 --- a/scripts/macOS/setupHoudini.sh +++ b/scripts/macOS/setupHoudini.sh @@ -1,6 +1,6 @@ omr_install_dir=/Applications/MoonRay/installs/openmoonray -# save/restore PYTHONPATH, since Houdini seems to reject python3.9 +# save/restore PYTHONPATH, since Houdini supplies its own Python runtime OLDPP=${PYTHONPATH} source ${omr_install_dir}/scripts/setup.sh export PYTHONPATH=${OLDPP} @@ -17,4 +17,4 @@ export PXR_PLUGINPATH_NAME=${omr_install_dir}/plugin/pxr # export HOUDINI_PACKAGE_VERBOSE=1 export HOUDINI_OTLSCAN_PATH="${omr_install_dir}/plugin/houdini/otls:&" -export HOUDINI_PATH="${omr_install_dir}/houdini/:${omr_install_dir}/plugin/houdini:&" \ No newline at end of file +export HOUDINI_PATH="${omr_install_dir}/houdini/:${omr_install_dir}/plugin/houdini:&" diff --git a/scripts/setup.sh b/scripts/setup.sh index c56faf68..0544e7d7 100644 --- a/scripts/setup.sh +++ b/scripts/setup.sh @@ -25,8 +25,9 @@ echo "Setting up release in ${omr_root}" # NB required for Arras to function (it needs to find execComp) export PATH=${omr_root}/bin:${PATH} -# need python modules for the USD interface and for the RATS tests -export PYTHONPATH=${install_root}/lib/python:/usr/local/lib/python:${install_root}/lib64/python3.9/site-packages/:${PYTHONPATH} +# Need Python modules for the USD interface and the RATS tests. The macOS +# Houdini build installs its bindings for Python 3.13. +export PYTHONPATH=${omr_root}/python/lib/python3.13:${install_root}/lib/python3.13/site-packages:${install_root}/lib/python:/usr/local/lib/python:${PYTHONPATH} # tell moonray where to find dsos