75 lines
3.5 KiB
Bash
Executable File
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}"
|