Files
workinf_Blender_Wasm/tools/web/configure-blender-native.sh
mes123456 c2c65d3a09
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled
Rebuild local Blender WASM environment and recovery evidence
2026-08-27 20:22:15 +08:00

75 lines
3.5 KiB
Bash
Executable File

#!/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}"