#!/usr/bin/env bash set -euo pipefail repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" source "${repo_root}/tools/web/native-build-env.sh" export PKG_CONFIG_PATH="${repo_root}/tools/web/cmake/pkgconfig:${PKG_CONFIG_PATH:-}" : "${CC:=gcc-14}" : "${CXX:=g++-14}" command -v "${CC}" >/dev/null || { echo "missing ${CC}; install GCC 14 or set CC" >&2; exit 1; } command -v "${CXX}" >/dev/null || { echo "missing ${CXX}; install G++ 14 or set CXX" >&2; exit 1; } command -v cmake >/dev/null || { echo "missing cmake" >&2; exit 1; } command -v ninja >/dev/null || { echo "missing ninja" >&2; exit 1; } runtime_rpath="${BLENDER_PYTHON_ROOT}/lib" for dependency in openvdb openimageio opencolorio openexr imath openjph tbb zstd fmt pugixml; do if [[ -d "${BLENDER_DEPS_ROOT}/${dependency}/lib" ]]; then runtime_rpath+=";${BLENDER_DEPS_ROOT}/${dependency}/lib" fi done cmake_args=( -S "${BLENDER_SOURCE_DIR}" -B "${BLENDER_BUILD_DIR}" -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER="$(command -v "${CC}")" -DCMAKE_CXX_COMPILER="$(command -v "${CXX}")" -DCMAKE_BUILD_RPATH="${runtime_rpath}" -DCMAKE_INSTALL_RPATH="${runtime_rpath}" -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON -DWITH_LIBS_PRECOMPILED=OFF -DCMAKE_PREFIX_PATH="${BLENDER_DEPS_ROOT}/openimageio;${BLENDER_DEPS_ROOT}/opencolorio;${BLENDER_DEPS_ROOT}/openexr;${BLENDER_DEPS_ROOT}/imath;${BLENDER_DEPS_ROOT}/openjph;${BLENDER_DEPS_ROOT}/fmt;${BLENDER_DEPS_ROOT}/tbb;${BLENDER_DEPS_ROOT}/zstd;${BLENDER_DEPS_ROOT}/pugixml;${BLENDER_DEPS_ROOT}/openvdb" -DWITH_INSTALL_PORTABLE=ON -DWITH_PYTHON=ON -DWITH_PYTHON_NUMPY=ON -DWITH_PYTHON_INSTALL_NUMPY=ON -DWITH_PYTHON_INSTALL_REQUESTS=ON -DWITH_PYTHON_INSTALL_ZSTANDARD=ON -DWITH_SYSTEM_GFLAGS=ON -DWITH_SYSTEM_GLOG=ON -DWITH_CODEC_FFMPEG=ON -DOpenColorIO_DIR="${BLENDER_DEPS_ROOT}/opencolorio/lib/cmake/OpenColorIO" -DOpenImageIO_DIR="${BLENDER_DEPS_ROOT}/openimageio/lib/cmake/OpenImageIO" -DOpenEXR_DIR="${BLENDER_DEPS_ROOT}/openexr/lib/cmake/OpenEXR" -Dfmt_DIR="${BLENDER_DEPS_ROOT}/fmt/lib/cmake/fmt" -DVULKAN_INCLUDE_DIRS="${BLENDER_DEPS_ROOT}/vulkan_headers/include" -DSHADERC_ROOT_DIR="${BLENDER_DEPS_ROOT}/shaderc" -DSHADERC_INCLUDE_DIRS:PATH="${BLENDER_DEPS_ROOT}/shaderc/include" -DSHADERC_LIBRARIES:STRING="${BLENDER_DEPS_ROOT}/shaderc/lib/libshaderc_combined.a;${BLENDER_DEPS_ROOT}/shaderc/lib/libSPIRV-Tools-opt.a;${BLENDER_DEPS_ROOT}/shaderc/lib/libSPIRV-Tools.a" ) # Python 3.13 is required by the Blender 5.2 source tree. A source-built # interpreter can be supplied through BLENDER_PYTHON_ROOT; otherwise CMake # reports the missing development files without silently selecting Python 3.12. if [[ -x "${BLENDER_PYTHON_ROOT}/bin/python3.13" && -f "${BLENDER_PYTHON_ROOT}/lib/libpython3.13.so" ]]; then cmake_args+=( -DPYTHON_VERSION=3.13 -DPYTHON_EXECUTABLE="${BLENDER_PYTHON_ROOT}/bin/python3.13" -DPYTHON_LIBRARY="${BLENDER_PYTHON_ROOT}/lib/libpython3.13.so" -DPYTHON_LIBPATH="${BLENDER_PYTHON_ROOT}/lib" -DPYTHON_INCLUDE_DIR="${BLENDER_PYTHON_ROOT}/include/python3.13" -DPYTHON_INCLUDE_CONFIG_DIR="${BLENDER_PYTHON_ROOT}/include/python3.13" ) else echo "BLENDER_PYTHON_ROOT must contain a source-built Python 3.13 installation:" >&2 echo " ${BLENDER_PYTHON_ROOT}/bin/python3.13" >&2 echo " ${BLENDER_PYTHON_ROOT}/lib/libpython3.13.so" >&2 exit 2 fi cmake "${cmake_args[@]}" "$@" printf 'native-configured source=%s build=%s compiler=%s\n' \ "${BLENDER_SOURCE_DIR}" "${BLENDER_BUILD_DIR}" "${CXX}"