mirror of
https://github.com/blender/blender
synced 2026-09-29 04:37:17 +03:00
Build: Library changes for Blender 5.1
This commit includes new minimum compiler requirements for Blender 5.1 as well as updated and new libraries. **New compiler requirements** * Windows x64: Visual Studio 2022 (17.14.14 or newer) * Windows arm64: Visual Studio 2022 (17.14.23 or newer) * Linux x64: gcc 14 (when used with our libraries) **New libraries** Abseil 20250814.1 ThorVG 1.0.0-pre31 OpenJPH 0.25.2 **Updated libraries** AOM 3.13.1 Expat 2.7.2 FFI 3.5.2 HIPRT 606b4886efabce918dd0634ef71c06615a47c83b Imath 3.2.2 ISPC 1.29.1 libheif 1.20.2 MaterialX 1.39.4 MESON 1.9.0 minizip-ng 4.0.10 Numpy 2.3.4 oneAPI Level Zero 1.21.9 OneTBB 2022.3.0 OpenColorIO 2.5.0 OpenEXR 3.4.3 OpenImageDenoise 2.4.1 OpenImageIO 3.1.7 OpenSubDiv 3.7.0 OpenVDB 13.0.0 OpenXR 1.1.53 PIP 25.2 Python 3.13.9 ShaderC 2025.4 Vulkan 1.4.328 webp 1.6.0 Yaml CPP 0.8.0 ZSTD 1.5.7 (z-standard 0.25.0) **Library changes** FMT (moved from /extern to libs) Ceres (updated version in lib, will be removed from /extern in a later commit) Eigen (updated version in lib, will be removed from /extern in a later commit)) Ref #147201 Co-authored-by: Nikita Sirgienko <nikita.sirgienko@intel.com> Co-authored-by: Ray Molenkamp <github@lazydodo.com> Co-authored-by: Sebastian Parborg <sebastian@blender.org> Co-authored-by: Anthony Roberts <anthony.roberts@linaro.org> Co-authored-by: Jonas Holzman <jonas@holzman.fr> Co-authored-by: Bart van der Braak <bart@blender.org> Pull Request: https://projects.blender.org/blender/blender/pulls/149852
This commit is contained in:
parent
e8674de08d
commit
f7d920a89b
173 changed files with 1653 additions and 10831 deletions
|
|
@ -347,17 +347,7 @@ Use the systems bullet library (currently unsupported due to missing features in
|
|||
mark_as_advanced(WITH_SYSTEM_BULLET)
|
||||
option(WITH_OPENCOLORIO "Enable OpenColorIO color management" ON)
|
||||
|
||||
set(_option_default ON)
|
||||
if(APPLE)
|
||||
# There's no OpenXR runtime in sight for macOS, neither is code well
|
||||
# tested there -> disable it by default.
|
||||
set(_option_default OFF)
|
||||
endif()
|
||||
option(WITH_XR_OPENXR "Enable VR features through the OpenXR specification" ${_option_default})
|
||||
if(APPLE)
|
||||
mark_as_advanced(WITH_XR_OPENXR)
|
||||
endif()
|
||||
unset(_option_default)
|
||||
option(WITH_XR_OPENXR "Enable VR features through the OpenXR specification" ON)
|
||||
|
||||
option(WITH_GMP "Enable features depending on GMP (Exact Boolean)" ON)
|
||||
option(WITH_MANIFOLD "Enable features depending on Manifold (Fast Robust Boolean)" ON)
|
||||
|
|
@ -1471,10 +1461,10 @@ if(WITH_PYTHON)
|
|||
# Do this before main 'platform_*' checks,
|
||||
# because UNIX will search for the old Python paths which may not exist.
|
||||
# giving errors about missing paths before this case is met.
|
||||
if(DEFINED PYTHON_VERSION AND "${PYTHON_VERSION}" VERSION_LESS "3.11")
|
||||
if(DEFINED PYTHON_VERSION AND "${PYTHON_VERSION}" VERSION_LESS "3.13")
|
||||
message(
|
||||
FATAL_ERROR
|
||||
"At least Python 3.11 is required to build, but found Python ${PYTHON_VERSION}"
|
||||
"At least Python 3.13 is required to build, but found Python ${PYTHON_VERSION}"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
|
@ -2612,9 +2602,6 @@ if(WITH_PYTHON)
|
|||
elseif((WITH_PYTHON_INSTALL AND WITH_PYTHON_INSTALL_NUMPY) OR WITH_PYTHON_NUMPY)
|
||||
if(("${PYTHON_NUMPY_PATH}" STREQUAL "") OR (${PYTHON_NUMPY_PATH} MATCHES NOTFOUND))
|
||||
set(_numpy_include "_core/include")
|
||||
if(PYTHON_VERSION VERSION_LESS "3.13")
|
||||
set(_numpy_include "core/include")
|
||||
endif()
|
||||
find_python_package(numpy "${_numpy_include}")
|
||||
unset(_numpy_include)
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -85,8 +85,8 @@ include(cmake/haru.cmake)
|
|||
include(cmake/pugixml.cmake)
|
||||
include(cmake/fribidi.cmake)
|
||||
include(cmake/harfbuzz.cmake)
|
||||
include(cmake/xr_openxr.cmake)
|
||||
if(NOT APPLE)
|
||||
include(cmake/xr_openxr.cmake)
|
||||
if(NOT BLENDER_PLATFORM_ARM)
|
||||
include(cmake/hiprt.cmake)
|
||||
include(cmake/dpcpp.cmake)
|
||||
|
|
@ -123,6 +123,10 @@ include(cmake/pystring.cmake)
|
|||
include(cmake/yamlcpp.cmake)
|
||||
include(cmake/minizipng.cmake)
|
||||
include(cmake/opencolorio.cmake)
|
||||
include(cmake/openjph.cmake)
|
||||
include(cmake/thorvg.cmake)
|
||||
include(cmake/libheif.cmake)
|
||||
include(cmake/ffi.cmake)
|
||||
|
||||
if(BLENDER_PLATFORM_ARM)
|
||||
include(cmake/sse2neon.cmake)
|
||||
|
|
@ -138,6 +142,7 @@ if(NOT WIN32 OR ENABLE_MSYS2)
|
|||
include(cmake/openjpeg.cmake)
|
||||
include(cmake/sqlite.cmake)
|
||||
include(cmake/fftw.cmake)
|
||||
include(cmake/aom.cmake)
|
||||
if(NOT WIN32 OR BUILD_MODE STREQUAL Release)
|
||||
include(cmake/openimagedenoise.cmake)
|
||||
include(cmake/lame.cmake)
|
||||
|
|
@ -148,7 +153,6 @@ if(NOT WIN32 OR ENABLE_MSYS2)
|
|||
include(cmake/vpx.cmake)
|
||||
include(cmake/x264.cmake)
|
||||
include(cmake/x265.cmake)
|
||||
include(cmake/aom.cmake)
|
||||
include(cmake/ffmpeg.cmake)
|
||||
include(cmake/flac.cmake)
|
||||
include(cmake/sndfile.cmake)
|
||||
|
|
@ -162,7 +166,6 @@ endif()
|
|||
|
||||
if(UNIX)
|
||||
include(cmake/bzip2.cmake)
|
||||
include(cmake/ffi.cmake)
|
||||
include(cmake/lzma.cmake)
|
||||
endif()
|
||||
|
||||
|
|
@ -183,6 +186,9 @@ include(cmake/pybind11.cmake)
|
|||
include(cmake/nanobind.cmake)
|
||||
include(cmake/manifold.cmake)
|
||||
include(cmake/rubberband.cmake)
|
||||
include(cmake/abseil.cmake)
|
||||
include(cmake/eigen.cmake)
|
||||
include(cmake/ceres.cmake)
|
||||
# Keep these last.
|
||||
include(cmake/deps_html.cmake)
|
||||
include(cmake/cve_check.cmake)
|
||||
|
|
|
|||
21
build_files/build_environment/cmake/abseil.cmake
Normal file
21
build_files/build_environment/cmake/abseil.cmake
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
# SPDX-FileCopyrightText: 2025 Blender Authors
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
set(ABSEIL_EXTRA_ARGS
|
||||
)
|
||||
|
||||
ExternalProject_Add(external_abseil
|
||||
URL file://${PACKAGE_DIR}/${ABSEIL_FILE}
|
||||
URL_HASH ${ABSEIL_HASH_TYPE}=${ABSEIL_HASH}
|
||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
PREFIX ${BUILD_DIR}/abseil
|
||||
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
|
||||
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${LIBDIR}/abseil
|
||||
${DEFAULT_CMAKE_FLAGS}
|
||||
${ABSEIL_EXTRA_ARGS}
|
||||
|
||||
INSTALL_DIR ${LIBDIR}/abseil
|
||||
)
|
||||
|
|
@ -13,37 +13,77 @@ set(AOM_EXTRA_ARGS
|
|||
-DENABLE_TESTS=OFF
|
||||
-DENABLE_TOOLS=OFF
|
||||
-DENABLE_EXAMPLES=OFF
|
||||
-DBUILD_SHARED_LIBS=ON
|
||||
${AOM_EXTRA_ARGS_WIN32}
|
||||
)
|
||||
if(WIN32 AND NOT BLENDER_PLATFORM_WINDOWS_ARM)
|
||||
set(AOM_EXTRA_ARGS ${AOM_EXTRA_ARGS}-DCMAKE_ASM_NASM_COMPILER=)
|
||||
endif()
|
||||
|
||||
# This is slightly different from all other deps in the way that
|
||||
# aom uses cmake as a build system, but still needs the environment setup
|
||||
# to include perl so we manually setup the environment and call
|
||||
# cmake directly for the configure, build and install commands.
|
||||
if(WIN32)
|
||||
# This is slightly different from all other deps in the way that
|
||||
# aom uses cmake as a build system, but still needs the environment setup
|
||||
# to include perl so we manually setup the environment and call
|
||||
# cmake directly for the configure, build and install commands.
|
||||
|
||||
ExternalProject_Add(external_aom
|
||||
URL file://${PACKAGE_DIR}/${AOM_FILE}
|
||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
URL_HASH ${AOM_HASH_TYPE}=${AOM_HASH}
|
||||
PREFIX ${BUILD_DIR}/aom
|
||||
ExternalProject_Add(external_aom
|
||||
URL file://${PACKAGE_DIR}/${AOM_FILE}
|
||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
URL_HASH ${AOM_HASH_TYPE}=${AOM_HASH}
|
||||
PREFIX ${BUILD_DIR}/aom
|
||||
|
||||
PATCH_COMMAND ${PATCH_CMD} --verbose -p 1 -N -d
|
||||
${BUILD_DIR}/aom/src/external_aom <
|
||||
${PATCH_DIR}/aom.diff
|
||||
PATCH_COMMAND ${PATCH_CMD} --verbose -p 1 -N -d
|
||||
${BUILD_DIR}/aom/src/external_aom <
|
||||
${PATCH_DIR}/aom_6d2b7f71b98bfa28e372b1f2d85f137280bdb3de.diff
|
||||
|
||||
CONFIGURE_COMMAND ${CONFIGURE_ENV} &&
|
||||
cd ${BUILD_DIR}/aom/src/external_aom-build/ &&
|
||||
${CMAKE_COMMAND}
|
||||
CONFIGURE_COMMAND ${CONFIGURE_ENV} &&
|
||||
cd ${BUILD_DIR}/aom/src/external_aom-build/ &&
|
||||
${CMAKE_COMMAND}
|
||||
-DCMAKE_INSTALL_PREFIX=${LIBDIR}/aom
|
||||
-G "${PLATFORM_ALT_GENERATOR}"
|
||||
${AOM_CMAKE_FLAGS}
|
||||
${AOM_EXTRA_ARGS}
|
||||
${BUILD_DIR}/aom/src/external_aom/
|
||||
|
||||
BUILD_COMMAND ${CMAKE_COMMAND} --build .
|
||||
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install
|
||||
INSTALL_DIR ${LIBDIR}/aom
|
||||
)
|
||||
else()
|
||||
ExternalProject_Add(external_aom
|
||||
URL file://${PACKAGE_DIR}/${AOM_FILE}
|
||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
URL_HASH ${AOM_HASH_TYPE}=${AOM_HASH}
|
||||
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
|
||||
PREFIX ${BUILD_DIR}/aom
|
||||
|
||||
PATCH_COMMAND ${PATCH_CMD} --verbose -p 1 -N -d
|
||||
${BUILD_DIR}/aom/src/external_aom <
|
||||
${PATCH_DIR}/aom_6d2b7f71b98bfa28e372b1f2d85f137280bdb3de.diff
|
||||
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${LIBDIR}/aom
|
||||
${AOM_CMAKE_FLAGS}
|
||||
${AOM_EXTRA_ARGS}
|
||||
${BUILD_DIR}/aom/src/external_aom/
|
||||
|
||||
BUILD_COMMAND ${CMAKE_COMMAND} --build .
|
||||
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install
|
||||
INSTALL_DIR ${LIBDIR}/aom
|
||||
)
|
||||
INSTALL_DIR ${LIBDIR}/aom
|
||||
)
|
||||
endif()
|
||||
|
||||
if(NOT WIN32)
|
||||
harvest(external_aom aom/lib ffmpeg/lib "*.a")
|
||||
else()
|
||||
# aom insists on building a static version even if you
|
||||
# do not want it, get rid of it by coping the import lib
|
||||
# on top of it, so other projects don't accidentally link
|
||||
# the static library.
|
||||
ExternalProject_Add_Step(external_aom after_install
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${LIBDIR}/aom/lib/aom_dll.lib
|
||||
${LIBDIR}/aom/lib/aom.lib
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
${LIBDIR}/aom/
|
||||
${HARVEST_TARGET}/aom/
|
||||
DEPENDEES install
|
||||
)
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ ExternalProject_Add(external_blosc
|
|||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
URL_HASH ${BLOSC_HASH_TYPE}=${BLOSC_HASH}
|
||||
PREFIX ${BUILD_DIR}/blosc
|
||||
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
|
||||
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${LIBDIR}/blosc
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ ExternalProject_Add(external_brotli
|
|||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
URL_HASH ${BROTLI_HASH_TYPE}=${BROTLI_HASH}
|
||||
PREFIX ${BUILD_DIR}/brotli
|
||||
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
|
||||
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${LIBDIR}/brotli
|
||||
|
|
|
|||
41
build_files/build_environment/cmake/ceres.cmake
Normal file
41
build_files/build_environment/cmake/ceres.cmake
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
# SPDX-FileCopyrightText: 2025 Blender Authors
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
set(CERES_EXTRA_ARGS
|
||||
-Dabsl_DIR=${LIBDIR}/abseil/lib/cmake/absl/
|
||||
-DEigen3_DIR=${LIBDIR}/eigen/share/eigen3/cmake/
|
||||
-DTBB_DIR=${LIBDIR}/tbb/lib/cmake/TBB
|
||||
-DBUILD_TESTING=OFF
|
||||
-DUSE_CUDA=OFF
|
||||
-DBUILD_EXAMPLES=OFF
|
||||
-DBUILD_SHARED_LIBS=ON
|
||||
)
|
||||
|
||||
ExternalProject_Add(external_ceres
|
||||
URL file://${PACKAGE_DIR}/${CERES_FILE}
|
||||
URL_HASH ${CERES_HASH_TYPE}=${CERES_HASH}
|
||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
PREFIX ${BUILD_DIR}/ceres
|
||||
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
|
||||
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${LIBDIR}/ceres
|
||||
${DEFAULT_CMAKE_FLAGS}
|
||||
${CERES_EXTRA_ARGS}
|
||||
|
||||
INSTALL_DIR ${LIBDIR}/ceres
|
||||
)
|
||||
|
||||
add_dependencies(
|
||||
external_ceres
|
||||
external_abseil
|
||||
external_eigen
|
||||
)
|
||||
|
||||
ExternalProject_Add_Step(external_ceres after_install
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
${LIBDIR}/ceres
|
||||
${HARVEST_TARGET}/ceres
|
||||
DEPENDEES install
|
||||
)
|
||||
|
|
@ -38,4 +38,5 @@ ExternalProject_Add(external_cython
|
|||
add_dependencies(
|
||||
external_cython
|
||||
external_python
|
||||
external_python_site_packages
|
||||
)
|
||||
|
|
|
|||
|
|
@ -189,3 +189,9 @@ download_source(HIPRT)
|
|||
download_source(NANOBIND)
|
||||
download_source(MANIFOLD)
|
||||
download_source(RUBBERBAND)
|
||||
download_source(OPENJPH)
|
||||
download_source(THORVG)
|
||||
download_source(LIBHEIF)
|
||||
download_source(ABSEIL)
|
||||
download_source(EIGEN)
|
||||
download_source(CERES)
|
||||
|
|
@ -2,10 +2,7 @@
|
|||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
# LLVM does not switch over to cpp17 until llvm 16 and building earlier versions with
|
||||
# MSVC is leading to some crashes in ISPC. Switch back to their default on all platforms
|
||||
# for now.
|
||||
string(REPLACE "-DCMAKE_CXX_STANDARD=17" " " DPCPP_CMAKE_FLAGS "${DEFAULT_CMAKE_FLAGS}")
|
||||
string(REPLACE "-DCMAKE_CXX_STANDARD=20" " " DPCPP_CMAKE_FLAGS "${DEFAULT_CMAKE_FLAGS}")
|
||||
|
||||
# DPCPP already generates debug libs, there isn't much point in compiling it in debug mode itself.
|
||||
string(REPLACE "-DCMAKE_BUILD_TYPE=Debug" "-DCMAKE_BUILD_TYPE=Release" DPCPP_CMAKE_FLAGS "${DPCPP_CMAKE_FLAGS}")
|
||||
|
|
@ -123,9 +120,10 @@ ExternalProject_Add(external_dpcpp
|
|||
# echo "." # ${PYTHON_BINARY} ${BUILD_DIR}/dpcpp/src/external_dpcpp/buildbot/compile.py
|
||||
INSTALL_COMMAND ${CMAKE_COMMAND} --build . -- deploy-sycl-toolchain
|
||||
|
||||
PATCH_COMMAND ${PATCH_CMD} -p 1 -d
|
||||
${BUILD_DIR}/dpcpp/src/external_dpcpp <
|
||||
${PATCH_DIR}/dpcpp.diff
|
||||
PATCH_COMMAND
|
||||
${PATCH_CMD} -p 1 -d
|
||||
${BUILD_DIR}/dpcpp/src/external_dpcpp <
|
||||
${PATCH_DIR}/dpcpp.diff
|
||||
|
||||
INSTALL_DIR ${LIBDIR}/dpcpp
|
||||
)
|
||||
|
|
|
|||
38
build_files/build_environment/cmake/eigen.cmake
Normal file
38
build_files/build_environment/cmake/eigen.cmake
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
# SPDX-FileCopyrightText: 2025 Blender Authors
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
set(EIGEN_EXTRA_ARGS
|
||||
-DBUILD_TESTING=OFF
|
||||
-DEIGEN_BUILD_DOC=OFF
|
||||
-DTBB_DIR=${LIBDIR}/tbb/lib/cmake/TBB
|
||||
)
|
||||
|
||||
ExternalProject_Add(external_eigen
|
||||
URL file://${PACKAGE_DIR}/${EIGEN_FILE}
|
||||
URL_HASH ${EIGEN_HASH_TYPE}=${EIGEN_HASH}
|
||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
PREFIX ${BUILD_DIR}/eigen
|
||||
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
|
||||
|
||||
PATCH_COMMAND ${PATCH_CMD} -p 1 -d
|
||||
${BUILD_DIR}/eigen/src/external_eigen <
|
||||
${PATCH_DIR}/eigen_tbb_support.diff
|
||||
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${LIBDIR}/eigen
|
||||
${DEFAULT_CMAKE_FLAGS}
|
||||
${EIGEN_EXTRA_ARGS}
|
||||
|
||||
INSTALL_DIR ${LIBDIR}/eigen
|
||||
)
|
||||
|
||||
# While C++ eigen is a header only library
|
||||
if(BUILD_MODE STREQUAL Release)
|
||||
ExternalProject_Add_Step(external_eigen after_install
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
${LIBDIR}/eigen
|
||||
${HARVEST_TARGET}/eigen
|
||||
DEPENDEES install
|
||||
)
|
||||
endif()
|
||||
|
|
@ -5,8 +5,6 @@
|
|||
# Note the utility apps may use png/tiff/gif system libraries, but the
|
||||
# library itself does not depend on them, so should give no problems.
|
||||
|
||||
set(EMBREE_CMAKE_FLAGS ${DEFAULT_CMAKE_FLAGS})
|
||||
|
||||
set(EMBREE_EXTRA_ARGS
|
||||
-DEMBREE_ISPC_SUPPORT=OFF
|
||||
-DEMBREE_TUTORIALS=OFF
|
||||
|
|
@ -16,7 +14,6 @@ set(EMBREE_EXTRA_ARGS
|
|||
-DEMBREE_BACKFACE_CULLING=OFF
|
||||
-DEMBREE_BACKFACE_CULLING_CURVES=ON
|
||||
-DEMBREE_BACKFACE_CULLING_SPHERES=ON
|
||||
-DEMBREE_NO_SPLASH=ON
|
||||
-DEMBREE_TASKING_SYSTEM=TBB
|
||||
-DEMBREE_TBB_ROOT=${LIBDIR}/tbb
|
||||
-DTBB_ROOT=${LIBDIR}/tbb
|
||||
|
|
@ -63,6 +60,8 @@ if(NOT APPLE AND NOT BLENDER_PLATFORM_ARM)
|
|||
${EMBREE_EXTRA_ARGS}
|
||||
)
|
||||
else()
|
||||
string(REPLACE "-DCMAKE_CXX_STANDARD=20" " " EMBREE_CMAKE_FLAGS "${DEFAULT_CMAKE_FLAGS}")
|
||||
|
||||
set(EMBREE_EXTRA_ARGS
|
||||
-DCMAKE_CXX_COMPILER=${LIBDIR}/dpcpp/bin/clang++
|
||||
-DCMAKE_C_COMPILER=${LIBDIR}/dpcpp/bin/clang
|
||||
|
|
|
|||
|
|
@ -11,7 +11,8 @@ ExternalProject_Add(external_emhash
|
|||
URL_HASH ${EMHASH_HASH_TYPE}=${EMHASH_HASH}
|
||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
PREFIX ${BUILD_DIR}/emhash
|
||||
|
||||
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
|
||||
|
||||
PATCH_COMMAND ${PATCH_CMD} -p 1 -d
|
||||
${BUILD_DIR}/emhash/src/external_emhash <
|
||||
${PATCH_DIR}/emhash.diff
|
||||
|
|
|
|||
|
|
@ -15,7 +15,8 @@ ExternalProject_Add(external_expat
|
|||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
URL_HASH ${EXPAT_HASH_TYPE}=${EXPAT_HASH}
|
||||
PREFIX ${BUILD_DIR}/expat
|
||||
|
||||
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
|
||||
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${LIBDIR}/expat
|
||||
${DEFAULT_CMAKE_FLAGS}
|
||||
|
|
|
|||
|
|
@ -1,34 +1,68 @@
|
|||
# SPDX-FileCopyrightText: 2002-2022 Blender Authors
|
||||
# SPDX-FileCopyrightText: 2002-2025 Blender Authors
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
if(WIN32)
|
||||
if(BLENDER_PLATFORM_WINDOWS_ARM)
|
||||
set(FFI_TARGET_HOST aarch64-w64-mingw32)
|
||||
set(FFI_PYTHON_TARGET_ARCH arm64)
|
||||
set(FFI_MSVC_SH_FLAGS -marm64)
|
||||
else()
|
||||
set(FFI_TARGET_HOST x86_64-w64-mingw32)
|
||||
set(FFI_PYTHON_TARGET_ARCH amd64)
|
||||
set(FFI_MSVC_SH_FLAGS -m64)
|
||||
endif()
|
||||
|
||||
set(CONFIGURE_ENV_FFI ${CONFIGURE_ENV} &&
|
||||
set CC=${BUILD_DIR}/ffi/src/external_ffi/msvcc.sh ${FFI_MSVC_SH_FLAGS} &&
|
||||
set CXX=${BUILD_DIR}/ffi/src/external_ffi/msvcc.sh ${FFI_MSVC_SH_FLAGS} &&
|
||||
set LD=link &&
|
||||
set CPP=cl -nologo -EP &&
|
||||
set CXXCPP=cl -nologo -EP &&
|
||||
set CPPFLAGS=-DFFI_BUILDING_DLL
|
||||
)
|
||||
# `make install` just refuses to do its job without erroring
|
||||
# out, "fine ,then don't". We'll pick the files we need ourselves
|
||||
# from the build folder in the after install cmake step.
|
||||
set(FFI_INSTALL echo .)
|
||||
set(FFI_EXTRA_ARGS
|
||||
--disable-docs
|
||||
--disable-multi-os-directory
|
||||
--enable-shared=yes
|
||||
--enable-static=no
|
||||
--build=${FFI_TARGET_HOST}
|
||||
--host=${FFI_TARGET_HOST}
|
||||
)
|
||||
else()
|
||||
set(CONFIGURE_ENV_FFI ${CONFIGURE_ENV})
|
||||
set(FFI_INSTALL make install)
|
||||
set(FFI_EXTRA_ARGS
|
||||
--disable-multi-os-directory
|
||||
--enable-shared=no
|
||||
--enable-static=yes
|
||||
--with-pic
|
||||
)
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(external_ffi
|
||||
URL file://${PACKAGE_DIR}/${FFI_FILE}
|
||||
URL_HASH ${FFI_HASH_TYPE}=${FFI_HASH}
|
||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
PREFIX ${BUILD_DIR}/ffi
|
||||
|
||||
CONFIGURE_COMMAND ${CONFIGURE_ENV} &&
|
||||
CONFIGURE_COMMAND ${CONFIGURE_ENV_FFI} &&
|
||||
cd ${BUILD_DIR}/ffi/src/external_ffi/ &&
|
||||
${CONFIGURE_COMMAND} --prefix=${LIBDIR}/ffi
|
||||
--disable-multi-os-directory
|
||||
--enable-shared=no
|
||||
--enable-static=yes
|
||||
--with-pic
|
||||
--libdir=${LIBDIR}/ffi/lib/
|
||||
${FFI_EXTRA_ARGS}
|
||||
|
||||
BUILD_COMMAND ${CONFIGURE_ENV} &&
|
||||
BUILD_COMMAND ${CONFIGURE_ENV_FFI} &&
|
||||
cd ${BUILD_DIR}/ffi/src/external_ffi/ &&
|
||||
make -j${MAKE_THREADS}
|
||||
|
||||
INSTALL_COMMAND ${CONFIGURE_ENV} &&
|
||||
cd ${BUILD_DIR}/ffi/src/external_ffi/ &&
|
||||
make install
|
||||
|
||||
PATCH_COMMAND ${PATCH_CMD} -p 1 -d
|
||||
# Fix compilation errors on Apple Clang >= 17, remove when FFI is updated beyond 3.4.7, see PR #136934 for details.
|
||||
${BUILD_DIR}/ffi/src/external_ffi <
|
||||
${PATCH_DIR}/ffi_apple_clang_17.diff
|
||||
${FFI_INSTALL}
|
||||
|
||||
INSTALL_DIR ${LIBDIR}/ffi
|
||||
)
|
||||
|
|
@ -41,4 +75,26 @@ if(UNIX AND NOT APPLE)
|
|||
|
||||
DEPENDEES install
|
||||
)
|
||||
elseif(WIN32)
|
||||
# Since there are currently no other consumers of ffi
|
||||
# we populate the libdir in the way python wants to see
|
||||
# it so we don't have to do this later on in the build
|
||||
ExternalProject_Add_Step(external_ffi after_install
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${BUILD_DIR}/ffi/src/external_ffi/${FFI_TARGET_HOST}/.libs/libffi-8.dll
|
||||
${LIBDIR}/ffi/${FFI_PYTHON_TARGET_ARCH}/libffi-8.dll
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${BUILD_DIR}/ffi/src/external_ffi/${FFI_TARGET_HOST}/.libs/libffi-8.lib
|
||||
${LIBDIR}/ffi/${FFI_PYTHON_TARGET_ARCH}/libffi-8.lib
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${BUILD_DIR}/ffi/src/external_ffi/${FFI_TARGET_HOST}/include/ffi.h
|
||||
${LIBDIR}/ffi/${FFI_PYTHON_TARGET_ARCH}/include/ffi.h
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${BUILD_DIR}/ffi/src/external_ffi/${FFI_TARGET_HOST}/include/ffitarget.h
|
||||
${LIBDIR}/ffi/${FFI_PYTHON_TARGET_ARCH}/include/ffitarget.h
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${BUILD_DIR}/ffi/src/external_ffi/${FFI_TARGET_HOST}/fficonfig.h
|
||||
${LIBDIR}/ffi/${FFI_PYTHON_TARGET_ARCH}/include/fficonfig.h
|
||||
DEPENDEES install
|
||||
)
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -16,6 +16,10 @@ ExternalProject_Add(external_flex
|
|||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
PREFIX ${BUILD_DIR}/flex
|
||||
|
||||
PATCH_COMMAND ${PATCH_CMD} --verbose -p1 -d
|
||||
${BUILD_DIR}/flex/src/external_flex <
|
||||
${PATCH_DIR}/flex_gcc14.diff
|
||||
|
||||
CONFIGURE_COMMAND ${CONFIGURE_ENV} &&
|
||||
cd ${BUILD_DIR}/flex/src/external_flex/ &&
|
||||
${_autoconf_cmd_optional} ${CONFIGURE_COMMAND} --prefix=${LIBDIR}/flex
|
||||
|
|
|
|||
|
|
@ -20,3 +20,18 @@ ExternalProject_Add(external_fmt
|
|||
|
||||
INSTALL_DIR ${LIBDIR}/fmt
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
ExternalProject_Add_Step(external_fmt after_install
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
${LIBDIR}/fmt/
|
||||
${HARVEST_TARGET}/fmt
|
||||
|
||||
DEPENDEES install
|
||||
)
|
||||
|
||||
else()
|
||||
harvest(external_fmt fmt/include fmt/include "*.h")
|
||||
harvest(external_fmt fmt/lib/cmake/fmt fmt/lib/cmake/fmt "*.cmake")
|
||||
harvest(external_fmt fmt/lib fmt/lib "*.a")
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -21,7 +21,8 @@ ExternalProject_Add(external_freetype
|
|||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
URL_HASH ${FREETYPE_HASH_TYPE}=${FREETYPE_HASH}
|
||||
PREFIX ${BUILD_DIR}/freetype
|
||||
|
||||
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
|
||||
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${LIBDIR}/freetype
|
||||
${DEFAULT_CMAKE_FLAGS}
|
||||
|
|
|
|||
|
|
@ -40,20 +40,10 @@ ExternalProject_Add(external_hiprt
|
|||
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
|
||||
PREFIX ${BUILD_DIR}/hiprt
|
||||
|
||||
# hiprt_target_dependency.diff:
|
||||
# https://github.com/GPUOpen-LibrariesAndSDKs/HIPRT/pull/31
|
||||
# hiprt_install.diff:
|
||||
# https://github.com/GPUOpen-LibrariesAndSDKs/HIPRT/pull/30
|
||||
PATCH_COMMAND
|
||||
${PATCH_CMD} -p 1 -d
|
||||
${BUILD_DIR}/hiprt/src/external_hiprt <
|
||||
${PATCH_DIR}/hiprt_target_dependency.diff &&
|
||||
${PATCH_CMD} -p 1 -d
|
||||
${BUILD_DIR}/hiprt/src/external_hiprt <
|
||||
${PATCH_DIR}/hiprt_install.diff &&
|
||||
${PATCH_CMD} -p 1 -d
|
||||
${BUILD_DIR}/hiprt/src/external_hiprt <
|
||||
${PATCH_DIR}/hiprt_baked_bvh_array.diff
|
||||
${PATCH_DIR}/hiprt_rocm7_support.diff
|
||||
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${LIBDIR}/hiprt
|
||||
|
|
|
|||
|
|
@ -20,10 +20,6 @@ ExternalProject_Add(external_imath
|
|||
${DEFAULT_CMAKE_FLAGS}
|
||||
${IMATH_EXTRA_ARGS}
|
||||
|
||||
PATCH_COMMAND ${PATCH_CMD} -p 1 -d
|
||||
${BUILD_DIR}/imath/src/external_imath <
|
||||
${PATCH_DIR}/imath_358.diff
|
||||
|
||||
INSTALL_DIR ${LIBDIR}/imath
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -33,28 +33,27 @@ elseif(APPLE)
|
|||
endif()
|
||||
elseif(UNIX)
|
||||
set(ISPC_EXTRA_ARGS_UNIX
|
||||
-DCMAKE_C_COMPILER=${LIBDIR}/llvm/bin/clang
|
||||
-DCMAKE_CXX_COMPILER=${LIBDIR}/llvm/bin/clang++
|
||||
-DCMAKE_C_COMPILER=gcc
|
||||
-DCMAKE_CXX_COMPILER=g++
|
||||
-DARM_ENABLED=${BLENDER_PLATFORM_ARM}
|
||||
-DFLEX_EXECUTABLE=${LIBDIR}/flex/bin/flex
|
||||
)
|
||||
endif()
|
||||
|
||||
set(ISPC_EXTRA_ARGS
|
||||
-DISPC_NO_DUMPS=On
|
||||
-DISPC_INCLUDE_EXAMPLES=Off
|
||||
-DISPC_INCLUDE_TESTS=Off
|
||||
-DISPC_INCLUDE_RT=Off
|
||||
-DISPC_INCLUDE_UTILS=Off
|
||||
-DISPC_LIBRARY=Off
|
||||
-DLLVM_CONFIG_EXECUTABLE=${LIBDIR}/llvm/bin/llvm-config
|
||||
-DLLVM_DIR=${LIBDIR}/llvm/lib/cmake/llvm/
|
||||
-DLLVM_LIBRARY_DIR=${LIBDIR}/llvm/lib
|
||||
-DCLANG_EXECUTABLE=${LIBDIR}/llvm/bin/clang
|
||||
-DCLANGPP_EXECUTABLE=${LIBDIR}/llvm/bin/clang++
|
||||
-DISPC_INCLUDE_TESTS=Off
|
||||
-DCLANG_LIBRARY_DIR=${LIBDIR}/llvm/lib
|
||||
-DCLANG_INCLUDE_DIRS=${LIBDIR}/llvm/include
|
||||
-DPython3_ROOT_DIR=${LIBDIR}/python/
|
||||
-DPython3_EXECUTABLE=${PYTHON_BINARY}
|
||||
-DGIT_BINARY=GIT_BINARY-NOTFOUND # Prevent any git checks
|
||||
${ISPC_EXTRA_ARGS_WIN}
|
||||
${ISPC_EXTRA_ARGS_APPLE}
|
||||
${ISPC_EXTRA_ARGS_UNIX}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,8 @@ ExternalProject_Add(external_level-zero
|
|||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
URL_HASH ${LEVEL_ZERO_HASH_TYPE}=${LEVEL_ZERO_HASH}
|
||||
PREFIX ${BUILD_DIR}/level-zero
|
||||
|
||||
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
|
||||
|
||||
PATCH_COMMAND ${PATCH_CMD} -p 1 -d
|
||||
${BUILD_DIR}/level-zero/src/external_level-zero <
|
||||
${PATCH_DIR}/level-zero.diff
|
||||
|
|
|
|||
56
build_files/build_environment/cmake/libheif.cmake
Normal file
56
build_files/build_environment/cmake/libheif.cmake
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
# SPDX-FileCopyrightText: 2025 Blender Authors
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
if(WIN32)
|
||||
set(AOM_LIBRARY aom${LIBEXT})
|
||||
else()
|
||||
set(AOM_LIBRARY libaom${LIBEXT})
|
||||
endif()
|
||||
|
||||
|
||||
set(LIBHEIF_EXTRA_ARGS
|
||||
-DWITH_AOM_ENCODER=ON
|
||||
-DWITH_AOM_DECODER=ON
|
||||
-DWITH_DAV1D=OFF
|
||||
-DWITH_FFMPEG_DECODER=OFF
|
||||
-DWITH_JPEG_ENCODER=OFF
|
||||
-DWITH_KVAZAAR=OFF
|
||||
-DWITH_LIBDE265=OFF
|
||||
-DWITH_LIBSHARPYUV=OFF
|
||||
-DWITH_OPENJPH_ENCODER=OFF
|
||||
-DWITH_OpenH264_DECODER=OFF
|
||||
-DWITH_OpenJPEG_DECODER=OFF
|
||||
-DWITH_OpenJPEG_ENCODER=OFF
|
||||
-DWITH_RAV1E=OFF
|
||||
-DWITH_SvtEnc=OFF
|
||||
-DWITH_UVG266=OFF
|
||||
-DWITH_VVDEC=OFF
|
||||
-DWITH_VVENC=OFF
|
||||
-DWITH_X265=OFF
|
||||
-DAOM_INCLUDE_DIR=${LIBDIR}/aom/include/
|
||||
-DAOM_LIBRARY=${LIBDIR}/aom/lib/${AOM_LIBRARY}
|
||||
-DBUILD_SHARED_LIBS=OFF
|
||||
-DWITH_EXAMPLES=OFF
|
||||
-DWITH_EXAMPLE_HEIF_VIEW=OFF
|
||||
-DWITH_GDK_PIXBUF=OFF
|
||||
)
|
||||
|
||||
ExternalProject_Add(external_libheif
|
||||
URL file://${PACKAGE_DIR}/${LIBHEIF_FILE}
|
||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
URL_HASH ${LIBHEIF_HASH_TYPE}=${LIBHEIF_HASH}
|
||||
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
|
||||
PREFIX ${BUILD_DIR}/libheif
|
||||
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${LIBDIR}/libheif
|
||||
${DEFAULT_CMAKE_FLAGS}
|
||||
${LIBHEIF_EXTRA_ARGS}
|
||||
|
||||
INSTALL_DIR ${LIBDIR}/libheif
|
||||
)
|
||||
add_dependencies(
|
||||
external_libheif
|
||||
external_aom
|
||||
)
|
||||
|
|
@ -46,18 +46,25 @@ set(LLVM_EXTRA_ARGS
|
|||
${LLVM_XML2_ARGS}
|
||||
)
|
||||
|
||||
set(LLVM_PATCH
|
||||
${PATCH_CMD} -p 1 -d
|
||||
${BUILD_DIR}/ll/src/ll <
|
||||
${PATCH_DIR}/llvm.diff
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
set(LLVM_GENERATOR "Ninja")
|
||||
list(APPEND LLVM_EXTRA_ARGS -DPython3_FIND_REGISTRY=NEVER)
|
||||
set(LLVM_PATCH
|
||||
${LLVM_PATCH} &&
|
||||
${PATCH_CMD} -p 1 -d
|
||||
${BUILD_DIR}/ll/src/ll <
|
||||
${PATCH_DIR}/llvm_clang_cuda_msvc_header_fix.diff
|
||||
)
|
||||
else()
|
||||
set(LLVM_GENERATOR "Unix Makefiles")
|
||||
endif()
|
||||
|
||||
# LLVM does not switch over to cpp17 until llvm 16 and building earlier versions with
|
||||
# MSVC is leading to some crashes in ISPC. Switch back to their default on all platforms
|
||||
# for now.
|
||||
string(REPLACE "-DCMAKE_CXX_STANDARD=17" " " LLVM_CMAKE_FLAGS "${DEFAULT_CMAKE_FLAGS}")
|
||||
|
||||
# short project name due to long filename issues on windows
|
||||
ExternalProject_Add(ll
|
||||
URL file://${PACKAGE_DIR}/${LLVM_FILE}
|
||||
|
|
@ -68,13 +75,11 @@ ExternalProject_Add(ll
|
|||
PREFIX ${BUILD_DIR}/ll
|
||||
SOURCE_SUBDIR llvm
|
||||
|
||||
PATCH_COMMAND ${PATCH_CMD} -p 1 -d
|
||||
${BUILD_DIR}/ll/src/ll <
|
||||
${PATCH_DIR}/llvm.diff
|
||||
PATCH_COMMAND ${LLVM_PATCH}
|
||||
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${LIBDIR}/llvm
|
||||
${LLVM_CMAKE_FLAGS}
|
||||
${DEFAULT_CMAKE_FLAGS}
|
||||
${LLVM_EXTRA_ARGS}
|
||||
|
||||
INSTALL_DIR ${LIBDIR}/llvm
|
||||
|
|
|
|||
|
|
@ -17,6 +17,15 @@ endif()
|
|||
|
||||
set(NUMPY_POSTFIX)
|
||||
|
||||
if(WIN32)
|
||||
file(WRITE ${CMAKE_BINARY_DIR}/fix_path.bat
|
||||
"set PATH=${LIBDIR}/python;${LIBDIR}/python/scripts;%PATH%\n"
|
||||
)
|
||||
set(NUMPY_CONF ${CMAKE_BINARY_DIR}/fix_path.bat)
|
||||
else()
|
||||
set(NUMPY_CONF export CYTHON=${LIBDIR}/python/bin/cython)
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(external_numpy
|
||||
URL file://${PACKAGE_DIR}/${NUMPY_FILE}
|
||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
|
|
@ -24,14 +33,9 @@ ExternalProject_Add(external_numpy
|
|||
PREFIX ${BUILD_DIR}/numpy
|
||||
PATCH_COMMAND ${NUMPY_PATCH}
|
||||
CONFIGURE_COMMAND ""
|
||||
LOG_BUILD 1
|
||||
BUILD_IN_SOURCE 1
|
||||
|
||||
BUILD_COMMAND
|
||||
${PYTHON_BINARY} setup.py
|
||||
build ${NUMPY_BUILD_OPTION} -j${PYTHON_MAKE_THREADS}
|
||||
install
|
||||
--old-and-unmanageable
|
||||
BUILD_COMMAND ${NUMPY_CONF} && ${PYTHON_BINARY} -m pip install --no-build-isolation .
|
||||
|
||||
INSTALL_COMMAND ""
|
||||
)
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ if(BUILD_MODE STREQUAL Release)
|
|||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
URL_HASH ${OPENAL_HASH_TYPE}=${OPENAL_HASH}
|
||||
PREFIX ${BUILD_DIR}/openal
|
||||
|
||||
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${LIBDIR}/openal
|
||||
${DEFAULT_CMAKE_FLAGS}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,12 @@
|
|||
|
||||
set(OCIO_PATCH echo .)
|
||||
|
||||
if(WIN32)
|
||||
set(MINIZIP_LIBRARY minizip${LIBEXT})
|
||||
else()
|
||||
set(MINIZIP_LIBRARY libminizip${LIBEXT})
|
||||
endif()
|
||||
|
||||
set(OPENCOLORIO_EXTRA_ARGS
|
||||
-DOCIO_BUILD_APPS=OFF
|
||||
-DOCIO_BUILD_PYTHON=ON
|
||||
|
|
@ -18,13 +24,13 @@ set(OPENCOLORIO_EXTRA_ARGS
|
|||
-DOCIO_INSTALL_EXT_PACKAGES=NONE
|
||||
|
||||
-Dexpat_ROOT=${LIBDIR}/expat
|
||||
-Dyaml-cpp_ROOT=${LIBDIR}/yamlcpp
|
||||
-Dyaml-cpp_DIR=${LIBDIR}/yamlcpp/lib/cmake/yaml-cpp
|
||||
-Dyaml-cpp_VERSION=${YAMLCPP_VERSION}
|
||||
-Dpystring_ROOT=${LIBDIR}/pystring
|
||||
-DImath_ROOT=${LIBDIR}/imath
|
||||
-Dminizip-ng_ROOT=${LIBDIR}/minizipng
|
||||
-Dminizip-ng_INCLUDE_DIR=${LIBDIR}/minizipng/include/minizip-ng
|
||||
-Dminizip-ng_LIBRARY=${LIBDIR}/minizipng/lib/libminizip${LIBEXT}
|
||||
-Dminizip-ng_INCLUDE_DIR=${LIBDIR}/minizipng/include/minizip-ng/minizip
|
||||
-Dminizip-ng_LIBRARY=${LIBDIR}/minizipng/lib/${MINIZIP_LIBRARY}
|
||||
-DZLIB_LIBRARY=${LIBDIR}/zlib/lib/${ZLIB_LIBRARY}
|
||||
-DZLIB_INCLUDE_DIR=${LIBDIR}/zlib/include/
|
||||
-DPython_EXECUTABLE=${PYTHON_BINARY}
|
||||
|
|
@ -101,8 +107,8 @@ if(WIN32)
|
|||
${LIBDIR}/opencolorio/include
|
||||
${HARVEST_TARGET}/opencolorio/include
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${LIBDIR}/opencolorio/bin/OpenColorIO_2_4.dll
|
||||
${HARVEST_TARGET}/opencolorio/bin/OpenColorIO_2_4.dll
|
||||
${LIBDIR}/opencolorio/bin/OpenColorIO_2_5.dll
|
||||
${HARVEST_TARGET}/opencolorio/bin/OpenColorIO_2_5.dll
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
${LIBDIR}/opencolorio/lib
|
||||
${HARVEST_TARGET}/opencolorio/lib
|
||||
|
|
@ -113,8 +119,8 @@ if(WIN32)
|
|||
if(BUILD_MODE STREQUAL Debug)
|
||||
ExternalProject_Add_Step(external_opencolorio after_install
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${LIBDIR}/opencolorio/bin/OpenColorIO_d_2_4.dll
|
||||
${HARVEST_TARGET}/opencolorio/bin/OpenColorIO_d_2_4.dll
|
||||
${LIBDIR}/opencolorio/bin/OpenColorIO_d_2_5.dll
|
||||
${HARVEST_TARGET}/opencolorio/bin/OpenColorIO_d_2_5.dll
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${LIBDIR}/opencolorio/lib/Opencolorio_d.lib
|
||||
${HARVEST_TARGET}/opencolorio/lib/OpenColorIO_d.lib
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ set(OPENEXR_EXTRA_ARGS
|
|||
-DImath_DIR=${LIBDIR}/imath/lib/cmake/Imath
|
||||
-DOPENEXR_LIB_SUFFIX=${OPENEXR_VERSION_BUILD_POSTFIX}
|
||||
-Dlibdeflate_DIR=${LIBDIR}/deflate/lib/cmake/libdeflate
|
||||
-Dopenjph_DIR=${LIBDIR}/openjph/lib/cmake/openjph
|
||||
)
|
||||
|
||||
ExternalProject_Add(external_openexr
|
||||
|
|
@ -74,4 +75,5 @@ add_dependencies(
|
|||
external_openexr
|
||||
external_imath
|
||||
external_deflate
|
||||
external_openjph
|
||||
)
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ endif()
|
|||
set(OPENIMAGEIO_EXTRA_ARGS
|
||||
-DBUILD_SHARED_LIBS=ON
|
||||
${OPENIMAGEIO_LINKSTATIC}
|
||||
-DOpenImageIO_REQUIRED_DEPS=WebP$<SEMICOLON>JPEGTurbo$<SEMICOLON>TIFF$<SEMICOLON>OpenEXR$<SEMICOLON>PNG$<SEMICOLON>OpenJPEG$<SEMICOLON>fmt$<SEMICOLON>Robinmap$<SEMICOLON>ZLIB$<SEMICOLON>pugixml$<SEMICOLON>Python
|
||||
-DOpenImageIO_REQUIRED_DEPS=WebP$<SEMICOLON>libjpeg-turbo$<SEMICOLON>TIFF$<SEMICOLON>OpenEXR$<SEMICOLON>PNG$<SEMICOLON>OpenJPEG$<SEMICOLON>fmt$<SEMICOLON>Robinmap$<SEMICOLON>ZLIB$<SEMICOLON>pugixml$<SEMICOLON>Python$<SEMICOLON>openjph$<SEMICOLON>TBB$<SEMICOLON>Libheif
|
||||
-DUSE_NUKE=OFF
|
||||
-DUSE_OPENVDB=OFF
|
||||
-DUSE_FREETYPE=OFF
|
||||
|
|
@ -66,6 +66,7 @@ set(OPENIMAGEIO_EXTRA_ARGS
|
|||
-DUSE_FFMPEG=OFF
|
||||
-DUSE_PTEX=OFF
|
||||
-DUSE_FREETYPE=OFF
|
||||
-DUSE_LIBHEIF=ON
|
||||
-DUSE_LIBRAW=OFF
|
||||
-DUSE_JXL=OFF
|
||||
-DUSE_OPENCOLORIO=ON
|
||||
|
|
@ -104,6 +105,8 @@ set(OPENIMAGEIO_EXTRA_ARGS
|
|||
-DTBB_ROOT=${LIBDIR}/tbb
|
||||
-Dlibdeflate_ROOT=${LIBDIR}/deflate
|
||||
-Dfmt_ROOT=${LIBDIR}/fmt
|
||||
-Dopenjph_DIR=${LIBDIR}/openjph/lib/cmake/openjph
|
||||
-DLibheif_DIR=${LIBDIR}/libheif/lib/cmake/libheif
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
|
|
@ -131,10 +134,7 @@ ExternalProject_Add(external_openimageio
|
|||
PATCH_COMMAND
|
||||
${PATCH_CMD} -p 1 -N -d
|
||||
${BUILD_DIR}/openimageio/src/external_openimageio/ <
|
||||
${PATCH_DIR}/openimageio.diff &&
|
||||
${PATCH_CMD} -p 1 -N -d
|
||||
${BUILD_DIR}/openimageio/src/external_openimageio/ <
|
||||
${PATCH_DIR}/openimageio_png_cicp_4746.diff
|
||||
${PATCH_DIR}/openimageio.diff
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${LIBDIR}/openimageio
|
||||
${DEFAULT_CMAKE_FLAGS}
|
||||
|
|
@ -160,6 +160,7 @@ add_dependencies(
|
|||
external_python
|
||||
external_pybind11
|
||||
external_tbb
|
||||
external_libheif
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
|
|
|
|||
39
build_files/build_environment/cmake/openjph.cmake
Normal file
39
build_files/build_environment/cmake/openjph.cmake
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
# SPDX-FileCopyrightText: 2025 Blender Authors
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
set(OPENJPH_EXTRA_ARGS
|
||||
-DOJPH_BUILD_TESTS=OFF
|
||||
-DOJPH_ENABLE_TIFF_SUPPORT=OFF
|
||||
-DOJPH_BUILD_EXECUTABLES=OFF
|
||||
-DBUILD_SHARED_LIBS=ON
|
||||
)
|
||||
|
||||
ExternalProject_Add(external_openjph
|
||||
URL file://${PACKAGE_DIR}/${OPENJPH_FILE}
|
||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
URL_HASH ${OPENJPH_HASH_TYPE}=${OPENJPH_HASH}
|
||||
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
|
||||
PREFIX ${BUILD_DIR}/openjph
|
||||
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${LIBDIR}/openjph
|
||||
${DEFAULT_CMAKE_FLAGS}
|
||||
${OPENJPH_EXTRA_ARGS}
|
||||
|
||||
INSTALL_DIR ${LIBDIR}/openjph
|
||||
)
|
||||
|
||||
|
||||
if(WIN32)
|
||||
ExternalProject_Add_Step(external_openjph after_install
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
${LIBDIR}/openjph
|
||||
${HARVEST_TARGET}/openjph
|
||||
|
||||
DEPENDEES install
|
||||
)
|
||||
else()
|
||||
harvest(external_openjph openjph/include openjph/include "*.h")
|
||||
harvest_rpath_lib(external_openjph openjph/lib openjph/lib "*${SHAREDLIBEXT}*")
|
||||
endif()
|
||||
|
|
@ -17,6 +17,7 @@ set(OPENPGL_EXTRA_ARGS
|
|||
-DCMAKE_C_FLAGS_INIT="--target=arm64-pc-windows-msvc"
|
||||
-DCMAKE_CXX_FLAGS_INIT="--target=arm64-pc-windows-msvc"
|
||||
-DCMAKE_SHARED_LINKER_FLAGS=-L"${LIBDIR}/../../VS1564R/Release/llvm/lib"
|
||||
-DCMAKE_CXX_STANDARD=17
|
||||
)
|
||||
|
||||
if(TBB_STATIC_LIBRARY)
|
||||
|
|
|
|||
|
|
@ -32,11 +32,6 @@ ExternalProject_Add(external_opensubdiv
|
|||
PREFIX ${BUILD_DIR}/opensubdiv
|
||||
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
|
||||
|
||||
PATCH_COMMAND
|
||||
${PATCH_CMD} -p 1 -d
|
||||
${BUILD_DIR}/opensubdiv/src/external_opensubdiv <
|
||||
${PATCH_DIR}/opensubdiv_1343.diff
|
||||
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${LIBDIR}/opensubdiv
|
||||
-Wno-dev ${DEFAULT_CMAKE_FLAGS}
|
||||
|
|
|
|||
|
|
@ -31,7 +31,6 @@ set(OPENVDB_EXTRA_ARGS
|
|||
-DUSE_NANOVDB=ON
|
||||
-DOPENVDB_BUILD_PYTHON_MODULE=ON
|
||||
-DOPENVDB_PYTHON_WRAP_ALL_GRID_TYPES=ON
|
||||
-DUSE_NUMPY=ON
|
||||
-DPython_EXECUTABLE=${PYTHON_BINARY}
|
||||
-Dnanobind_DIR=${LIBDIR}/nanobind/nanobind/cmake/
|
||||
# Needed to still build with VS2019
|
||||
|
|
@ -50,10 +49,7 @@ set(OPENVDB_EXTRA_ARGS
|
|||
set(OPENVDB_PATCH
|
||||
${PATCH_CMD} -p 1 -d
|
||||
${BUILD_DIR}/openvdb/src/openvdb <
|
||||
${PATCH_DIR}/openvdb.diff &&
|
||||
${PATCH_CMD} -p 1 -d
|
||||
${BUILD_DIR}/openvdb/src/openvdb <
|
||||
${PATCH_DIR}/openvdb_1977.diff
|
||||
${PATCH_DIR}/openvdb.diff
|
||||
)
|
||||
|
||||
ExternalProject_Add(openvdb
|
||||
|
|
@ -78,7 +74,7 @@ add_dependencies(
|
|||
external_zlib
|
||||
external_blosc
|
||||
external_python
|
||||
external_numpy
|
||||
external_numpy # Runtime dependency
|
||||
external_nanobind
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -67,7 +67,10 @@ if(WIN32)
|
|||
# Some deps with warnings as error aren't quite ready for dealing with the new 2017 warnings.
|
||||
set(COMMON_MSVC_FLAGS "/Wv:18")
|
||||
endif()
|
||||
string(APPEND COMMON_MSVC_FLAGS " /bigobj")
|
||||
string(APPEND COMMON_MSVC_FLAGS " /bigobj /experimental:deterministic /utf-8")
|
||||
if(NOT BLENDER_PLATFORM_WINDOWS_ARM) #x64
|
||||
string(APPEND COMMON_MSVC_FLAGS " /arch:SSE4.2")
|
||||
endif()
|
||||
# To keep MSVC from oversubscribing the CPU, force it to single threaded mode
|
||||
# msbuild/ninja will queue as many compile units as there are cores, no need for
|
||||
# MSVC to be internally threading as well.
|
||||
|
|
@ -122,7 +125,7 @@ if(WIN32)
|
|||
-DCMAKE_CXX_FLAGS_MINSIZEREL=${BLENDER_CLANG_CMAKE_CXX_FLAGS_MINSIZEREL}
|
||||
-DCMAKE_CXX_FLAGS_RELEASE=${BLENDER_CLANG_CMAKE_CXX_FLAGS_RELEASE}
|
||||
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=${BLENDER_CLANG_CMAKE_CXX_FLAGS_RELWITHDEBINFO}
|
||||
-DCMAKE_CXX_STANDARD=17
|
||||
-DCMAKE_CXX_STANDARD=20
|
||||
)
|
||||
|
||||
set(PLATFORM_FLAGS)
|
||||
|
|
@ -220,7 +223,7 @@ else()
|
|||
endif()
|
||||
|
||||
set(PLATFORM_CFLAGS "-isysroot ${CMAKE_OSX_SYSROOT} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET} -arch ${CMAKE_OSX_ARCHITECTURES}")
|
||||
set(PLATFORM_CXXFLAGS "-isysroot ${CMAKE_OSX_SYSROOT} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET} -std=c++17 -stdlib=libc++ -arch ${CMAKE_OSX_ARCHITECTURES}")
|
||||
set(PLATFORM_CXXFLAGS "-isysroot ${CMAKE_OSX_SYSROOT} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET} -std=c++20 -stdlib=libc++ -arch ${CMAKE_OSX_ARCHITECTURES}")
|
||||
set(PLATFORM_LDFLAGS "-isysroot ${CMAKE_OSX_SYSROOT} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET} -arch ${CMAKE_OSX_ARCHITECTURES} -headerpad_max_install_names")
|
||||
if("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "x86_64")
|
||||
set(PLATFORM_BUILD_TARGET --build=x86_64-apple-darwin19.0.0) # OS X 10.15
|
||||
|
|
@ -240,7 +243,7 @@ else()
|
|||
endif()
|
||||
|
||||
set(PLATFORM_CFLAGS "-fPIC")
|
||||
set(PLATFORM_CXXFLAGS "-std=c++17 -fPIC")
|
||||
set(PLATFORM_CXXFLAGS "-std=c++20 -fPIC")
|
||||
set(PLATFORM_LDFLAGS)
|
||||
set(PLATFORM_BUILD_TARGET)
|
||||
set(PLATFORM_CMAKE_FLAGS -DCMAKE_INSTALL_LIBDIR=lib)
|
||||
|
|
@ -287,7 +290,7 @@ set(DEFAULT_CMAKE_FLAGS
|
|||
-DCMAKE_CXX_FLAGS_MINSIZEREL=${BLENDER_CMAKE_CXX_FLAGS_MINSIZEREL}
|
||||
-DCMAKE_CXX_FLAGS_RELEASE=${BLENDER_CMAKE_CXX_FLAGS_RELEASE}
|
||||
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=${CMAKE_CXX_FLAGS_RELWITHDEBINFO}
|
||||
-DCMAKE_CXX_STANDARD=17
|
||||
-DCMAKE_CXX_STANDARD=20
|
||||
${PLATFORM_CMAKE_FLAGS}
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
string(REPLACE "-DCMAKE_CXX_STANDARD=20" " " OSL_CMAKE_FLAGS "${DEFAULT_CMAKE_FLAGS}")
|
||||
|
||||
if(WIN32)
|
||||
set(OSL_CMAKE_CXX_STANDARD_LIBRARIES "kernel32${LIBEXT} user32${LIBEXT} gdi32${LIBEXT} winspool${LIBEXT} shell32${LIBEXT} ole32${LIBEXT} oleaut32${LIBEXT} uuid${LIBEXT} comdlg32${LIBEXT} advapi32${LIBEXT} psapi${LIBEXT}")
|
||||
set(OSL_CMAKE_LINKER_FLAGS)
|
||||
|
|
@ -62,12 +64,6 @@ if(NOT (APPLE OR BLENDER_PLATFORM_WINDOWS_ARM))
|
|||
-DCUDA_TOOLKIT_ROOT_DIR=${CUDAToolkit_ROOT}
|
||||
)
|
||||
endif()
|
||||
if(WIN32)
|
||||
# Needed to make Clang compile CUDA code with VS2019
|
||||
list(APPEND OSL_EXTRA_ARGS
|
||||
-DLLVM_COMPILE_FLAGS=-D__CUDACC_VER_MAJOR__=${CUDAToolkit_VERSION_MAJOR}
|
||||
)
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(external_osl
|
||||
URL file://${PACKAGE_DIR}/${OSL_FILE}
|
||||
|
|
@ -91,7 +87,7 @@ ExternalProject_Add(external_osl
|
|||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${LIBDIR}/osl
|
||||
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
||||
${DEFAULT_CMAKE_FLAGS}
|
||||
${OSL_CMAKE_FLAGS}
|
||||
${OSL_EXTRA_ARGS}
|
||||
|
||||
INSTALL_DIR ${LIBDIR}/osl
|
||||
|
|
|
|||
|
|
@ -14,10 +14,6 @@ ExternalProject_Add(external_pybind11
|
|||
PREFIX ${BUILD_DIR}/pybind11
|
||||
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
|
||||
|
||||
PATCH_COMMAND ${PATCH_CMD} -p 1 -d
|
||||
${BUILD_DIR}/pybind11/src/external_pybind11 <
|
||||
${PATCH_DIR}/pybind11_4761.diff
|
||||
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${LIBDIR}/pybind11
|
||||
${DEFAULT_CMAKE_FLAGS}
|
||||
|
|
|
|||
|
|
@ -30,11 +30,13 @@ if(WIN32)
|
|||
set(PYTHON_EXTERNALS_FOLDER ${BUILD_DIR}/python/src/external_python/externals)
|
||||
set(ZLIB_SOURCE_FOLDER ${BUILD_DIR}/zlib/src/external_zlib)
|
||||
set(SSL_SOURCE_FOLDER ${BUILD_DIR}/ssl/src/external_ssl)
|
||||
set(FFI_SOURCE_FOLDER ${LIBDIR}/ffi)
|
||||
set(SQLITE_SOURCE_FOLDER ${BUILD_DIR}/sqlite/src/external_sqlite)
|
||||
set(DOWNLOADS_EXTERNALS_FOLDER ${DOWNLOAD_DIR}/externals)
|
||||
|
||||
cmake_to_dos_path(${PYTHON_EXTERNALS_FOLDER} PYTHON_EXTERNALS_FOLDER_DOS)
|
||||
cmake_to_dos_path(${ZLIB_SOURCE_FOLDER} ZLIB_SOURCE_FOLDER_DOS)
|
||||
cmake_to_dos_path(${FFI_SOURCE_FOLDER} FFI_SOURCE_FOLDER_DOS)
|
||||
cmake_to_dos_path(${SSL_SOURCE_FOLDER} SSL_SOURCE_FOLDER_DOS)
|
||||
cmake_to_dos_path(${SQLITE_SOURCE_FOLDER} SQLITE_SOURCE_FOLDER_DOS)
|
||||
cmake_to_dos_path(${DOWNLOADS_EXTERNALS_FOLDER} DOWNLOADS_EXTERNALS_FOLDER_DOS)
|
||||
|
|
@ -50,9 +52,10 @@ if(WIN32)
|
|||
# the foldernames *HAVE* to match the ones inside pythons get_externals.cmd.
|
||||
# regardless of the version actually in there.
|
||||
PATCH_COMMAND mkdir ${PYTHON_EXTERNALS_FOLDER_DOS} &&
|
||||
mklink /J ${PYTHON_EXTERNALS_FOLDER_DOS}\\libffi-3.4.4 ${FFI_SOURCE_FOLDER_DOS} &&
|
||||
mklink /J ${PYTHON_EXTERNALS_FOLDER_DOS}\\zlib-1.3.1 ${ZLIB_SOURCE_FOLDER_DOS} &&
|
||||
mklink /J ${PYTHON_EXTERNALS_FOLDER_DOS}\\openssl-3.0.15 ${SSL_SOURCE_FOLDER_DOS} &&
|
||||
mklink /J ${PYTHON_EXTERNALS_FOLDER_DOS}\\sqlite-3.45.1.0 ${SQLITE_SOURCE_FOLDER_DOS} &&
|
||||
mklink /J ${PYTHON_EXTERNALS_FOLDER_DOS}\\openssl-3.0.18 ${SSL_SOURCE_FOLDER_DOS} &&
|
||||
mklink /J ${PYTHON_EXTERNALS_FOLDER_DOS}\\sqlite-3.50.4.0 ${SQLITE_SOURCE_FOLDER_DOS} &&
|
||||
${CMAKE_COMMAND} -E copy
|
||||
${ZLIB_SOURCE_FOLDER}/../external_zlib-build/zconf.h
|
||||
${PYTHON_EXTERNALS_FOLDER}/zlib-1.3.1/zconf.h &&
|
||||
|
|
@ -119,43 +122,52 @@ else()
|
|||
endif()
|
||||
set(PYTHON_BINARY ${LIBDIR}/python/bin/python${PYTHON_SHORT_VERSION})
|
||||
|
||||
# Various flags to convince Python to use our own versions of:
|
||||
# `ffi`, `sqlite`, `ssl`, `bzip2`, `lzma` and `zlib`.
|
||||
# Using pkg-config is only supported for some, and even then we need to work around issues.
|
||||
set(PYTHON_CONFIGURE_EXTRA_ARGS --with-openssl=${LIBDIR}/ssl)
|
||||
set(PYTHON_CFLAGS "${PLATFORM_CFLAGS} ")
|
||||
# Manually specify some library paths. For ffi there is no other way,
|
||||
# for sqlite is needed because LIBSQLITE3_LIBS does not work,
|
||||
# and ssl because it uses the wrong ssl/lib dir instead of ssl/lib64.
|
||||
set(PYTHON_LDFLAGS "-L${LIBDIR}/ffi/lib -L${LIBDIR}/sqlite/lib -L${LIBDIR}/ssl/lib -L${LIBDIR}/ssl/lib64 ${PLATFORM_LDFLAGS} ")
|
||||
# We need to add the zlib static lib path here as even if python itself links the static zlib correctly,
|
||||
# the "_sqlite" cpython library needs to know where to get it from.
|
||||
set(PYTHON_LDFLAGS "-L${LIBDIR}/zlib/lib ${PLATFORM_LDFLAGS} ")
|
||||
|
||||
set(PYTHON_CONFIGURE_EXTRA_ARGS
|
||||
# Using pkg-config is supported for most libs besides bzip2, so make sure it is on.
|
||||
--with-pkg-config=yes
|
||||
--enable-loadable-sqlite-extensions
|
||||
# Don't build or ship the python test suite
|
||||
--disable-test-modules
|
||||
)
|
||||
|
||||
set(PYTHON_CONFIGURE_PKG_CONFIG_PATH "\
|
||||
${LIBDIR}/ffi/lib/pkgconfig:${LIBDIR}/sqlite/lib/pkgconfig:${LIBDIR}/ssl/lib/pkgconfig:\
|
||||
${LIBDIR}/ssl/lib64/pkgconfig:${LIBDIR}/lzma/lib/pkgconfig:${LIBDIR}/zlib/share/pkgconfig")
|
||||
|
||||
set(PYTHON_CONFIGURE_EXTRA_ENV
|
||||
export CFLAGS=${PYTHON_CFLAGS} &&
|
||||
export CPPFLAGS=${PYTHON_CFLAGS} &&
|
||||
export LDFLAGS=${PYTHON_LDFLAGS} &&
|
||||
# Use pkg-config for libraries that support it.
|
||||
export PKG_CONFIG_PATH=${LIBDIR}/ffi/lib/pkgconfig:${LIBDIR}/sqlite/lib/pkgconfig:${LIBDIR}/ssl/lib/pkgconfig:${LIBDIR}/ssl/lib64/pkgconfig
|
||||
|
||||
# Use pkg-config for libraries that support it, and ensure that it used static libraries.
|
||||
export PKG_CONFIG=pkg-config\ --static
|
||||
export PKG_CONFIG_PATH=${PYTHON_CONFIGURE_PKG_CONFIG_PATH}
|
||||
|
||||
# Use flags documented by ./configure for other libs.
|
||||
export BZIP2_CFLAGS=-I${LIBDIR}/bzip2/include
|
||||
export BZIP2_LIBS=${LIBDIR}/bzip2/lib/${LIBPREFIX}bz2${LIBEXT}
|
||||
export LIBLZMA_CFLAGS=-I${LIBDIR}/lzma/include
|
||||
export LIBLZMA_LIBS=${LIBDIR}/lzma/lib/${LIBPREFIX}lzma${LIBEXT}
|
||||
export ZLIB_CFLAGS=-I${LIBDIR}/zlib/include
|
||||
export ZLIB_LIBS=${LIBDIR}/zlib/lib/${ZLIB_LIBRARY}
|
||||
)
|
||||
|
||||
# This patch includes changes to fix missing `-lm` for SQLITE
|
||||
# and fix the order of `-ldl` flags for SSL to avoid link errors.
|
||||
if(APPLE)
|
||||
set(PYTHON_PATCH
|
||||
${PATCH_CMD} --verbose -p1 -d
|
||||
${BUILD_DIR}/python/src/external_python <
|
||||
${PATCH_DIR}/python_apple.diff
|
||||
# Prevent linking against Homebrew's libmpdec if it exists.
|
||||
set(PYTHON_CONFIGURE_EXTRA_ARGS
|
||||
${PYTHON_CONFIGURE_EXTRA_ARGS}
|
||||
--without-system-libmpdec
|
||||
)
|
||||
else()
|
||||
set(PYTHON_PATCH
|
||||
${PATCH_CMD} --verbose -p1 -d
|
||||
${BUILD_DIR}/python/src/external_python <
|
||||
${PATCH_DIR}/python_unix.diff
|
||||
|
||||
# Override library paths for SQLite and zlib on macOS (which are normally provided by pkg-config).
|
||||
# Redefining these prevents Python from wrongly trying to dynamically link zlib in SQLite and various built-in modules.
|
||||
set(PYTHON_CONFIGURE_EXTRA_ENV
|
||||
${PYTHON_CONFIGURE_EXTRA_ENV}
|
||||
export LIBSQLITE3_CFLAGS=-I${LIBDIR}/sqlite/include
|
||||
export LIBSQLITE3_LIBS=${LIBDIR}/sqlite/lib/${LIBPREFIX}sqlite3${LIBEXT}
|
||||
export ZLIB_CFLAGS=-I${LIBDIR}/zlib/include
|
||||
export ZLIB_LIBS=${LIBDIR}/zlib/lib/${ZLIB_LIBRARY}
|
||||
)
|
||||
endif()
|
||||
|
||||
|
|
@ -199,12 +211,12 @@ add_dependencies(
|
|||
external_ssl
|
||||
external_zlib
|
||||
external_sqlite
|
||||
external_ffi
|
||||
)
|
||||
if(UNIX)
|
||||
add_dependencies(
|
||||
external_python
|
||||
external_bzip2
|
||||
external_ffi
|
||||
external_lzma
|
||||
)
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -22,11 +22,12 @@ ExternalProject_Add(external_python_site_packages
|
|||
BUILD_COMMAND ""
|
||||
PREFIX ${BUILD_DIR}/site_packages
|
||||
|
||||
# setuptools is downgraded to 63.2.0 (same as python 3.10.8) since numpy 1.23.x seemingly has
|
||||
# issues building on windows with the newer versions that ships with python 3.10.9+.
|
||||
# We do not build numpy, cython, or zstandard here as the pip builds are not reproducible.
|
||||
INSTALL_COMMAND ${PYTHON_BINARY} -m pip install --no-cache-dir ${SITE_PACKAGES_EXTRA}
|
||||
setuptools==63.2.0
|
||||
setuptools==${SETUPTOOLS_VERSION}
|
||||
meson-python==${MESON_PYTHON_VERSION}
|
||||
packaging==${PACKAGING_VERSION}
|
||||
pyproject-metadata==${PYPROJECT_METADATA_VERSION}
|
||||
idna==${IDNA_VERSION}
|
||||
charset-normalizer==${CHARSET_NORMALIZER_VERSION}
|
||||
urllib3==${URLLIB3_VERSION}
|
||||
|
|
|
|||
|
|
@ -12,6 +12,15 @@ if(WIN32)
|
|||
set(SDL_EXTRA_ARGS
|
||||
-DSDL_STATIC=Off
|
||||
)
|
||||
|
||||
if(BLENDER_PLATFORM_WINDOWS_ARM)
|
||||
set(SDL_PATCH
|
||||
${SDL_PATCH} &&
|
||||
${PATCH_CMD} -p 1 -N -d
|
||||
${BUILD_DIR}/sdl/src/external_sdl <
|
||||
${PATCH_DIR}/sdl_woa.diff
|
||||
)
|
||||
endif()
|
||||
else()
|
||||
set(SDL_EXTRA_ARGS
|
||||
-DSDL_STATIC=ON
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ endmacro()
|
|||
set(MSYS2_BASE_URL https://repo.msys2.org/distrib/x86_64/msys2-base-x86_64-20221028.tar.xz)
|
||||
set(MSYS2_BASE_HASH 545cc6a4c36bb98058f2b2945c5d06de523516db)
|
||||
|
||||
set(MSYS2_NASM_URL http://www.nasm.us/pub/nasm/releasebuilds/2.13.02/win64/nasm-2.13.02-win64.zip)
|
||||
set(MSYS2_NASM_URL https://www.nasm.us/pub/nasm/releasebuilds/3.01/win64/nasm-3.01-win64.zip)
|
||||
set(MSYS2_NASM_HASH 6ae5eaffde68aa7450fadd7f45ba5c6df3dce558)
|
||||
|
||||
set(MSYS2_PERL_URL https://github.com/StrawberryPerl/Perl-Dist-Strawberry/releases/download/SP_5380_5361/strawberry-perl-5.38.0.1-64bit-portable.zip)
|
||||
|
|
@ -179,7 +179,7 @@ if((NOT EXISTS "${DOWNLOAD_DIR}/msys2/msys64/usr/bin/nasm.exe") AND (EXISTS "${M
|
|||
)
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
"${DOWNLOAD_DIR}/nasm-2.13.02/nasm.exe"
|
||||
"${DOWNLOAD_DIR}/nasm-3.01/nasm.exe"
|
||||
"${DOWNLOAD_DIR}/msys2/msys64/usr/bin/nasm.exe"
|
||||
)
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -29,16 +29,13 @@ if(UNIX)
|
|||
-DSQLITE_ENABLE_COLUMN_METADATA \
|
||||
-DSQLITE_ENABLE_FTS3 \
|
||||
-DSQLITE_ENABLE_FTS3_PARENTHESIS \
|
||||
-DSQLITE_ENABLE_RTREE=1 \
|
||||
-DSQLITE_SOUNDEX=1 \
|
||||
-DSQLITE_SOUNDEX \
|
||||
-DSQLITE_ENABLE_UNLOCK_NOTIFY \
|
||||
-DSQLITE_OMIT_LOOKASIDE=1 \
|
||||
-DSQLITE_ENABLE_DBSTAT_VTAB \
|
||||
-DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1 \
|
||||
-DSQLITE_ENABLE_LOAD_EXTENSION \
|
||||
-DSQLITE_LIKE_DOESNT_MATCH_BLOBS \
|
||||
-DSQLITE_THREADSAFE=1 \
|
||||
-DSQLITE_ENABLE_FTS3_TOKENIZER=1 \
|
||||
-DSQLITE_MAX_SCHEMA_RETRY=25 \
|
||||
-DSQLITE_ENABLE_PREUPDATE_HOOK \
|
||||
-DSQLITE_ENABLE_SESSION \
|
||||
|
|
@ -53,6 +50,8 @@ if(UNIX)
|
|||
)
|
||||
set(SQLITE_CONFIGURATION_ARGS
|
||||
${SQLITE_CONFIGURATION_ARGS}
|
||||
--enable-rtree
|
||||
--enable-geopoly
|
||||
--enable-threadsafe
|
||||
--enable-load-extension
|
||||
--enable-fts4
|
||||
|
|
|
|||
|
|
@ -26,10 +26,6 @@ ExternalProject_Add(external_tbb
|
|||
URL_HASH ${TBB_HASH_TYPE}=${TBB_HASH}
|
||||
PREFIX ${BUILD_DIR}/tbb
|
||||
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
|
||||
PATCH_COMMAND
|
||||
${PATCH_CMD} -p 1 -d
|
||||
${BUILD_DIR}/tbb/src/external_tbb <
|
||||
${PATCH_DIR}/tbb_1478.diff
|
||||
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/tbb ${DEFAULT_CMAKE_FLAGS} ${TBB_EXTRA_ARGS}
|
||||
INSTALL_DIR ${LIBDIR}/tbb
|
||||
)
|
||||
|
|
|
|||
61
build_files/build_environment/cmake/thorvg.cmake
Normal file
61
build_files/build_environment/cmake/thorvg.cmake
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
# SPDX-FileCopyrightText: 2025 Blender Authors
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
set(THORVG_EXTRA_ARGS
|
||||
)
|
||||
|
||||
ExternalProject_Add(external_thorvg
|
||||
URL file://${PACKAGE_DIR}/${THORVG_FILE}
|
||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
URL_HASH ${THORVG_HASH_TYPE}=${THORVG_HASH}
|
||||
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
|
||||
PREFIX ${BUILD_DIR}/thorvg
|
||||
|
||||
CONFIGURE_COMMAND ${CONFIGURE_ENV} &&
|
||||
${MESON} setup
|
||||
--prefix ${LIBDIR}/thorvg
|
||||
${MESON_BUILD_TYPE}
|
||||
--default-library static
|
||||
--libdir lib
|
||||
${BUILD_DIR}/thorvg/src/external_thorvg-build
|
||||
${BUILD_DIR}/thorvg/src/external_thorvg
|
||||
|
||||
BUILD_COMMAND ninja
|
||||
INSTALL_COMMAND ninja install
|
||||
|
||||
INSTALL_DIR ${LIBDIR}/thorvg
|
||||
)
|
||||
|
||||
add_dependencies(
|
||||
external_thorvg
|
||||
external_python
|
||||
# Needed for `MESON`.
|
||||
external_python_site_packages
|
||||
)
|
||||
|
||||
|
||||
if(WIN32)
|
||||
if(BUILD_MODE STREQUAL Release)
|
||||
ExternalProject_Add_Step(external_thorvg after_install
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
${LIBDIR}/thorvg/include
|
||||
${HARVEST_TARGET}/thorvg/include
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${LIBDIR}/thorvg/lib/libthorvg.a
|
||||
${HARVEST_TARGET}/thorvg/lib/libthorvg.lib
|
||||
DEPENDEES install
|
||||
)
|
||||
endif()
|
||||
if(BUILD_MODE STREQUAL Debug)
|
||||
ExternalProject_Add_Step(external_thorvg after_install
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${LIBDIR}/thorvg/lib/libthorvg.a
|
||||
${HARVEST_TARGET}/thorvg/lib/libthorvg_d.lib
|
||||
DEPENDEES install
|
||||
)
|
||||
endif()
|
||||
else()
|
||||
harvest(external_thorvg thorvg/include thorvg/include "*.h")
|
||||
harvest(external_thorvg thorvg/lib thorvg/lib "*.a")
|
||||
endif()
|
||||
|
|
@ -143,6 +143,9 @@ ExternalProject_Add(external_usd
|
|||
${PATCH_CMD} -p 1 -d
|
||||
${BUILD_DIR}/usd/src/external_usd <
|
||||
${PATCH_DIR}/usd_noboost.diff &&
|
||||
${PATCH_CMD} -p 1 -d
|
||||
${BUILD_DIR}/usd/src/external_usd <
|
||||
${PATCH_DIR}/usd_mip_trace_3837.diff &&
|
||||
${PATCH_CMD} -p 1 -d
|
||||
${BUILD_DIR}/usd/src/external_usd <
|
||||
${PATCH_DIR}/usd_no_vulkan_sdk.diff &&
|
||||
|
|
|
|||
|
|
@ -153,9 +153,9 @@ set(DEFLATE_HOMEPAGE https://github.com/ebiggers/libdeflate)
|
|||
set(DEFLATE_LICENSE SPDX:MIT)
|
||||
set(DEFLATE_COPYRIGHT "Copyright 2016 Eric Biggers")
|
||||
|
||||
set(OPENEXR_VERSION 3.3.5)
|
||||
set(OPENEXR_VERSION 3.4.3)
|
||||
set(OPENEXR_URI https://github.com/AcademySoftwareFoundation/openexr/archive/v${OPENEXR_VERSION}.tar.gz)
|
||||
set(OPENEXR_HASH fd5404d49331e24c26f4a263b13a35d4)
|
||||
set(OPENEXR_HASH d6eb9e877a7cf4d0343c09512c1e2da5)
|
||||
set(OPENEXR_HASH_TYPE MD5)
|
||||
set(OPENEXR_FILE openexr-${OPENEXR_VERSION}.tar.gz)
|
||||
set(OPENEXR_CPE "cpe:2.3:a:openexr:openexr:${OPENEXR_VERSION}:*:*:*:*:*:*:*")
|
||||
|
|
@ -163,9 +163,9 @@ set(OPENEXR_HOMEPAGE https://github.com/AcademySoftwareFoundation/openexr)
|
|||
set(OPENEXR_LICENSE SPDX:BSD-3-Clause)
|
||||
set(OPENEXR_COPYRIGHT "Copyright Contributors to the OpenEXR Project. All rights reserved.")
|
||||
|
||||
set(IMATH_VERSION 3.1.7)
|
||||
set(IMATH_VERSION 3.2.2)
|
||||
set(IMATH_URI https://github.com/AcademySoftwareFoundation/Imath/archive/v${IMATH_VERSION}.tar.gz)
|
||||
set(IMATH_HASH 5cedab446ab296c080957c3037c6d097)
|
||||
set(IMATH_HASH e29f25ce926ac53d8e0a52197299f61b)
|
||||
set(IMATH_HASH_TYPE MD5)
|
||||
set(IMATH_FILE imath-${IMATH_VERSION}.tar.gz)
|
||||
set(IMATH_HOMEPAGE https://github.com/AcademySoftwareFoundation/Imath)
|
||||
|
|
@ -227,9 +227,9 @@ registered trademarks or service marks of Lucasfilm Ltd.
|
|||
© 2009-2015 Sony Pictures Imageworks Inc. All rights reserved.
|
||||
]=])
|
||||
|
||||
set(OPENSUBDIV_VERSION v3_6_0)
|
||||
set(OPENSUBDIV_VERSION v3_7_0)
|
||||
set(OPENSUBDIV_URI https://github.com/PixarAnimationStudios/OpenSubdiv/archive/${OPENSUBDIV_VERSION}.tar.gz)
|
||||
set(OPENSUBDIV_HASH cd03aaf8890bc0b8550eef62029cabe7)
|
||||
set(OPENSUBDIV_HASH 470d53c4d4335a601c33a052ce7c33b4)
|
||||
set(OPENSUBDIV_HASH_TYPE MD5)
|
||||
set(OPENSUBDIV_FILE opensubdiv-${OPENSUBDIV_VERSION}.tar.gz)
|
||||
set(OPENSUBDIV_NAME OpenSubdiv)
|
||||
|
|
@ -258,9 +258,9 @@ set(SDL_HOMEPAGE https://www.libsdl.org)
|
|||
set(SDL_LICENSE SPDX:Zlib)
|
||||
set(SDL_COPYRIGHT "Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>")
|
||||
|
||||
set(OPENCOLORIO_VERSION 2.4.2)
|
||||
set(OPENCOLORIO_VERSION 2.5.0)
|
||||
set(OPENCOLORIO_URI https://github.com/AcademySoftwareFoundation/OpenColorIO/archive/v${OPENCOLORIO_VERSION}.tar.gz)
|
||||
set(OPENCOLORIO_HASH db64ac0b4a67fd8e6d6d8111dccade29)
|
||||
set(OPENCOLORIO_HASH 41d6b62ac672ed333ebfdcc1108407e0)
|
||||
set(OPENCOLORIO_HASH_TYPE MD5)
|
||||
set(OPENCOLORIO_FILE OpenColorIO-${OPENCOLORIO_VERSION}.tar.gz)
|
||||
set(OPENCOLORIO_NAME OpenColorIO)
|
||||
|
|
@ -268,10 +268,10 @@ set(OPENCOLORIO_HOMEPAGE https://github.com/AcademySoftwareFoundation/OpenColorI
|
|||
set(OPENCOLORIO_LICENSE SPDX:BSD-3-Clause)
|
||||
set(OPENCOLORIO_COPYRIGHT "Copyright Contributors to the OpenColorIO Project.")
|
||||
|
||||
set(MINIZIPNG_VERSION 3.0.7)
|
||||
set(MINIZIPNG_VERSION 4.0.10)
|
||||
set(MINIZIPNG_NAME minizip-ng)
|
||||
set(MINIZIPNG_URI https://github.com/zlib-ng/minizip-ng/archive/${MINIZIPNG_VERSION}.tar.gz)
|
||||
set(MINIZIPNG_HASH 09dcc8a9def348e1be9659e384c2cd55)
|
||||
set(MINIZIPNG_HASH 9b4de14db78016419598d0f292fde244)
|
||||
set(MINIZIPNG_HASH_TYPE MD5)
|
||||
set(MINIZIPNG_FILE minizip-ng-${MINIZIPNG_VERSION}.tar.gz)
|
||||
set(MINIZIPNG_HOMEPAGE https://github.com/zlib-ng/minizip-ng)
|
||||
|
|
@ -292,21 +292,19 @@ set(LLVM_HOMEPAGE https://github.com/llvm/llvm-project/)
|
|||
set(LLVM_LICENSE SPDX:Apache-2.0 WITH LLVM-exception)
|
||||
set(LLVM_COPYRIGHT "Copyright (c) 2003-2019 University of Illinois at Urbana-Champaign. All rights reserved.")
|
||||
|
||||
set(OPENIMAGEIO_VERSION v3.0.9.1)
|
||||
set(OPENIMAGEIO_VERSION v3.1.7.0)
|
||||
set(OPENIMAGEIO_NAME OpenImageIO)
|
||||
set(OPENIMAGEIO_URI https://github.com/AcademySoftwareFoundation/OpenImageIO/archive/refs/tags/${OPENIMAGEIO_VERSION}.tar.gz)
|
||||
set(OPENIMAGEIO_HASH 5a3490d405615f48d7340ba4af41380d)
|
||||
set(OPENIMAGEIO_HASH 951527a755911320659d4e23bb8e5ad9)
|
||||
set(OPENIMAGEIO_HASH_TYPE MD5)
|
||||
set(OPENIMAGEIO_FILE OpenImageIO-${OPENIMAGEIO_VERSION}.tar.gz)
|
||||
set(OPENIMAGEIO_HOMEPAGE https://github.com/AcademySoftwareFoundation/OpenImageIO)
|
||||
set(OPENIMAGEIO_LICENSE SPDX:Apache-2.0)
|
||||
set(OPENIMAGEIO_COPYRIGHT "Copyright Contributors to the OpenImageIO project.")
|
||||
|
||||
# 9.1.0 is currently oiio's preferred version although never versions may be available.
|
||||
# the preferred version can be found in oiio's externalpackages.cmake
|
||||
set(FMT_VERSION 9.1.0)
|
||||
set(FMT_VERSION 12.1.0)
|
||||
set(FMT_URI https://github.com/fmtlib/fmt/archive/refs/tags/${FMT_VERSION}.tar.gz)
|
||||
set(FMT_HASH 5dea48d1fcddc3ec571ce2058e13910a0d4a6bab4cc09a809d8b1dd1c88ae6f2)
|
||||
set(FMT_HASH ea7de4299689e12b6dddd392f9896f08fb0777ac7168897a244a6d6085043fea)
|
||||
set(FMT_HASH_TYPE SHA256)
|
||||
set(FMT_FILE fmt-${FMT_VERSION}.tar.gz)
|
||||
set(FMT_CPE "cpe:2.3:a:fmt:fmt:${FMT_VERSION}:*:*:*:*:*:*:*")
|
||||
|
|
@ -371,16 +369,16 @@ set(RUBBERBAND_COPYRIGHT "Copyright (c) 2025 Particular Programs Ltd")
|
|||
|
||||
# NOTE: When updating the python version, it's required to check the versions of
|
||||
# it wants to use in PCbuild/get_externals.bat for the following dependencies:
|
||||
# BZIP2, FFI and change the versions in this file as well. For compliance
|
||||
# BZIP2 and change the versions in this file as well. For compliance
|
||||
# reasons there can be no exceptions to this.
|
||||
# Additionally, keep the PYTHON_PIP_VERSION in sync with the pip version bundled
|
||||
# into Python.
|
||||
|
||||
set(PYTHON_VERSION 3.11.13)
|
||||
set(PYTHON_SHORT_VERSION 3.11)
|
||||
set(PYTHON_SHORT_VERSION_NO_DOTS 311)
|
||||
set(PYTHON_VERSION 3.13.9)
|
||||
set(PYTHON_SHORT_VERSION 3.13)
|
||||
set(PYTHON_SHORT_VERSION_NO_DOTS 313)
|
||||
set(PYTHON_URI https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tar.xz)
|
||||
set(PYTHON_HASH ec39a8018b9eedf6f0edeb44533bd279)
|
||||
set(PYTHON_HASH 516aabdf3de01eeefb6de1aacf9df810)
|
||||
set(PYTHON_HASH_TYPE MD5)
|
||||
set(PYTHON_FILE Python-${PYTHON_VERSION}.tar.xz)
|
||||
set(PYTHON_CPE "cpe:2.3:a:python:python:${PYTHON_VERSION}:-:*:*:*:*:*:*")
|
||||
|
|
@ -395,14 +393,14 @@ set(PYTHON_COPYRIGHT "Copyright (c) 2001-2023 Python Software Foundation. All ri
|
|||
# Currently it is done manually by tracking _PIP_VERSION variable in the
|
||||
# `Lib/ensurepip/__init__.py`. For example,
|
||||
# https://github.com/python/cpython/tree/v3.11.9/Lib/ensurepip/__init__.py
|
||||
set(PYTHON_PIP_VERSION 24.0)
|
||||
set(PYTHON_PIP_VERSION 25.2)
|
||||
set(PYTHON_PIP_CPE "cpe:2.3:a:pypa:pip:${PYTHON_PIP_VERSION}:*:*:*:*:*:*:*")
|
||||
|
||||
set(TBB_YEAR 2021)
|
||||
set(TBB_YEAR 2022)
|
||||
set(TBB_NAME oneTBB)
|
||||
set(TBB_VERSION v2021.13.0)
|
||||
set(TBB_VERSION v2022.3.0)
|
||||
set(TBB_URI https://github.com/uxlfoundation/oneTBB/archive/refs/tags/${TBB_VERSION}.tar.gz)
|
||||
set(TBB_HASH f287cd007240a838286ff13e7deaee12)
|
||||
set(TBB_HASH 2b242c465b194ac8e1451ea1354873ae)
|
||||
set(TBB_HASH_TYPE MD5)
|
||||
set(TBB_FILE oneTBB-${TBB_VERSION}.tar.gz)
|
||||
set(TBB_CPE "cpe:2.3:a:intel:threading_building_blocks:${TBB_YEAR}:*:*:*:*:*:*:*")
|
||||
|
|
@ -420,10 +418,10 @@ set(NANOBIND_HOMEPAGE https://github.com/wjakob/nanobind)
|
|||
set(NANOBIND_LICENSE SPDX:BSD-3-Clause)
|
||||
set(NANOBIND_COPYRIGHT "2023, Wenzel Jakob")
|
||||
|
||||
set(OPENVDB_VERSION 12.0.0)
|
||||
set(OPENVDB_VERSION 13.0.0)
|
||||
set(OPENVDB_NAME OpenVDB)
|
||||
set(OPENVDB_URI https://github.com/AcademySoftwareFoundation/openvdb/archive/v${OPENVDB_VERSION}.tar.gz)
|
||||
set(OPENVDB_HASH c5cd16784b6b42aaa956b574042f374d)
|
||||
set(OPENVDB_HASH 7a10f529ed12d9e3ed6d3fd50f157378)
|
||||
set(OPENVDB_HASH_TYPE MD5)
|
||||
set(OPENVDB_FILE openvdb-${OPENVDB_VERSION}.tar.gz)
|
||||
set(OPENVDB_HOMEPAGE http://www.openvdb.org/)
|
||||
|
|
@ -460,11 +458,9 @@ set(CYTHON_HOMEPAGE https://cython.org/)
|
|||
set(CYTHON_LICENSE SPDX:Apache-2.0)
|
||||
set(CYTHON_COPYRIGHT "Copyright Contributors to the Cython Project")
|
||||
# Needed by: Python scripts that read `.blend` files, as files may use Z-standard compression. (Once we move to Python 3.14, this could be replaced with inbuilt Zstandard support, see https://peps.python.org/pep-0784/)
|
||||
set(ZSTANDARD_VERSION 0.23.0)
|
||||
# NOTE: the release is not yet on GITHUB.
|
||||
# https://github.com/indygreg/python-zstandard/releases/download/${ZSTANDARD_VERSION}/zstandard-${ZSTANDARD_VERSION}.tar.gz)
|
||||
set(ZSTANDARD_URI https://files.pythonhosted.org/packages/ed/f6/2ac0287b442160a89d726b17a9184a4c615bb5237db763791a7fd16d9df1/zstandard-0.23.0.tar.gz)
|
||||
set(ZSTANDARD_HASH b2d8c62d08e7255f68f7a740bae85b3c9b8e5466baa9cbf7f57f1cde0ac6bc09)
|
||||
set(ZSTANDARD_VERSION 0.25.0)
|
||||
set(ZSTANDARD_URI https://github.com/indygreg/python-zstandard/releases/download/${ZSTANDARD_VERSION}/zstandard-${ZSTANDARD_VERSION}.tar.gz)
|
||||
set(ZSTANDARD_HASH 7713e1179d162cf5c7906da876ec2ccb9c3a9dcbdffef0cc7f70c3667a205f0b)
|
||||
set(ZSTANDARD_HASH_TYPE SHA256)
|
||||
set(ZSTANDARD_FILE zstandard-${ZSTANDARD_VERSION}.tar.gz)
|
||||
set(ZSTANDARD_HOMEPAGE https://github.com/indygreg/python-zstandard/)
|
||||
|
|
@ -475,14 +471,21 @@ set(AUTOPEP8_VERSION 2.3.1)
|
|||
# Needed by: `autopep8` (so the version doesn't change on rebuild).
|
||||
set(PYCODESTYLE_VERSION 2.13)
|
||||
# Build system for other packages (not used by Blender at run-time).
|
||||
set(MESON_VERSION 0.63.0)
|
||||
set(MESON_VERSION 1.9.0)
|
||||
# Build time requirements for numpy and cython
|
||||
set(SETUPTOOLS_VERSION 80.9.0)
|
||||
set(MESON_PYTHON_VERSION 0.18.0)
|
||||
set(PACKAGING_VERSION 25.0) # meson-python dep
|
||||
set(PYPROJECT_METADATA_VERSION 0.9.1) # meson-python dep
|
||||
|
||||
|
||||
|
||||
# When this numpy version is bumped, please also change the limit value set for variable `install_requires`
|
||||
# in build_files/utils/make_bpy_wheel.py
|
||||
set(NUMPY_VERSION 1.26.4)
|
||||
set(NUMPY_SHORT_VERSION 1.26)
|
||||
set(NUMPY_VERSION 2.3.4)
|
||||
set(NUMPY_SHORT_VERSION 2.3)
|
||||
set(NUMPY_URI https://github.com/numpy/numpy/releases/download/v${NUMPY_VERSION}/numpy-${NUMPY_VERSION}.tar.gz)
|
||||
set(NUMPY_HASH 19550cbe7bedd96a928da9d4ad69509d)
|
||||
set(NUMPY_HASH 8717ed1828a8a390c454c6636e91c46a)
|
||||
set(NUMPY_HASH_TYPE MD5)
|
||||
set(NUMPY_FILE numpy-${NUMPY_VERSION}.tar.gz)
|
||||
set(NUMPY_CPE "cpe:2.3:a:numpy:numpy:${NUMPY_VERSION}:*:*:*:*:*:*:*")
|
||||
|
|
@ -612,6 +615,20 @@ Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France.
|
|||
Copyright (c) 2012, CS Systemes d'Information, France.
|
||||
]=])
|
||||
|
||||
set(OPENJPH_VERSION 0.25.2)
|
||||
set(OPENJPH_URI https://github.com/aous72/OpenJPH/archive/refs/tags/${OPENJPH_VERSION}.tar.gz)
|
||||
set(OPENJPH_HASH ae5f09562cb811cb2fb881c5eb74583e18db941848cfa3c35787e2580f3defc6)
|
||||
set(OPENJPH_HASH_TYPE SHA256)
|
||||
set(OPENJPH_NAME OpenJPH)
|
||||
set(OPENJPH_HOMEPAGE https://github.com/aous72/OpenJPH)
|
||||
set(OPENJPH_FILE openjph-v${OPENJPH_VERSION}.tar.gz)
|
||||
set(OPENJPH_LICENSE SPDX:BSD-2-Clause)
|
||||
set(OPENJPH_COPYRIGHT [=[
|
||||
Copyright (c) 2019, Aous Naman
|
||||
Copyright (c) 2019, Kakadu Software Pty Ltd, Australia
|
||||
Copyright (c) 2019, The University of New South Wales, Australia
|
||||
]=])
|
||||
|
||||
set(FFMPEG_VERSION 7.1.1)
|
||||
set(FFMPEG_URI http://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2)
|
||||
set(FFMPEG_HASH 0c8da2f11579a01e014fc007cbacf5bb4da1d06afd0b43c7f8097ec7c0f143ba)
|
||||
|
|
@ -656,9 +673,9 @@ set(SNDFILE_HOMEPAGE http://libsndfile.github.io/libsndfile/)
|
|||
set(SNDFILE_LICENSE SPDX:LGPL-2.1-or-later)
|
||||
set(SNDFILE_COPYRIGHT "Copyright (C) 2011-2016 Erik de Castro Lopo <erikd@mega-nerd.com>")
|
||||
|
||||
set(WEBP_VERSION 1.3.2)
|
||||
set(WEBP_VERSION 1.6.0)
|
||||
set(WEBP_URI https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz)
|
||||
set(WEBP_HASH 34869086761c0e2da6361035f7b64771)
|
||||
set(WEBP_HASH cceb6447180f961473b181c9ef38b630)
|
||||
set(WEBP_HASH_TYPE MD5)
|
||||
set(WEBP_FILE libwebp-${WEBP_VERSION}.tar.gz)
|
||||
set(WEBP_CPE "cpe:2.3:a:webmproject:libwebp:${WEBP_VERSION}:*:*:*:*:*:*:*")
|
||||
|
|
@ -687,9 +704,9 @@ set(XML2_HOMEPAGE https://gitlab.gnome.org/GNOME/libxml2)
|
|||
set(XML2_LICENSE SPDX:MIT)
|
||||
set(XML2_COPYRIGHT "Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved.")
|
||||
|
||||
set(YAMLCPP_VERSION 0.7.0)
|
||||
set(YAMLCPP_URI https://codeload.github.com/jbeder/yaml-cpp/tar.gz/yaml-cpp-${YAMLCPP_VERSION})
|
||||
set(YAMLCPP_HASH 74d646a3cc1b5d519829441db96744f0)
|
||||
set(YAMLCPP_VERSION 0.8.0)
|
||||
set(YAMLCPP_URI https://github.com/jbeder/yaml-cpp/archive/refs/tags/${YAMLCPP_VERSION}.tar.gz)
|
||||
set(YAMLCPP_HASH 1d2c7975edba60e995abe3c4af6480e5)
|
||||
set(YAMLCPP_HASH_TYPE MD5)
|
||||
set(YAMLCPP_FILE yaml-cpp-${YAMLCPP_VERSION}.tar.gz)
|
||||
set(YAMLCPP "cpe:2.3:a:yaml-cpp_project:yaml-cpp:${YAMLCPP_VERSION}:*:*:*:*:*:*:*")
|
||||
|
|
@ -705,10 +722,10 @@ set(PYSTRING_HOMEPAGE https://github.com/imageworks/pystring)
|
|||
set(PYSTRING_LICENSE SPDX:BSD-3-Clause)
|
||||
set(PYSTRING_COPYRIGHT "Copyright (c) 2008-2010, Sony Pictures Imageworks Inc; All rights reserved.")
|
||||
|
||||
set(EXPAT_VERSION 2_6_4)
|
||||
set(EXPAT_VERSION_DOTS 2.6.4)
|
||||
set(EXPAT_VERSION 2_7_2)
|
||||
set(EXPAT_VERSION_DOTS 2.7.2)
|
||||
set(EXPAT_URI https://github.com/libexpat/libexpat/archive/R_${EXPAT_VERSION}.tar.gz)
|
||||
set(EXPAT_HASH f2f8d61e2bd71d1118e1258ed9f4c0b7)
|
||||
set(EXPAT_HASH 2f9776968172e360fbf385d99660ce28)
|
||||
set(EXPAT_HASH_TYPE MD5)
|
||||
set(EXPAT_FILE libexpat-${EXPAT_VERSION}.tar.gz)
|
||||
set(EXPAT_HOMEPAGE https://github.com/libexpat/libexpat/)
|
||||
|
|
@ -762,19 +779,16 @@ set(BZIP2_HOMEPAGE https://sourceware.org/bzip2/)
|
|||
set(BZIP2_LICENSE SPDX:bzip2-1.0.6)
|
||||
set(BZIP2_COPYRIGHT "Copyright (C) 1996-2019 Julian R Seward. All rights reserved.")
|
||||
|
||||
# NOTE: This will *HAVE* to match the version python ships on windows which
|
||||
# is hardcoded in pythons PCbuild/get_externals.bat. For compliance reasons there
|
||||
# can be no exceptions to this.
|
||||
set(FFI_VERSION 3.4.4)
|
||||
set(FFI_VERSION 3.5.2)
|
||||
set(FFI_NAME libffi)
|
||||
set(FFI_URI https://github.com/libffi/libffi/releases/download/v${FFI_VERSION}/libffi-${FFI_VERSION}.tar.gz)
|
||||
set(FFI_HASH d66c56ad259a82cf2a9dfc408b32bf5da52371500b84745f7fb8b645712df676)
|
||||
set(FFI_HASH f3a3082a23b37c293a4fcd1053147b371f2ff91fa7ea1b2a52e335676bac82dc)
|
||||
set(FFI_HASH_TYPE SHA256)
|
||||
set(FFI_FILE libffi-${FFI_VERSION}.tar.gz)
|
||||
set(FFI_CPE "cpe:2.3:a:libffi_project:libffi:${FFI_VERSION}:*:*:*:*:*:*:*")
|
||||
set(FFI_HOMEPAGE https://github.com/libffi/libffi/)
|
||||
set(FFI_LICENSE SPDX:MIT)
|
||||
set(FFI_COPYRIGHT "Copyright (c) 1996-2024 Anthony Green, Red Hat, Inc and others.")
|
||||
set(FFI_COPYRIGHT "Copyright (c) 1996-2025 Anthony Green, Red Hat, Inc and others.")
|
||||
|
||||
set(LZMA_VERSION 5.2.5)
|
||||
set(LZMA_URI https://tukaani.org/xz/xz-${LZMA_VERSION}.tar.bz2)
|
||||
|
|
@ -836,20 +850,20 @@ This product includes software developed at:
|
|||
Pixar (http://www.pixar.com/).
|
||||
]=])
|
||||
|
||||
set(MATERIALX_VERSION 1.39.3)
|
||||
set(MATERIALX_VERSION 1.39.4)
|
||||
set(MATERIALX_NAME MaterialX)
|
||||
set(MATERIALX_URI https://github.com/AcademySoftwareFoundation/MaterialX/archive/refs/tags/v${MATERIALX_VERSION}.tar.gz)
|
||||
set(MATERIALX_HASH 43fdf32d52d6e04e40761e3c08f66476)
|
||||
set(MATERIALX_HASH 4704716b93e4c2d6b3693aa56a13b71b)
|
||||
set(MATERIALX_HASH_TYPE MD5)
|
||||
set(MATERIALX_FILE materialx-v${MATERIALX_VERSION}.tar.gz)
|
||||
set(MATERIALX_HOMEPAGE https://github.com/AcademySoftwareFoundation/MaterialX)
|
||||
set(MATERIALX_LICENSE SPDX:Apache-2.0)
|
||||
set(MATERIALX_COPYRIGHT "Copyright Contributors to the MaterialX Project")
|
||||
|
||||
set(OIDN_VERSION 2.3.3)
|
||||
set(OIDN_VERSION 2.4.1)
|
||||
set(OIDN_NAME OpenImageDenoise)
|
||||
set(OIDN_URI https://github.com/RenderKit/oidn/releases/download/v${OIDN_VERSION}/oidn-${OIDN_VERSION}.src.tar.gz)
|
||||
set(OIDN_HASH f7756731235b51dfb788787e2f7c9ee0)
|
||||
set(OIDN_HASH 83f2ae3e891595bba0e85a3ed6d6b653)
|
||||
set(OIDN_HASH_TYPE MD5)
|
||||
set(OIDN_FILE oidn-${OIDN_VERSION}.src.tar.gz)
|
||||
set(OIDN_HOMEPAGE https://www.openimagedenoise.org/)
|
||||
|
|
@ -883,16 +897,16 @@ set(NASM_FILE nasm-${NASM_VERSION}.tar.gz)
|
|||
set(NASM_PCE "cpe:2.3:a:nasm:nasm:${NASM_VERSION}:*:*:*:*:*:*:*")
|
||||
set(NASM_DEPSBUILDTIMEONLY "Blender ships the produced artifact, but doesn't ship/link with any binary")
|
||||
|
||||
set(XR_OPENXR_SDK_VERSION 1.0.22)
|
||||
set(XR_OPENXR_SDK_VERSION 1.1.53)
|
||||
set(XR_OPENXR_SDK_URI https://github.com/KhronosGroup/OpenXR-SDK/archive/release-${XR_OPENXR_SDK_VERSION}.tar.gz)
|
||||
set(XR_OPENXR_SDK_HASH a2623ebab3d0b340bc16311b14f02075)
|
||||
set(XR_OPENXR_SDK_HASH e2e1b25fd480947ddc2f2c68423d47e5)
|
||||
set(XR_OPENXR_SDK_HASH_TYPE MD5)
|
||||
set(XR_OPENXR_SDK_FILE OpenXR-SDK-${XR_OPENXR_SDK_VERSION}.tar.gz)
|
||||
set(XR_OPENXR_SDK_NAME OpenXR)
|
||||
set(XR_OPENXR_SDK_HOMEPAGE https://khronos.org/openxr/)
|
||||
set(XR_OPENXR_SDK_LICENSE SPDX:Apache-2.0)
|
||||
set(XR_OPENXR_SDK_COPYRIGHT [=[
|
||||
Copyright (c) 2017-2020 The Khronos Group Inc.
|
||||
Copyright (c) 2017-2025 The Khronos Group Inc.
|
||||
Copyright (c) 2017-2019 Valve Corporation.
|
||||
Copyright (c) 2017-2019 LunarG, Inc.
|
||||
Copyright (c) 2019 Collabora, Ltd.
|
||||
|
|
@ -960,9 +974,9 @@ Copyright © 2011-2012 Collabora, Ltd.
|
|||
Copyright © 2010 Red Hat <mjg@redhat.com>.
|
||||
]=])
|
||||
|
||||
set(ISPC_VERSION v1.28.0)
|
||||
set(ISPC_VERSION v1.29.1)
|
||||
set(ISPC_URI https://github.com/ispc/ispc/archive/${ISPC_VERSION}.tar.gz)
|
||||
set(ISPC_HASH 5ada5ee20badc849647213fda08e651c)
|
||||
set(ISPC_HASH b1085b182f560d3cbb9bd2ba208bc518)
|
||||
set(ISPC_HASH_TYPE MD5)
|
||||
set(ISPC_FILE ispc-${ISPC_VERSION}.tar.gz)
|
||||
set(ISPC_DEPSBUILDTIMEONLY "Blender ships the produced artifact, but doesn't ship/link with any binary")
|
||||
|
|
@ -1001,9 +1015,9 @@ Copyright (C) 1999-2006 Takeshi Kanno.
|
|||
Copyright (C) 2007-2009 Antony Dovgal.
|
||||
]=])
|
||||
|
||||
set(ZSTD_VERSION 1.5.6)
|
||||
set(ZSTD_VERSION 1.5.7)
|
||||
set(ZSTD_URI https://github.com/facebook/zstd/releases/download/v${ZSTD_VERSION}/zstd-${ZSTD_VERSION}.tar.gz)
|
||||
set(ZSTD_HASH 8c29e06cf42aacc1eafc4077ae2ec6c6fcb96a626157e0593d5e82a34fd403c1)
|
||||
set(ZSTD_HASH eb33e51f49a15e023950cd7825ca74a4a2b43db8354825ac24fc1b7ee09e6fa3)
|
||||
set(ZSTD_HASH_TYPE SHA256)
|
||||
set(ZSTD_FILE zstd-${ZSTD_VERSION}.tar.gz)
|
||||
set(ZSTD_CPE "cpe:2.3:a:facebook:zstandard:${ZSTD_VERSION}:*:*:*:*:*:*:*")
|
||||
|
|
@ -1042,17 +1056,6 @@ set(OPENPGL_HOMEPAGE http://www.openpgl.org/)
|
|||
set(OPENPGL_LICENSE SPDX:Apache-2.0)
|
||||
set(OPENPGL_COPYRIGHT "Copyright 2020 Intel Corporation.")
|
||||
|
||||
# Default version used by DPCPP: unified-runtime/cmake/FetchLevelZero.cmake
|
||||
set(LEVEL_ZERO_VERSION 1.21.9)
|
||||
set(LEVEL_ZERO_NAME "oneAPI Level Zero")
|
||||
set(LEVEL_ZERO_URI https://codeload.github.com/oneapi-src/level-zero/tar.gz/refs/tags/v${LEVEL_ZERO_VERSION})
|
||||
set(LEVEL_ZERO_HASH ba543a01adbcbd241518c3eee80b75414094d1fd3efcde9ff2693196cea4d057)
|
||||
set(LEVEL_ZERO_HASH_TYPE SHA256)
|
||||
set(LEVEL_ZERO_FILE level-zero-${LEVEL_ZERO_VERSION}.tar.gz)
|
||||
set(LEVEL_ZERO_HOMEPAGE https://github.com/oneapi-src/level-zero)
|
||||
set(LEVEL_ZERO_LICENSE SPDX:MIT)
|
||||
set(LEVEL_ZERO_COPYRIGHT "Copyright (C) 2019-2024 Intel Corporation")
|
||||
|
||||
# Currently latest commit from sycl-rel-6_2 release branch
|
||||
set(DPCPP_VERSION 05e047c0932d5043ddff5e4058a3afca8e0943aa)
|
||||
set(DPCPP_URI https://github.com/intel/llvm/archive/${DPCPP_VERSION}.tar.gz)
|
||||
|
|
@ -1072,6 +1075,17 @@ set(DPCPP_COPYRIGHT "Copyright (C) 2021-2025 Intel Corporation")
|
|||
# by each dep, these will only have to be downloaded and unpacked, dpcpp
|
||||
# will take care of building them, unpack is being done in dpcpp_deps.cmake
|
||||
|
||||
# Default version used by DPCPP: unified-runtime/cmake/FetchLevelZero.cmake
|
||||
set(LEVEL_ZERO_VERSION 1.21.9)
|
||||
set(LEVEL_ZERO_NAME "oneAPI Level Zero")
|
||||
set(LEVEL_ZERO_URI https://codeload.github.com/oneapi-src/level-zero/tar.gz/refs/tags/v${LEVEL_ZERO_VERSION})
|
||||
set(LEVEL_ZERO_HASH ba543a01adbcbd241518c3eee80b75414094d1fd3efcde9ff2693196cea4d057)
|
||||
set(LEVEL_ZERO_HASH_TYPE SHA256)
|
||||
set(LEVEL_ZERO_FILE level-zero-${LEVEL_ZERO_VERSION}.tar.gz)
|
||||
set(LEVEL_ZERO_HOMEPAGE https://github.com/oneapi-src/level-zero)
|
||||
set(LEVEL_ZERO_LICENSE SPDX:MIT)
|
||||
set(LEVEL_ZERO_COPYRIGHT "Copyright (C) 2019-2024 Intel Corporation")
|
||||
|
||||
# Source llvm/lib/SYCLLowerIR/CMakeLists.txt
|
||||
set(VCINTRINSICS_VERSION 4e51b2467104a257c22788e343dafbdde72e28bb)
|
||||
set(VCINTRINSICS_URI https://github.com/intel/vc-intrinsics/archive/${VCINTRINSICS_VERSION}.tar.gz)
|
||||
|
|
@ -1135,7 +1149,7 @@ set(UNIFIED_RUNTIME_HOMEPAGE https://github.com/oneapi-src/unified-runtime)
|
|||
set(UNIFIED_RUNTIME_LICENSE SPDX:Apache-2.0 WITH LLVM-exception)
|
||||
set(UNIFIED_RUNTIME_COPYRIGHT "Copyright (C) 2019-2025 Intel Corporation")
|
||||
|
||||
# Source unified-runtime/source/common/CMakeList.txt
|
||||
# Source unified-runtime/source/common/CMakeLists.txt
|
||||
set(UNIFIED_MEMORY_FRAMEWORK_VERSION v0.11.0)
|
||||
set(UNIFIED_MEMORY_FRAMEWORK_URI https://github.com/oneapi-src/unified-memory-framework/archive/${UNIFIED_MEMORY_FRAMEWORK_VERSION}.tar.gz)
|
||||
set(UNIFIED_MEMORY_FRAMEWORK_HASH d7a6cafe978d89628003e3001a1adef57cd733c9d9a6dfef0375c2123ec2e29c)
|
||||
|
|
@ -1145,7 +1159,7 @@ set(UNIFIED_MEMORY_FRAMEWORK_HOMEPAGE https://github.com/oneapi-src/unified-memo
|
|||
set(UNIFIED_MEMORY_FRAMEWORK_LICENSE SPDX:Apache-2.0 WITH LLVM-exception)
|
||||
set(UNIFIED_MEMORY_FRAMEWORK_COPYRIGHT "Copyright (C) 2023-2024 Intel Corporation")
|
||||
|
||||
# Source xptifw/src/CMakeList.txt
|
||||
# Source xptifw/src/CMakeLists.txt
|
||||
set(PARALLEL_HASHMAP_VERSION 8a889d3699b3c09ade435641fb034427f3fd12b6)
|
||||
set(PARALLEL_HASHMAP_URI https://github.com/greg7mdp/parallel-hashmap/archive/${PARALLEL_HASHMAP_VERSION}.tar.gz)
|
||||
set(PARALLEL_HASHMAP_HASH da853a4a2cee32b1563391a3661cff3cf48af5e76e320c004d5520835eb9e5f6)
|
||||
|
|
@ -1280,9 +1294,9 @@ set(OCLOC_HOMEPAGE https://github.com/intel/compute-runtime)
|
|||
set(OCLOC_LICENSE SPDX:MIT)
|
||||
set(OCLOC_COPYRIGHT "Copyright (C) 2018-2023 Intel Corporation")
|
||||
|
||||
set(AOM_VERSION 3.4.0)
|
||||
set(AOM_VERSION 3.13.1)
|
||||
set(AOM_URI https://storage.googleapis.com/aom-releases/libaom-${AOM_VERSION}.tar.gz)
|
||||
set(AOM_HASH bd754b58c3fa69f3ffd29da77de591bd9c26970e3b18537951336d6c0252e354)
|
||||
set(AOM_HASH 19e45a5a7192d690565229983dad900e76b513a02306c12053fb9a262cbeca7d)
|
||||
set(AOM_HASH_TYPE SHA256)
|
||||
set(AOM_FILE libaom-${AOM_VERSION}.tar.gz)
|
||||
set(AOM_HOMEPAGE https://aomedia.googlesource.com/aom/)
|
||||
|
|
@ -1311,9 +1325,9 @@ set(HARFBUZZ_FILE harfbuzz-${HARFBUZZ_VERSION}.tar.gz)
|
|||
set(HARFBUZZ_DEPSBUILDTIMEONLY "UI module asked for preliminary libs so they could work on integrating it")
|
||||
set(HARFBUZZ_HOMEPAGE https://github.com/harfbuzz/harfbuzz)
|
||||
|
||||
set(SHADERC_VERSION v2025.3)
|
||||
set(SHADERC_VERSION v2025.4)
|
||||
set(SHADERC_URI https://github.com/google/shaderc/archive/${SHADERC_VERSION}.tar.gz)
|
||||
set(SHADERC_HASH c110401f6e36ee234008b4cabe991ee0)
|
||||
set(SHADERC_HASH 02208e374e610808c4ca3b1e7627b82d)
|
||||
set(SHADERC_HASH_TYPE MD5)
|
||||
set(SHADERC_FILE shaderc-${SHADERC_VERSION}.tar.gz)
|
||||
set(SHADERC_NAME ShaderC)
|
||||
|
|
@ -1324,9 +1338,9 @@ set(SHADERC_COPYRIGHT "Copyright 2015 The Shaderc Authors. All rights reserved."
|
|||
# The versions of shaderc's dependencies can be found in the root of shaderc's
|
||||
# source in a file called DEPS.
|
||||
|
||||
set(SHADERC_SPIRV_TOOLS_VERSION 33e02568181e3312f49a3cf33df470bf96ef293a)
|
||||
set(SHADERC_SPIRV_TOOLS_VERSION 19042c8921f35f7bec56b9e5c96c5f5691588ca8)
|
||||
set(SHADERC_SPIRV_TOOLS_URI https://github.com/KhronosGroup/SPIRV-Tools/archive/${SHADERC_SPIRV_TOOLS_VERSION}.tar.gz)
|
||||
set(SHADERC_SPIRV_TOOLS_HASH 7b83eee717a6c4d7e4f8d7e96a32a298)
|
||||
set(SHADERC_SPIRV_TOOLS_HASH 69e76c4ebfd29d9cb820a7c8e2874f7a)
|
||||
set(SHADERC_SPIRV_TOOLS_HASH_TYPE MD5)
|
||||
set(SHADERC_SPIRV_TOOLS_FILE SPIRV-Tools-${SHADERC_SPIRV_TOOLS_VERSION}.tar.gz)
|
||||
set(SHADERC_SPIRV_TOOLS_NAME SPIR-V Tools)
|
||||
|
|
@ -1334,18 +1348,18 @@ set(SHADERC_SPIRV_TOOLS_HOMEPAGE https://github.com/KhronosGroup/SPIRV-Tools/)
|
|||
set(SHADERC_SPIRV_TOOLS_LICENSE SPDX:Apache-2.0)
|
||||
set(SHADERC_SPIRV_TOOLS_COPYRIGHT "Copyright (c) 2015-2016 The Khronos Group Inc.")
|
||||
|
||||
set(SHADERC_SPIRV_HEADERS_VERSION 2a611a970fdbc41ac2e3e328802aed9985352dca)
|
||||
set(SHADERC_SPIRV_HEADERS_VERSION 01e0577914a75a2569c846778c2f93aa8e6feddd)
|
||||
set(SHADERC_SPIRV_HEADERS_URI https://github.com/KhronosGroup/SPIRV-Headers/archive/${SHADERC_SPIRV_HEADERS_VERSION}.tar.gz)
|
||||
set(SHADERC_SPIRV_HEADERS_HASH 21c42d628b4262ad9defc021e24e2abe)
|
||||
set(SHADERC_SPIRV_HEADERS_HASH 7eca56fd7a4837566ba770608a5fc346)
|
||||
set(SHADERC_SPIRV_HEADERS_HASH_TYPE MD5)
|
||||
set(SHADERC_SPIRV_HEADERS_FILE SPIRV-Headers-${SHADERC_SPIRV_HEADERS_VERSION}.tar.gz)
|
||||
set(SHADERC_SPIRV_HEADERS_HOMEPAGE https://github.com/KhronosGroup/SPIRV-Headers)
|
||||
set(SHADERC_SPIRV_HEADERS_LICENSE SPDX:MIT-Khronos-old)
|
||||
set(SHADERC_SPIRV_HEADERS_COPYRIGHT "Copyright (c) 2015-2024 The Khronos Group Inc.")
|
||||
|
||||
set(SHADERC_GLSLANG_VERSION efd24d75bcbc55620e759f6bf42c45a32abac5f8)
|
||||
set(SHADERC_GLSLANG_VERSION d213562e35573012b6348b2d584457c3704ac09b)
|
||||
set(SHADERC_GLSLANG_URI https://github.com/KhronosGroup/glslang/archive/${SHADERC_GLSLANG_VERSION}.tar.gz)
|
||||
set(SHADERC_GLSLANG_HASH c0ff01b5791dbc6c77e0eb295ce2ffc6)
|
||||
set(SHADERC_GLSLANG_HASH ac98b61f77ffade6bf819e342dc40c4c)
|
||||
set(SHADERC_GLSLANG_HASH_TYPE MD5)
|
||||
set(SHADERC_GLSLANG_FILE glslang-${SHADERC_GLSLANG_VERSION}.tar.gz)
|
||||
set(SHADERC_GLSLANG_HOMEPAGE https://github.com/KhronosGroup/glslang)
|
||||
|
|
@ -1355,12 +1369,13 @@ Copyright 2020 The Khronos Group Inc.
|
|||
Copyright (C) 2015-2018 Google, Inc.
|
||||
]=])
|
||||
|
||||
set(VULKAN_VERSION 1.3.296)
|
||||
|
||||
set(VULKAN_VERSION 1.4.328)
|
||||
|
||||
set(VULKAN_HEADERS_VERSION ${VULKAN_VERSION})
|
||||
set(VULKAN_HEADERS_NAME Vulkan-Headers)
|
||||
set(VULKAN_HEADERS_URI https://github.com/KhronosGroup/Vulkan-Headers/archive/refs/tags/v${VULKAN_HEADERS_VERSION}.tar.gz)
|
||||
set(VULKAN_HEADERS_HASH 3f4cd229d8f7c24c9b5a6ead3d674803)
|
||||
set(VULKAN_HEADERS_HASH 17bc769b0cef7d9acbc0ed1710d0311f)
|
||||
set(VULKAN_HEADERS_HASH_TYPE MD5)
|
||||
set(VULKAN_HEADERS_FILE Vulkan-Headers-${VULKAN_HEADERS_VERSION}.tar.gz)
|
||||
set(VULKAN_HEADERS_HOMEPAGE https://github.com/KhronosGroup/Vulkan-Headers)
|
||||
|
|
@ -1370,7 +1385,7 @@ set(VULKAN_HEADERS_COPYRIGHT "Copyright 2015-2023 The Khronos Group Inc.")
|
|||
set(VULKAN_LOADER_VERSION ${VULKAN_VERSION})
|
||||
set(VULKAN_LOADER_NAME Vulkan-Loader)
|
||||
set(VULKAN_LOADER_URI https://github.com/KhronosGroup/Vulkan-Loader/archive/refs/tags/v${VULKAN_LOADER_VERSION}.tar.gz)
|
||||
set(VULKAN_LOADER_HASH bca05ec4914888990c92fa9c3e2738ff)
|
||||
set(VULKAN_LOADER_HASH bd24b3a4ac62e3c25281da497afdf278)
|
||||
set(VULKAN_LOADER_HASH_TYPE MD5)
|
||||
set(VULKAN_LOADER_FILE Vulkan-Loader-${VULKAN_LOADER_VERSION}.tar.gz)
|
||||
set(VULKAN_LOADER_HOMEPAGE https://github.com/KhronosGroup/Vulkan-Loader)
|
||||
|
|
@ -1384,7 +1399,7 @@ Copyright (c) 2019 Google Inc.
|
|||
|
||||
set(VULKAN_UTILITY_LIBRARIES_VERSION ${VULKAN_VERSION})
|
||||
set(VULKAN_UTILITY_LIBRARIES_URI https://github.com/KhronosGroup/Vulkan-Utility-Libraries/archive/refs/tags/v${VULKAN_UTILITY_LIBRARIES_VERSION}.tar.gz)
|
||||
set(VULKAN_UTILITY_LIBRARIES_HASH 02091bdc2b5862685da83b37a6c48821)
|
||||
set(VULKAN_UTILITY_LIBRARIES_HASH 224bdffbf27bc4f14f8dfdf9ab97c594)
|
||||
set(VULKAN_UTILITY_LIBRARIES_HASH_TYPE MD5)
|
||||
set(VULKAN_UTILITY_LIBRARIES_FILE Vulkan-Utility-Libraries-${VULKAN_UTILITY_LIBRARIES_VERSION}.tar.gz)
|
||||
set(VULKAN_UTILITY_LIBRARIES_HOMEPAGE https://github.com/KhronosGroup/Vulkan-Utility-Libraries)
|
||||
|
|
@ -1404,7 +1419,7 @@ set(VULKAN_MEMORY_ALLOCATOR_COPYRIGHT "Copyright (c) 2017-2025 Advanced Micro De
|
|||
|
||||
set(SPIRV_HEADERS_VERSION ${VULKAN_VERSION})
|
||||
set(SPIRV_HEADERS_URI https://github.com/KhronosGroup/SPIRV-Headers/archive/refs/tags/vulkan-sdk-${SPIRV_HEADERS_VERSION}.0.tar.gz)
|
||||
set(SPIRV_HEADERS_HASH adee3d432b63f345c8ee6d625d0c8e6c)
|
||||
set(SPIRV_HEADERS_HASH 342ebebcea5dae02f7e6638fe753f249)
|
||||
set(SPIRV_HEADERS_HASH_TYPE MD5)
|
||||
set(SPIRV_HEADERS_FILE SPIRV-Headers-${SPIRV_HEADERS_VERSION}.tar.gz)
|
||||
set(SPIRV_HEADERS_NAME SPIR-V Headers)
|
||||
|
|
@ -1423,21 +1438,69 @@ set(SPIRV_REFLECT_HOMEPAGE https://github.com/KhronosGroup/SPIRV-Reflect)
|
|||
set(SPIRV_REFLECT_LICENSE SPDX:Apache-2.0)
|
||||
set(SPIRV_REFLECT_COPYRIGHT "Copyright 2017-2018 Google Inc.")
|
||||
|
||||
set(PYBIND11_VERSION 2.10.1)
|
||||
set(PYBIND11_VERSION 3.0.1)
|
||||
set(PYBIND11_URI https://github.com/pybind/pybind11/archive/refs/tags/v${PYBIND11_VERSION}.tar.gz)
|
||||
set(PYBIND11_HASH ce07bfd5089245da7807b3faf6cbc878)
|
||||
set(PYBIND11_HASH 81399a5277559163b3ee912b41de1b76)
|
||||
set(PYBIND11_HASH_TYPE MD5)
|
||||
set(PYBIND11_FILE pybind-v${PYBIND11_VERSION}.tar.gz)
|
||||
set(PYBIND11_HOMEPAGE https://github.com/pybind/pybind11)
|
||||
set(PYBIND11_LICENSE SPDX:BSD-2-Clause)
|
||||
set(PYBIND11_COPYRIGHT "Copyright (c) 2016 Wenzel Jakob <wenzel.jakob@epfl.ch>, All rights reserved.")
|
||||
|
||||
set(HIPRT_VERSION c4298933fe046e3f915977b5a69537a59aac8f47)
|
||||
set(HIPRT_VERSION 606b4886efabce918dd0634ef71c06615a47c83b)
|
||||
set(HIPRT_LIBRARY_VERSION 02005)
|
||||
set(HIPRT_URI https://github.com/GPUOpen-LibrariesAndSDKs/HIPRT/archive/${HIPRT_VERSION}.tar.gz)
|
||||
set(HIPRT_HASH 65b8a975d23db04d908c758f3fb7bae3)
|
||||
set(HIPRT_HASH 4bb933c2cf284257625b782d571c02a0)
|
||||
set(HIPRT_HASH_TYPE MD5)
|
||||
set(HIPRT_FILE hiprt-${HIPRT_VERSION}.tar.gz)
|
||||
set(HIPRT_HOMEPAGE https://github.com/GPUOpen-LibrariesAndSDKs/HIPRT)
|
||||
set(HIPRT_LICENSE SPDX:MIT)
|
||||
set(HIPRT_COPYRIGHT "Copyright (C) 2024 Advanced Micro Devices, Inc. All Rights Reserved. ")
|
||||
|
||||
set(THORVG_VERSION v1.0-pre31)
|
||||
set(THORVG_URI https://github.com/thorvg/thorvg/releases/download/${THORVG_VERSION}/thorvg.tar.gz)
|
||||
set(THORVG_HASH b1d13e7ffb96961c5d2e3cb07dca4676)
|
||||
set(THORVG_HASH_TYPE MD5)
|
||||
set(THORVG_FILE thorvg-${THORVG_VERSION}.tar.gz)
|
||||
set(THORVG_HOMEPAGE https://www.thorvg.org/)
|
||||
set(THORVG_LICENSE SPDX:MIT)
|
||||
set(THORVG_COPYRIGHT "Copyright (c) 2020 - 2025 ThorVG Project")
|
||||
|
||||
set(LIBHEIF_VERSION 1.20.2)
|
||||
set(LIBHEIF_URI https://github.com/strukturag/libheif/releases/download/v${LIBHEIF_VERSION}/libheif-${LIBHEIF_VERSION}.tar.gz)
|
||||
set(LIBHEIF_HASH 68ac9084243004e0ef3633f184eeae85d615fe7e4444373a0a21cebccae9d12a)
|
||||
set(LIBHEIF_HASH_TYPE SHA256)
|
||||
set(LIBHEIF_FILE libheif-${LIBHEIF_VERSION}.tar.gz)
|
||||
set(LIBHEIF_HOMEPAGE https://github.com/strukturag/libheif)
|
||||
set(LIBHEIF_LICENSE SPDX:LGPL-3.0-or-later)
|
||||
set(LIBHEIF_COPYRIGHT [=[
|
||||
Copyright (c) 2017-2020 Struktur AG
|
||||
Copyright (c) 2017-2025 Dirk Farin
|
||||
]=])
|
||||
|
||||
set(ABSEIL_VERSION 20250814.1)
|
||||
set(ABSEIL_URI https://github.com/abseil/abseil-cpp/releases/download/${ABSEIL_VERSION}/abseil-cpp-${ABSEIL_VERSION}.tar.gz)
|
||||
set(ABSEIL_HASH 1692f77d1739bacf3f94337188b78583cf09bab7e420d2dc6c5605a4f86785a1)
|
||||
set(ABSEIL_HASH_TYPE SHA256)
|
||||
set(ABSEIL_FILE abseil-cpp-${ABSEIL_VERSION}.tar.gz)
|
||||
set(ABSEIL_HOMEPAGE https://abseil.io/)
|
||||
set(ABSEIL_LICENSE SPDX:Apache-2.0)
|
||||
set(ABSEIL_COPYRIGHT "Copyright 2023 The Abseil Authors.")
|
||||
|
||||
set(EIGEN_VERSION 8a1083e9bf41b91fdea6546681f806154efdc25a) # latest on 2025-12-05 didn't build, picked a slightly older commit.
|
||||
set(EIGEN_URI https://gitlab.com/libeigen/eigen/-/archive/${EIGEN_VERSION}/eigen-${EIGEN_VERSION}.tar.gz)
|
||||
set(EIGEN_HASH cc28a84fdec496c6777596350ea805519bf10f717d21044ae6ba3dd562183a26)
|
||||
set(EIGEN_HASH_TYPE SHA256)
|
||||
set(EIGEN_FILE eigen-${EIGEN_VERSION}.tar.gz)
|
||||
set(EIGEN_HOMEPAGE http://eigen.tuxfamily.org)
|
||||
set(EIGEN_LICENSE SPDX:MPL-2.0)
|
||||
set(EIGEN_COPYRIGHT "Copyright (C) 2008-2010 Gael Guennebaud <gael.guennebaud@inria.fr>. Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com")
|
||||
|
||||
set(CERES_VERSION 0c70ed3a1a2d6ba47c06c7e8b3b040880bc474db) # Latest main on 2025-12-05
|
||||
set(CERES_URI https://github.com/ceres-solver/ceres-solver/archive/${CERES_VERSION}.tar.gz)
|
||||
set(CERES_HASH bf0bcc78fae884e59dd893693e52510da7cc6866a7444fdae9ba8f19eae266cd)
|
||||
set(CERES_HASH_TYPE SHA256)
|
||||
set(CERES_FILE ceres-${CERES_VERSION}.tar.gz)
|
||||
set(CERES_HOMEPAGE http://ceres-solver.org/)
|
||||
set(CERES_LICENSE SPDX:BSD-3-Clause)
|
||||
set(CERES_COPYRIGHT "Copyright 2023 Google Inc. All rights reserved.")
|
||||
|
|
|
|||
|
|
@ -15,15 +15,15 @@ if(WIN32)
|
|||
${PATCH_DIR}/vpx_windows.diff
|
||||
)
|
||||
|
||||
if(MSVC_VERSION GREATER_EQUAL 1920) # 2019
|
||||
if(MSVC_VERSION GREATER_EQUAL 1930) # 2022
|
||||
set(VPX_COMPILER_STRING vs17)
|
||||
else() # 2019
|
||||
set(VPX_COMPILER_STRING vs16)
|
||||
else() # 2017
|
||||
set(VPX_COMPILER_STRING vs15)
|
||||
endif()
|
||||
|
||||
if(BLENDER_PLATFORM_ARM)
|
||||
# ARM64 requires a min of vc142
|
||||
set(VPX_EXTRA_FLAGS --target=arm64-win64-vs16 --as=nasm --disable-neon_dotprod --disable-neon_i8mm)
|
||||
set(VPX_EXTRA_FLAGS --target=arm64-win64-${VPX_COMPILER_STRING} --as=nasm --disable-neon_dotprod --disable-neon_i8mm)
|
||||
set(VPX_INCL_ARCH nopost-nodocs-arm64-win64)
|
||||
else()
|
||||
set(VPX_EXTRA_FLAGS --target=x86_64-win64-${VPX_COMPILER_STRING} --as=nasm)
|
||||
|
|
@ -59,7 +59,11 @@ else()
|
|||
set(VPX_EXTRA_FLAGS --target=x86_64-darwin17-gcc)
|
||||
endif()
|
||||
else()
|
||||
set(VPX_EXTRA_FLAGS --target=generic-gnu)
|
||||
if(NOT BLENDER_PLATFORM_ARM)
|
||||
set(VPX_EXTRA_FLAGS --target=x86_64-linux-gcc)
|
||||
else()
|
||||
set(VPX_EXTRA_FLAGS --target=generic-gnu)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(VPX_CONFIGURE_COMMAND ${CONFIGURE_ENV})
|
||||
|
|
@ -74,16 +78,6 @@ else()
|
|||
)
|
||||
endif()
|
||||
|
||||
if(NOT BLENDER_PLATFORM_ARM)
|
||||
list(APPEND VPX_EXTRA_FLAGS
|
||||
--enable-sse4_1
|
||||
--enable-sse3
|
||||
--enable-ssse3
|
||||
--enable-avx
|
||||
--enable-avx2
|
||||
)
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(external_vpx
|
||||
URL file://${PACKAGE_DIR}/${VPX_FILE}
|
||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ ExternalProject_Add(external_webp
|
|||
URL file://${PACKAGE_DIR}/${WEBP_FILE}
|
||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
URL_HASH ${WEBP_HASH_TYPE}=${WEBP_HASH}
|
||||
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
|
||||
PREFIX ${BUILD_DIR}/webp
|
||||
|
||||
CMAKE_ARGS
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ ExternalProject_Add(external_zlib
|
|||
URL_HASH ${ZLIB_HASH_TYPE}=${ZLIB_HASH}
|
||||
PREFIX ${BUILD_DIR}/zlib
|
||||
PATCH_COMMAND ${ZLIB_PATCH_COMMAND}
|
||||
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
|
||||
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
|
||||
|
|
|
|||
|
|
@ -22,7 +22,8 @@ ExternalProject_Add(external_zstd
|
|||
URL_HASH ${ZSTD_HASH_TYPE}=${ZSTD_HASH}
|
||||
PREFIX ${BUILD_DIR}/zstd
|
||||
SOURCE_SUBDIR build/cmake
|
||||
|
||||
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
|
||||
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${LIBDIR}/zstd
|
||||
${DEFAULT_CMAKE_FLAGS}
|
||||
|
|
|
|||
|
|
@ -589,7 +589,7 @@ PYTHON_SUBPACKAGES = (
|
|||
},
|
||||
),
|
||||
Package(name="NumPy",
|
||||
version="1.26.4", version_short="1.26", version_min="1.14", version_mex="2.0",
|
||||
version="2.3.4", version_short="2.3", version_min="2.2", version_mex="3.0",
|
||||
distro_package_names={DISTRO_ID_DEBIAN: "python3-numpy",
|
||||
DISTRO_ID_FEDORA: "python3-numpy",
|
||||
DISTRO_ID_SUSE: suse_pypackages_name_gen("numpy"),
|
||||
|
|
@ -597,7 +597,7 @@ PYTHON_SUBPACKAGES = (
|
|||
},
|
||||
),
|
||||
Package(name="NumPy Devel",
|
||||
version="1.26.4", version_short="1.26", version_min="1.14", version_mex="2.0",
|
||||
version="2.3.4", version_short="2.3", version_min="2.2", version_mex="3.0",
|
||||
distro_package_names={DISTRO_ID_DEBIAN: ...,
|
||||
DISTRO_ID_FEDORA: ...,
|
||||
DISTRO_ID_SUSE: suse_pypackages_name_gen("numpy-devel"),
|
||||
|
|
@ -649,7 +649,7 @@ PACKAGES_ALL = (
|
|||
},
|
||||
),
|
||||
Package(name="Python", is_mandatory=True,
|
||||
version="3.11.11", version_short="3.11", version_min="3.11", version_mex="3.14",
|
||||
version="3.13.9", version_short="3.13", version_min="3.13", version_mex="3.15",
|
||||
sub_packages=PYTHON_SUBPACKAGES,
|
||||
distro_package_names={DISTRO_ID_DEBIAN: "python3-dev",
|
||||
DISTRO_ID_FEDORA: "python3-devel",
|
||||
|
|
@ -658,7 +658,7 @@ PACKAGES_ALL = (
|
|||
},
|
||||
),
|
||||
Package(name="TBB Library", is_mandatory=True,
|
||||
version="2021.13.0", version_short="2021", version_min="2021.0.0", version_mex="2023.0.0",
|
||||
version="2022.3.0", version_short="2022", version_min="2021.0.0", version_mex="2023.0.0",
|
||||
sub_packages=(),
|
||||
distro_package_names={DISTRO_ID_DEBIAN: "libtbb-dev",
|
||||
DISTRO_ID_FEDORA: "tbb-devel",
|
||||
|
|
@ -667,7 +667,7 @@ PACKAGES_ALL = (
|
|||
},
|
||||
),
|
||||
Package(name="OpenColorIO Library", is_mandatory=False,
|
||||
version="2.4.1", version_short="2.4", version_min="2.0", version_mex="3.0",
|
||||
version="2.5.0", version_short="2.5", version_min="2.0", version_mex="3.0",
|
||||
sub_packages=(),
|
||||
distro_package_names={DISTRO_ID_DEBIAN: "libopencolorio-dev",
|
||||
DISTRO_ID_FEDORA: "OpenColorIO-devel",
|
||||
|
|
@ -676,7 +676,7 @@ PACKAGES_ALL = (
|
|||
},
|
||||
),
|
||||
Package(name="IMath Library", is_mandatory=False,
|
||||
version="3.2.1", version_short="3.2", version_min="3.0", version_mex="4.0",
|
||||
version="3.2.2", version_short="3.2", version_min="3.0", version_mex="4.0",
|
||||
sub_packages=(),
|
||||
distro_package_names={DISTRO_ID_DEBIAN: "libimath-dev",
|
||||
DISTRO_ID_FEDORA: "imath-devel",
|
||||
|
|
@ -685,7 +685,7 @@ PACKAGES_ALL = (
|
|||
},
|
||||
),
|
||||
Package(name="OpenEXR Library", is_mandatory=False,
|
||||
version="3.3.2", version_short="3.3", version_min="3.0", version_mex="4.0",
|
||||
version="3.4.3", version_short="3.4", version_min="3.0", version_mex="4.0",
|
||||
sub_packages=(),
|
||||
distro_package_names={DISTRO_ID_DEBIAN: "libopenexr-dev",
|
||||
DISTRO_ID_FEDORA: "openexr-devel",
|
||||
|
|
@ -694,7 +694,7 @@ PACKAGES_ALL = (
|
|||
},
|
||||
),
|
||||
Package(name="OpenImageIO Library", is_mandatory=True,
|
||||
version="3.0.3.1", version_short="3.0", version_min="2.5.0", version_mex="3.1.0",
|
||||
version="3.1.7.0", version_short="3.1", version_min="2.5.0", version_mex="3.2.0",
|
||||
sub_packages=(
|
||||
Package(name="OpenImageIO Tools", is_mandatory=False,
|
||||
distro_package_names={DISTRO_ID_DEBIAN: "openimageio-tools",
|
||||
|
|
@ -744,7 +744,7 @@ PACKAGES_ALL = (
|
|||
},
|
||||
),
|
||||
Package(name="OpenSubDiv Library", is_mandatory=False,
|
||||
version="3.6.0", version_short="3.6", version_min="3.5", version_mex="4.0",
|
||||
version="3.7.0", version_short="3.7", version_min="3.5", version_mex="4.0",
|
||||
sub_packages=(),
|
||||
distro_package_names={DISTRO_ID_DEBIAN: "libosd-dev",
|
||||
DISTRO_ID_FEDORA: "opensubdiv-devel",
|
||||
|
|
@ -753,7 +753,7 @@ PACKAGES_ALL = (
|
|||
},
|
||||
),
|
||||
Package(name="OpenVDB Library", is_mandatory=False,
|
||||
version="12.0.0", version_short="12.0", version_min="11.0", version_mex="13.0",
|
||||
version="13.0.0", version_short="13.0", version_min="11.0", version_mex="14.0",
|
||||
sub_packages=(
|
||||
# Assume packaged versions of the dependencies are compatible with OpenVDB package.
|
||||
Package(name="OpenVDB Dependencies", is_mandatory=False, is_group=True,
|
||||
|
|
@ -817,8 +817,8 @@ PACKAGES_ALL = (
|
|||
DISTRO_ID_ARCH: "embree",
|
||||
},
|
||||
),
|
||||
Package(name="OpenImageDenoiser Library", is_mandatory=False,
|
||||
version="2.3.3", version_short="2.3", version_min="2.0.0", version_mex="3.0",
|
||||
Package(name="OpenImageDenoise Library", is_mandatory=False,
|
||||
version="2.4.1", version_short="2.4", version_min="2.0.0", version_mex="3.0",
|
||||
sub_packages=(),
|
||||
distro_package_names={DISTRO_ID_DEBIAN: None,
|
||||
DISTRO_ID_FEDORA: "oidn-devel",
|
||||
|
|
@ -827,7 +827,7 @@ PACKAGES_ALL = (
|
|||
},
|
||||
),
|
||||
Package(name="Level Zero Library", is_mandatory=False,
|
||||
version="1.19.2", version_short="1.19", version_min="1.7", version_mex="2.0",
|
||||
version="1.21.9", version_short="1.21", version_min="1.7", version_mex="2.0",
|
||||
sub_packages=(),
|
||||
distro_package_names={DISTRO_ID_DEBIAN: "libze-dev",
|
||||
DISTRO_ID_FEDORA: "oneapi-level-zero-devel",
|
||||
|
|
@ -844,8 +844,8 @@ PACKAGES_ALL = (
|
|||
DISTRO_ID_ARCH: "openpgl",
|
||||
},
|
||||
),
|
||||
Package(name="XROpenXR Library", is_mandatory=False,
|
||||
version="1.0.22", version_short="1.0", version_min="1.0.8", version_mex="2.0",
|
||||
Package(name="OpenXR Library", is_mandatory=False,
|
||||
version="1.1.53", version_short="1.1", version_min="1.0.8", version_mex="2.0",
|
||||
sub_packages=(),
|
||||
distro_package_names={DISTRO_ID_DEBIAN: "libopenxr-dev",
|
||||
DISTRO_ID_FEDORA: None,
|
||||
|
|
|
|||
5
build_files/build_environment/linux/linux_rocky8_setup.sh
Normal file → Executable file
5
build_files/build_environment/linux/linux_rocky8_setup.sh
Normal file → Executable file
|
|
@ -37,7 +37,7 @@ yum -y install scl-utils
|
|||
yum -y install scl-utils-build
|
||||
|
||||
# Currently this is defined by the VFX platform (CY2023), see: https://vfxplatform.com
|
||||
yum -y install gcc-toolset-11
|
||||
yum -y install gcc-toolset-14
|
||||
|
||||
# Repository for CUDA (`nvcc`).
|
||||
CUDA_ARCH=$(uname -i)
|
||||
|
|
@ -71,6 +71,9 @@ PACKAGES_FOR_LIBS=(
|
|||
automake
|
||||
libtool
|
||||
|
||||
# Requried by flex
|
||||
help2man
|
||||
|
||||
# Required by: `external_libsndfile` configure scripts.
|
||||
autogen
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,36 @@
|
|||
commit 6d2b7f71b98bfa28e372b1f2d85f137280bdb3de
|
||||
Author: James Zern <jzern@google.com>
|
||||
Date: Tue Oct 7 14:08:44 2025 -0700
|
||||
|
||||
cmake: fix nasm detection w/3.0
|
||||
|
||||
nasm 3.0 separated Oflags (-Ox) output to `-hO` which is used to
|
||||
validate the nasm binary. This change is compatible with older versions
|
||||
(tested with NASM version 2.16.03 & 2.13.02).
|
||||
|
||||
Bug: aomedia:448994065
|
||||
Fixed: aomedia:448994065
|
||||
Change-Id: I704dcfe39ac6e68bc4d5b9e409fb59a0d277170e
|
||||
|
||||
diff --git a/build/cmake/aom_optimization.cmake b/build/cmake/aom_optimization.cmake
|
||||
index 9cc34de362..2750a0be41 100644
|
||||
--- a/build/cmake/aom_optimization.cmake
|
||||
+++ b/build/cmake/aom_optimization.cmake
|
||||
@@ -212,7 +212,7 @@ endfunction()
|
||||
# Currently checks only for presence of required object formats and support for
|
||||
# the -Ox argument (multipass optimization).
|
||||
function(test_nasm)
|
||||
- execute_process(COMMAND ${CMAKE_ASM_NASM_COMPILER} -hf
|
||||
+ execute_process(COMMAND ${CMAKE_ASM_NASM_COMPILER} -hO
|
||||
OUTPUT_VARIABLE nasm_helptext)
|
||||
|
||||
if(NOT "${nasm_helptext}" MATCHES "-Ox")
|
||||
@@ -220,6 +220,8 @@ function(test_nasm)
|
||||
FATAL_ERROR "Unsupported nasm: multipass optimization not supported.")
|
||||
endif()
|
||||
|
||||
+ execute_process(COMMAND ${CMAKE_ASM_NASM_COMPILER} -hf
|
||||
+ OUTPUT_VARIABLE nasm_helptext)
|
||||
if("${AOM_TARGET_CPU}" STREQUAL "x86")
|
||||
if("${AOM_TARGET_SYSTEM}" STREQUAL "Darwin")
|
||||
if(NOT "${nasm_helptext}" MATCHES "macho32")
|
||||
|
|
@ -137,6 +137,39 @@ index b2b6761b9..f9db10a86 100644
|
|||
|
||||
foreach(flag_var
|
||||
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
|
||||
diff --git a/unified-runtime/cmake/FetchLevelZero.cmake b/unified-runtime/cmake/FetchLevelZero.cmake
|
||||
index cf1ca5e82..ca23bd87e 100644
|
||||
--- a/unified-runtime/cmake/FetchLevelZero.cmake
|
||||
+++ b/unified-runtime/cmake/FetchLevelZero.cmake
|
||||
@@ -41,7 +41,7 @@ if (NOT DEFINED LEVEL_ZERO_LIBRARY OR NOT DEFINED LEVEL_ZERO_INCLUDE_DIR)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-c++98-compat-extra-semi")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-warning-option")
|
||||
endif()
|
||||
- set(BUILD_STATIC ON)
|
||||
+ set(BUILD_STATIC OFF)
|
||||
|
||||
if (UR_LEVEL_ZERO_LOADER_REPO STREQUAL "")
|
||||
set(UR_LEVEL_ZERO_LOADER_REPO "https://github.com/oneapi-src/level-zero.git")
|
||||
diff --git a/unified-runtime/source/adapters/level_zero/CMakeLists.txt b/unified-runtime/source/adapters/level_zero/CMakeLists.txt
|
||||
index 6eb08a6d9..b66a55f3c 100644
|
||||
--- a/unified-runtime/source/adapters/level_zero/CMakeLists.txt
|
||||
+++ b/unified-runtime/source/adapters/level_zero/CMakeLists.txt
|
||||
@@ -56,7 +56,6 @@ if(UR_BUILD_ADAPTER_L0)
|
||||
)
|
||||
install_ur_library(ur_adapter_level_zero)
|
||||
|
||||
- target_compile_definitions(ur_adapter_level_zero PUBLIC UR_STATIC_LEVEL_ZERO)
|
||||
if(UR_STATIC_ADAPTER_L0)
|
||||
target_compile_definitions(ur_adapter_level_zero PUBLIC UR_STATIC_ADAPTER_LEVEL_ZERO)
|
||||
|
||||
@@ -193,7 +192,6 @@ if(UR_BUILD_ADAPTER_L0_V2)
|
||||
)
|
||||
endif()
|
||||
|
||||
- target_compile_definitions(ur_adapter_level_zero_v2 PUBLIC UR_STATIC_LEVEL_ZERO)
|
||||
target_compile_definitions(ur_adapter_level_zero_v2 PUBLIC UR_ADAPTER_LEVEL_ZERO_V2)
|
||||
|
||||
# TODO: fix level_zero adapter conversion warnings
|
||||
diff --git a/xptifw/include/xpti_string_table.hpp b/xptifw/include/xpti_string_table.hpp
|
||||
index c8678bdff..bd91468c9 100644
|
||||
--- a/xptifw/include/xpti_string_table.hpp
|
||||
|
|
|
|||
70
build_files/build_environment/patches/eigen_tbb_support.diff
Normal file
70
build_files/build_environment/patches/eigen_tbb_support.diff
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
diff -Naur eigen.base/Eigen/src/SparseCore/SparseDenseProduct.h external_eigen/Eigen/src/SparseCore/SparseDenseProduct.h
|
||||
--- eigen.base/Eigen/src/SparseCore/SparseDenseProduct.h 2026-01-12 11:46:25.135745600 -0800
|
||||
+++ external_eigen/Eigen/src/SparseCore/SparseDenseProduct.h 2026-01-15 11:02:49.671711500 -0800
|
||||
@@ -13,6 +13,10 @@
|
||||
// IWYU pragma: private
|
||||
#include "./InternalHeaderCheck.h"
|
||||
|
||||
+#ifdef EIGEN_HAS_TBB
|
||||
+#include <tbb/parallel_for.h>
|
||||
+#endif
|
||||
+
|
||||
namespace Eigen {
|
||||
|
||||
namespace internal {
|
||||
@@ -49,6 +53,15 @@
|
||||
#endif
|
||||
|
||||
for (Index c = 0; c < rhs.cols(); ++c) {
|
||||
+#ifdef EIGEN_HAS_TBB
|
||||
+ if(lhsEval.nonZerosEstimate() > 20000) {
|
||||
+ tbb::parallel_for(tbb::blocked_range<Index>(0, n, 1024),
|
||||
+ [&](const tbb::blocked_range<Index>& range) {
|
||||
+ for(Index i=range.begin(); i<range.end(); ++i)
|
||||
+ processRow(lhsEval,rhs,res,alpha,i,c);
|
||||
+ });
|
||||
+ } else
|
||||
+#else
|
||||
#ifdef EIGEN_HAS_OPENMP
|
||||
// This 20000 threshold has been found experimentally on 2D and 3D Poisson problems.
|
||||
// It basically represents the minimal amount of work to be done to be worth it.
|
||||
@@ -57,6 +70,7 @@
|
||||
for (Index i = 0; i < n; ++i) processRow(lhsEval, rhs, res, alpha, i, c);
|
||||
} else
|
||||
#endif
|
||||
+#endif
|
||||
{
|
||||
for (Index i = 0; i < n; ++i) processRow(lhsEval, rhs, res, alpha, i, c);
|
||||
}
|
||||
@@ -123,14 +137,24 @@
|
||||
Index n = lhs.rows();
|
||||
LhsEval lhsEval(lhs);
|
||||
|
||||
-#ifdef EIGEN_HAS_OPENMP
|
||||
- Index threads = Eigen::nbThreads();
|
||||
- // This 20000 threshold has been found experimentally on 2D and 3D Poisson problems.
|
||||
- // It basically represents the minimal amount of work to be done to be worth it.
|
||||
- if (threads > 1 && lhsEval.nonZerosEstimate() * rhs.cols() > 20000) {
|
||||
-#pragma omp parallel for schedule(dynamic, (n + threads * 4 - 1) / (threads * 4)) num_threads(threads)
|
||||
- for (Index i = 0; i < n; ++i) processRow(lhsEval, rhs, res, alpha, i);
|
||||
+#ifdef EIGEN_HAS_TBB
|
||||
+ if(lhsEval.nonZerosEstimate()*rhs.cols() > 20000) {
|
||||
+ tbb::parallel_for(tbb::blocked_range<Index>(0, n, 1024),
|
||||
+ [&](const tbb::blocked_range<Index>& range) {
|
||||
+ for(Index i=range.begin(); i<range.end(); ++i)
|
||||
+ processRow(lhsEval,rhs,res,alpha,i);
|
||||
+ });
|
||||
} else
|
||||
+#else
|
||||
+ #ifdef EIGEN_HAS_OPENMP
|
||||
+ Index threads = Eigen::nbThreads();
|
||||
+ // This 20000 threshold has been found experimentally on 2D and 3D Poisson problems.
|
||||
+ // It basically represents the minimal amount of work to be done to be worth it.
|
||||
+ if (threads > 1 && lhsEval.nonZerosEstimate() * rhs.cols() > 20000) {
|
||||
+ #pragma omp parallel for schedule(dynamic, (n + threads * 4 - 1) / (threads * 4)) num_threads(threads)
|
||||
+ for (Index i = 0; i < n; ++i) processRow(lhsEval, rhs, res, alpha, i);
|
||||
+ } else
|
||||
+ #endif
|
||||
#endif
|
||||
{
|
||||
for (Index i = 0; i < n; ++i) processRow(lhsEval, rhs, res, alpha, i);
|
||||
|
|
@ -59,3 +59,25 @@ index b827807..648603a 100644
|
|||
DISABLE_STACK_PROTECTOR_FOR_INTERSECTORS(${EMBREE_LIBRARY_FILES_AVX2})
|
||||
ADD_LIBRARY(embree_avx2 STATIC ${EMBREE_LIBRARY_FILES_AVX2})
|
||||
TARGET_LINK_LIBRARIES(embree_avx2 PRIVATE tasking)
|
||||
diff --git a/kernels/sycl/rthwif_embree.cpp b/kernels/sycl/rthwif_embree.cpp
|
||||
index 00a581b..a58f3a2 100644
|
||||
--- a/kernels/sycl/rthwif_embree.cpp
|
||||
+++ b/kernels/sycl/rthwif_embree.cpp
|
||||
@@ -713,13 +713,14 @@
|
||||
if (valid)
|
||||
{
|
||||
float t = intel_get_hit_distance(query, intel_hit_type_committed_hit);
|
||||
- float2 uv = intel_get_hit_barycentrics (query, intel_hit_type_committed_hit);
|
||||
+ float2 uv(ray.u, ray.v);
|
||||
unsigned int geomID = intel_get_hit_geometry_id(query, intel_hit_type_committed_hit);
|
||||
|
||||
unsigned int primID = ray.primID;
|
||||
- if (intel_get_hit_candidate(query, intel_hit_type_committed_hit) == intel_candidate_type_triangle)
|
||||
+ if (intel_get_hit_candidate(query, intel_hit_type_committed_hit) == intel_candidate_type_triangle) {
|
||||
primID = intel_get_hit_triangle_primitive_id(query, intel_hit_type_committed_hit);
|
||||
-
|
||||
+ uv = intel_get_hit_barycentrics (query, intel_hit_type_committed_hit);
|
||||
+ }
|
||||
rayhit_i->ray.tfar = t;
|
||||
rayhit_i->hit.geomID = geomID;
|
||||
rayhit_i->hit.primID = primID;
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
diff --git a/src/aarch64/sysv.S b/src/aarch64/sysv.S
|
||||
index eeaf3f8..329889c 100644
|
||||
--- a/src/aarch64/sysv.S
|
||||
+++ b/src/aarch64/sysv.S
|
||||
@@ -76,8 +76,8 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
x5 closure
|
||||
*/
|
||||
|
||||
- cfi_startproc
|
||||
CNAME(ffi_call_SYSV):
|
||||
+ cfi_startproc
|
||||
/* Sign the lr with x1 since that is where it will be stored */
|
||||
SIGN_LR_WITH_REG(x1)
|
||||
|
||||
@@ -268,8 +268,8 @@ CNAME(ffi_closure_SYSV_V):
|
||||
#endif
|
||||
|
||||
.align 4
|
||||
- cfi_startproc
|
||||
CNAME(ffi_closure_SYSV):
|
||||
+ cfi_startproc
|
||||
SIGN_LR
|
||||
stp x29, x30, [sp, #-ffi_closure_SYSV_FS]!
|
||||
cfi_adjust_cfa_offset (ffi_closure_SYSV_FS)
|
||||
@@ -500,8 +500,8 @@ CNAME(ffi_go_closure_SYSV_V):
|
||||
#endif
|
||||
|
||||
.align 4
|
||||
- cfi_startproc
|
||||
CNAME(ffi_go_closure_SYSV):
|
||||
+ cfi_startproc
|
||||
stp x29, x30, [sp, #-ffi_closure_SYSV_FS]!
|
||||
cfi_adjust_cfa_offset (ffi_closure_SYSV_FS)
|
||||
cfi_rel_offset (x29, 0)
|
||||
219
build_files/build_environment/patches/flex_gcc14.diff
Normal file
219
build_files/build_environment/patches/flex_gcc14.diff
Normal file
|
|
@ -0,0 +1,219 @@
|
|||
https://github.com/westes/flex/issues/436
|
||||
https://bugs.gentoo.org/705800
|
||||
https://developers.redhat.com/blog/2019/04/22/implicit-function-declarations-flexs-use-of-reallocarray
|
||||
https://github.com/westes/flex/commit/4b5111d9772b5c160340ca96f08d30d7f6db5cda
|
||||
https://github.com/westes/flex/commit/24fd0551333e7eded87b64dd36062da3df2f6380
|
||||
https://github.com/westes/flex/commit/0db9f8903a446e7026874be519b8dc55a471f014
|
||||
https://github.com/westes/flex/commit/a17d79e9c722a6735b6d2a8f152287404f27df32
|
||||
https://github.com/westes/flex/commit/4081efa0831b15d7e4e4255401c225ad8262426d
|
||||
https://github.com/westes/flex/commit/1985bb3c7abed940e91ad816504ef08a18c3b7c1
|
||||
|
||||
From 4b5111d9772b5c160340ca96f08d30d7f6db5cda Mon Sep 17 00:00:00 2001
|
||||
From: Explorer09 <explorer09@gmail.com>
|
||||
Date: Mon, 4 Sep 2017 08:28:53 +0800
|
||||
Subject: [PATCH] scanner: Include flexdef.h at %top block of scan.l
|
||||
|
||||
config.h may define macros that alter the API of the standard library
|
||||
funtions, and so it should be included before any other standard
|
||||
header, even before the skeleton's standard header inclusion.
|
||||
|
||||
For example: config.h may #define _GNU_SOURCE that would expose the
|
||||
reallocarray() prototype from <stdlib.h> on glibc 2.26+ systems. If we
|
||||
include <stdlib.h> before config.h, reallocarray() would not be
|
||||
available for use in lex file since the second include doesn't help
|
||||
due to header guard.
|
||||
|
||||
For now our config.h might `#define malloc rpl_malloc` -- this
|
||||
substitution must work before including stdlib.h, or else the compiler
|
||||
will complain about missing prototypes, and may result in incorrect
|
||||
code in scan.l (gcc warning: return makes pointer from integer without
|
||||
a cast [-Wint-conversion]).
|
||||
|
||||
Fixes #247.
|
||||
--- a/src/scan.l
|
||||
+++ b/src/scan.l
|
||||
@@ -1,5 +1,11 @@
|
||||
/* scan.l - scanner for flex input -*-C-*- */
|
||||
|
||||
+%top{
|
||||
+/* flexdef.h includes config.h, which may contain macros that alter the API */
|
||||
+/* of libc functions. Must include first before any libc header. */
|
||||
+#include "flexdef.h"
|
||||
+}
|
||||
+
|
||||
%{
|
||||
/* Copyright (c) 1990 The Regents of the University of California. */
|
||||
/* All rights reserved. */
|
||||
@@ -32,7 +38,6 @@
|
||||
/* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */
|
||||
/* PURPOSE. */
|
||||
|
||||
-#include "flexdef.h"
|
||||
#include "parse.h"
|
||||
extern bool tablesverify, tablesext;
|
||||
extern int trlcontxt; /* Set in parse.y for each rule. */
|
||||
|
||||
From 24fd0551333e7eded87b64dd36062da3df2f6380 Mon Sep 17 00:00:00 2001
|
||||
From: Explorer09 <explorer09@gmail.com>
|
||||
Date: Mon, 4 Sep 2017 10:47:33 +0800
|
||||
Subject: [PATCH] build: AC_USE_SYSTEM_EXTENSIONS in configure.ac.
|
||||
|
||||
This would, e.g. define _GNU_SOURCE in config.h, enabling the
|
||||
reallocarray() prototype in glibc 2.26+ on Linux systems with that
|
||||
version of glibc.
|
||||
|
||||
Fixes #241.
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -25,8 +25,10 @@
|
||||
# autoconf requirements and initialization
|
||||
|
||||
AC_INIT([the fast lexical analyser generator],[2.6.4],[flex-help@lists.sourceforge.net],[flex])
|
||||
+AC_PREREQ([2.60])
|
||||
AC_CONFIG_SRCDIR([src/scan.l])
|
||||
AC_CONFIG_AUX_DIR([build-aux])
|
||||
+AC_USE_SYSTEM_EXTENSIONS
|
||||
LT_INIT
|
||||
AM_INIT_AUTOMAKE([1.15 -Wno-portability foreign std-options dist-lzip parallel-tests subdir-objects])
|
||||
AC_CONFIG_HEADER([src/config.h])
|
||||
|
||||
|
||||
From 0db9f8903a446e7026874be519b8dc55a471f014 Mon Sep 17 00:00:00 2001
|
||||
From: Lukasz Baj <l.baj@radytek.com>
|
||||
Date: Fri, 22 Sep 2017 10:24:46 +0200
|
||||
Subject: [PATCH] build: Remove custom reallocarray() declaration.
|
||||
|
||||
Use one from <stdlib.h> instead because that is more portable.
|
||||
--- a/src/flexdef.h
|
||||
+++ b/src/flexdef.h
|
||||
@@ -631,10 +631,6 @@ extern int sectnum, nummt, hshcol, dfaeql, numeps, eps2, num_reallocs;
|
||||
extern int tmpuses, totnst, peakpairs, numuniq, numdup, hshsave;
|
||||
extern int num_backing_up, bol_needed;
|
||||
|
||||
-#ifndef HAVE_REALLOCARRAY
|
||||
-void *reallocarray(void *, size_t, size_t);
|
||||
-#endif
|
||||
-
|
||||
void *allocate_array(int, size_t);
|
||||
void *reallocate_array(void *, int, size_t);
|
||||
|
||||
|
||||
From a17d79e9c722a6735b6d2a8f152287404f27df32 Mon Sep 17 00:00:00 2001
|
||||
From: Explorer09 <explorer09@gmail.com>
|
||||
Date: Sat, 14 Oct 2017 00:36:54 +0800
|
||||
Subject: [PATCH] scanner: Define _POSIX_C_SOURCE when needed in skeleton.
|
||||
|
||||
The function fileno() is defined by POSIX. When flex would otherwise not provide that feature macro, we define it.
|
||||
|
||||
Fixes #263
|
||||
--- a/src/flex.skl
|
||||
+++ b/src/flex.skl
|
||||
@@ -218,6 +218,14 @@ m4_ifdef( [[M4_YY_TABLES_EXTERNAL]],
|
||||
|
||||
/* begin standard C headers. */
|
||||
%if-c-only
|
||||
+m4_ifdef( [[M4_YY_ALWAYS_INTERACTIVE]], ,
|
||||
+[[m4_ifdef( [[M4_YY_NEVER_INTERACTIVE]], ,
|
||||
+[[#ifndef _POSIX_C_SOURCE
|
||||
+#define _POSIX_C_SOURCE 1 /* for fileno() */
|
||||
+#ifndef _POSIX_SOURCE
|
||||
+#define _POSIX_SOURCE 1
|
||||
+#endif
|
||||
+#endif]])]])
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
From 4081efa0831b15d7e4e4255401c225ad8262426d Mon Sep 17 00:00:00 2001
|
||||
From: Explorer09 <explorer09@gmail.com>
|
||||
Date: Thu, 8 Mar 2018 10:04:36 +0800
|
||||
Subject: [PATCH] scanner: Fix glibc features.h dependency in skeleton.
|
||||
|
||||
Commit a17d79e9c722a6735b6d2a8f152287404f27df32 defines _POSIX_C_SOURCE
|
||||
to the minimum of 1 if it's not defined in the user's scanner code or
|
||||
the compiling environment. However in glibc the macros are not yet set
|
||||
up until one of the libc headers is included. This unfortunately have
|
||||
made us overwrite the default _POSIX_C_SOURCE value that would be
|
||||
defined by glibc (200809L at the time of writing), causing regressions
|
||||
in user code.
|
||||
|
||||
Now in this patch:
|
||||
1. Ensure feature test macros have been set up in glibc before checking
|
||||
or defining any of them in our skeleton code.
|
||||
2. Have a more conservative logic when determining the need to define
|
||||
_POSIX_C_SOURCE (required for fileno()).
|
||||
|
||||
Fixes: #313
|
||||
|
||||
Note:
|
||||
It could be tricky for application code to ensure feature test macros
|
||||
have been set up in glibc, since <features.h> is no portable header and
|
||||
not meant to be included directly by applications. The way to do it is
|
||||
to include a libc header which in turn includes <features.h>. However,
|
||||
many of the glibc headers check __USE_POSIX (a glibc internal macro
|
||||
defined if _POSIX_C_SOURCE is defined) and determine which interfaces
|
||||
to expose already, making the headers inappropriate for our goal.
|
||||
Those which don't depend on _POSIX_C_SOURCE, and are also available
|
||||
since ANSI C89, are only <assert.h>, <errno.h> and <math.h>.
|
||||
|
||||
<assert.h> is finally favored due to other considerations:
|
||||
- <math.h> check for __USE_XOPEN in glibc, making a dependency on
|
||||
_XOPEN_SOURCE, besides it exposes much more interfaces than we need.
|
||||
- In djgpp, <errno.h> depends on _POSIX_SOURCE to hide definitions of
|
||||
some errno values when it's defined.
|
||||
- <assert.h> exposes the fewest interfaces among the 3 headers and, at
|
||||
the time of writing, checks for only C99 (for __func__), C11 (for
|
||||
_Static_assert), and _GNU_SOURCE when needed.
|
||||
|
||||
Signed-off-by: Kang-Che Sung <explorer09@gmail.com>
|
||||
--- a/src/flex.skl
|
||||
+++ b/src/flex.skl
|
||||
@@ -220,11 +220,21 @@ m4_ifdef( [[M4_YY_TABLES_EXTERNAL]],
|
||||
%if-c-only
|
||||
m4_ifdef( [[M4_YY_ALWAYS_INTERACTIVE]], ,
|
||||
[[m4_ifdef( [[M4_YY_NEVER_INTERACTIVE]], ,
|
||||
-[[#ifndef _POSIX_C_SOURCE
|
||||
-#define _POSIX_C_SOURCE 1 /* for fileno() */
|
||||
-#ifndef _POSIX_SOURCE
|
||||
-#define _POSIX_SOURCE 1
|
||||
+[[/* Feature test macros. Flex uses functions that require a minimum set of
|
||||
+ * macros defined. As defining some macros may hide function declarations that
|
||||
+ * user code might use, be conservative and respect user's definitions as much
|
||||
+ * as possible. In glibc, feature test macros may not be all set up until one
|
||||
+ * of the libc header (that includes <features.h>) is included. This creates
|
||||
+ * a circular dependency when we check the macros. <assert.h> is the safest
|
||||
+ * header we can include and does not declare too many functions we don't need.
|
||||
+ */
|
||||
+#if !defined(__GNU_LIBRARY__) && defined(__STDC__)
|
||||
+#include <assert.h>
|
||||
#endif
|
||||
+#if !(defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \
|
||||
+ defined(_POSIX_SOURCE))
|
||||
+# define _POSIX_C_SOURCE 1 /* Required for fileno() */
|
||||
+# define _POSIX_SOURCE 1
|
||||
#endif]])]])
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
From 1985bb3c7abed940e91ad816504ef08a18c3b7c1 Mon Sep 17 00:00:00 2001
|
||||
From: Explorer09 <explorer09@gmail.com>
|
||||
Date: Thu, 8 Mar 2018 09:53:24 +0800
|
||||
Subject: [PATCH] scanner: correct comments about __STDC_LIMIT_MACROS.
|
||||
|
||||
No code changes.
|
||||
|
||||
Signed-off-by: Kang-Che Sung <explorer09@gmail.com>
|
||||
--- a/src/flexint.h
|
||||
+++ b/src/flexint.h
|
||||
@@ -7,8 +7,8 @@
|
||||
|
||||
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
|
||||
|
||||
-/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
|
||||
- * if you want the limit (max/min) macros for int types.
|
||||
+/* C++ systems might need __STDC_LIMIT_MACROS defined before including
|
||||
+ * <stdint.h>, if you want the limit (max/min) macros for int types.
|
||||
*/
|
||||
#ifndef __STDC_LIMIT_MACROS
|
||||
#define __STDC_LIMIT_MACROS 1
|
||||
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
diff --git a/hiprt/impl/Compiler.cpp b/hiprt/impl/Compiler.cpp
|
||||
index 514667a..509f3f4 100644
|
||||
--- a/hiprt/impl/Compiler.cpp
|
||||
+++ b/hiprt/impl/Compiler.cpp
|
||||
@@ -776,7 +776,15 @@ oroFunction Compiler::getFunctionFromPrecompiledBinary( const std::string& funcN
|
||||
// kernel.
|
||||
if constexpr ( UseBakedCompiledKernel )
|
||||
{
|
||||
- checkOro( oroModuleLoadData( &module, &bvh_build_array_h ) );
|
||||
+ // Copy the data into a heap memory.
|
||||
+ //
|
||||
+ // Otherwise it seems to be causing issues with access from the HIP SDK when the application binary is
|
||||
+ // located in a directory with space in it.
|
||||
+ //
|
||||
+ // The speculation is that static global memory can not really be megabytes, and access to it requires
|
||||
+ // mapping of the original file, and this is where things start to go wrong.
|
||||
+ std::vector<char> binary(bvh_build_array_h, bvh_build_array_h + bvh_build_array_h_size);
|
||||
+ checkOro( oroModuleLoadData( &module, binary.data() ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 50eb25e..b13d2da 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -585,12 +585,16 @@ install(FILES ${HIPRT_ORO_HEADERS}
|
||||
DESTINATION include/contrib/Orochi/ParallelPrimitives)
|
||||
|
||||
# add hipfb files
|
||||
-file(GLOB HIPRT_HIPFB_FILES "${BASE_OUTPUT_DIR}/${CMAKE_BUILD_TYPE}/*.hipfb")
|
||||
-install(FILES ${HIPRT_HIPFB_FILES}
|
||||
- DESTINATION bin)
|
||||
-
|
||||
-
|
||||
+if(PRECOMPILE)
|
||||
+ install(FILES ${KERNEL_HIPRT_COMP} ${KERNEL_OROCHI_COMP}
|
||||
+ DESTINATION bin)
|
||||
+endif()
|
||||
|
||||
+# Baked headers.
|
||||
+if(BAKE_COMPILED_KERNEL)
|
||||
+ install(FILES ${KERNEL_HIPRT_H}
|
||||
+ DESTINATION include/hiprt/impl)
|
||||
+endif()
|
||||
|
||||
# Project: Unit Test
|
||||
if(NOT NO_UNITTEST)
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
diff --git a/hiprt/hiprt_libpath.h b/hiprt/hiprt_libpath.h
|
||||
index 58daa96..f0fb339 100644
|
||||
--- a/hiprt/hiprt_libpath.h
|
||||
+++ b/hiprt/hiprt_libpath.h
|
||||
@@ -34,7 +34,7 @@
|
||||
#ifdef HIPRT_PREFER_HIP_5
|
||||
const char* g_hip_paths[] = { "amdhip64.dll", "amdhip64_6.dll", NULL };
|
||||
#else
|
||||
-const char* g_hip_paths[] = { "amdhip64_6.dll", "amdhip64.dll", NULL };
|
||||
+const char* g_hip_paths[] = { "amdhip64_6.dll", "amdhip64_7.dll", "amdhip64.dll", NULL };
|
||||
#endif
|
||||
|
||||
const char* g_hiprtc_paths[] = {
|
||||
@@ -72,9 +72,13 @@ const char* g_hip_paths[] = {
|
||||
"/opt/rocm/lib/libamdhip64.so",
|
||||
"/opt/rocm/hip/lib/libamdhip64.so",
|
||||
|
||||
- "libamdhip64.so.5",
|
||||
- "/opt/rocm/lib/libamdhip64.so.5",
|
||||
- "/opt/rocm/hip/lib/libamdhip64.so.5",
|
||||
+ "libamdhip64.so.6",
|
||||
+ "/opt/rocm/lib/libamdhip64.so.6",
|
||||
+ "/opt/rocm/hip/lib/libamdhip64.so.6",
|
||||
+
|
||||
+ "libamdhip64.so.7",
|
||||
+ "/opt/rocm/lib/libamdhip64.so.7",
|
||||
+ "/opt/rocm/hip/lib/libamdhip64.so.7",
|
||||
NULL };
|
||||
#endif
|
||||
|
||||
diff --git a/hiprt/impl/hiprt_device_impl.h b/hiprt/impl/hiprt_device_impl.h
|
||||
index 0687234..bc0737a 100644
|
||||
--- a/hiprt/impl/hiprt_device_impl.h
|
||||
+++ b/hiprt/impl/hiprt_device_impl.h
|
||||
@@ -362,10 +362,10 @@ TraversalBase<Stack>::testInternalNode( const hiprtRay& ray, const float3& invD,
|
||||
auto result = __builtin_amdgcn_image_bvh_intersect_ray_l(
|
||||
encodeBaseAddr( nodes, nodeIndex ),
|
||||
ray.maxT,
|
||||
- float4{ ray.origin.x, ray.origin.y, ray.origin.z, 0.0f }.data,
|
||||
- float4{ ray.direction.x, ray.direction.y, ray.direction.z, 0.0f }.data,
|
||||
- float4{ invD.x, invD.y, invD.z, 0.0f }.data,
|
||||
- m_descriptor.data );
|
||||
+ { ray.origin.x, ray.origin.y, ray.origin.z, 0.0f },
|
||||
+ { ray.direction.x, ray.direction.y, ray.direction.z, 0.0f },
|
||||
+ { invD.x, invD.y, invD.z, 0.0f },
|
||||
+ { m_descriptor.x, m_descriptor.y, m_descriptor.z, m_descriptor.w } );
|
||||
#endif
|
||||
if ( m_stack.vacancy() < 3 )
|
||||
{
|
||||
@@ -397,11 +397,13 @@ HIPRT_DEVICE bool TraversalBase<Stack>::testTriangleNode(
|
||||
hit.normal = node.m_triPair.fetchTriangle( leafIndex & 1 ).normal( node.m_flags >> ( ( leafIndex & 1 ) * 8 ) );
|
||||
}
|
||||
#else
|
||||
- const float4 origin = float4{ ray.origin.x, ray.origin.y, ray.origin.z, 0.0f };
|
||||
- const float4 direction = float4{ ray.direction.x, ray.direction.y, ray.direction.z, 0.0f };
|
||||
- const float4 invDir = float4{ invD.x, invD.y, invD.z, 0.0f };
|
||||
- auto result = __builtin_amdgcn_image_bvh_intersect_ray_l(
|
||||
- encodeBaseAddr( nodes, leafIndex ), ray.maxT, origin.data, direction.data, invDir.data, m_descriptor.data );
|
||||
+ auto result = __builtin_amdgcn_image_bvh_intersect_ray_l(
|
||||
+ encodeBaseAddr( nodes, leafIndex ),
|
||||
+ ray.maxT,
|
||||
+ { ray.origin.x, ray.origin.y, ray.origin.z, 0.0f },
|
||||
+ { ray.direction.x, ray.direction.y, ray.direction.z, 0.0f },
|
||||
+ { invD.x, invD.y, invD.z, 0.0f },
|
||||
+ { m_descriptor.x, m_descriptor.y, m_descriptor.z, m_descriptor.w } );
|
||||
float invDenom = __ocml_native_recip_f32( __int_as_float( result[1] ) );
|
||||
float t = __int_as_float( result[0] ) * invDenom;
|
||||
hasHit = ray.minT <= t && t <= ray.maxT;
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 50eb25e..b13d2da 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -503,7 +503,7 @@ if ( BAKE_COMPILED_KERNEL )
|
||||
|
||||
# Create the 'bake_compiled_kernels' project
|
||||
add_custom_target(bake_compiled_kernels ALL
|
||||
- DEPENDS ${KERNEL_HIPRT_H} ${KERNEL_OROCHI_H}
|
||||
+ DEPENDS ${KERNEL_HIPRT_H} ${KERNEL_OROCHI_H} precompile_kernels
|
||||
)
|
||||
|
||||
add_dependencies(${HIPRT_NAME} precompile_kernels bake_compiled_kernels)
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
diff --git a/src/Imath/half.h b/src/Imath/half.h
|
||||
index 84b349ab..828e0d82 100644
|
||||
--- a/src/Imath/half.h
|
||||
+++ b/src/Imath/half.h
|
||||
@@ -328,8 +328,14 @@ imath_half_to_float (imath_half_bits_t h)
|
||||
// other compilers may provide count-leading-zeros primitives,
|
||||
// but we need the community to inform us of the variants
|
||||
uint32_t lc;
|
||||
-# if defined(_MSC_VER) && (_M_IX86 || _M_X64)
|
||||
- lc = __lzcnt (hexpmant);
|
||||
+# if defined(_MSC_VER)
|
||||
+ // The direct intrinsic for this is __lznct, but that is not supported
|
||||
+ // on older x86_64 hardware or ARM. Instead uses the bsr instruction
|
||||
+ // and one additional subtraction. This assumes hexpmant != 0, for 0
|
||||
+ // bsr and lznct would behave differently.
|
||||
+ unsigned long bsr;
|
||||
+ _BitScanReverse (&bsr, hexpmant);
|
||||
+ lc = (31 - bsr);
|
||||
# elif defined(__GNUC__) || defined(__clang__)
|
||||
lc = (uint32_t) __builtin_clz (hexpmant);
|
||||
# else
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
--- ll\clang\lib\Headers\__clang_cuda_math_forward_declares.h 2025-12-05 10:13:42.161742700 -0800
|
||||
+++ ll\clang\lib\Headers\__clang_cuda_math_forward_declares.h 2025-12-11 08:12:38.769391500 -0800
|
||||
@@ -68,6 +68,37 @@
|
||||
__DEVICE__ float fdim(float, float);
|
||||
__DEVICE__ double floor(double);
|
||||
__DEVICE__ float floor(float);
|
||||
+/*
|
||||
+ BLENDER: clang++ with -language=cuda and -std=c++20 options trigger some error
|
||||
+ in the MSVC STL headers during the build of the OSL CUDA kernels. by providing
|
||||
+ this overload we sidestep this issue. nothing appears to be ending up calling it,
|
||||
+ since there are no linker errors, so i guess we're safe doing this?
|
||||
+
|
||||
+ =========8<=========8<=========8<=========8<=========8<=========8<=========8<=========8<=========8<=========8<=========8<
|
||||
+In file included from <built-in>:1:
|
||||
+In file included from C:\db\build\S\VS1564R\Release\llvm\lib\clang\20\include\__clang_cuda_runtime_wrapper.h:41:
|
||||
+In file included from C:\db\build\S\VS1564R\Release\llvm\lib\clang\20\include\cuda_wrappers\cmath:28:
|
||||
+c:\vs2022bt\VC\Tools\MSVC\14.44.35207\include\cmath:1591:12: error: call to 'fma' is ambiguous
|
||||
+ 1591 | return _STD fma(_ArgT, _ArgB - _ArgA, _ArgA);
|
||||
+ | ^~~~~~~~
|
||||
+c:\vs2022bt\VC\Tools\MSVC\14.44.35207\include\yvals_core.h:1928:17: note: expanded from macro '_STD'
|
||||
+ 1928 | #define _STD ::std::
|
||||
+ | ^
|
||||
+c:\vs2022bt\VC\Tools\MSVC\14.44.35207\include\cmath:1612:33: note: in instantiation of function template specialization 'std::_Linear_for_lerp<long double>' requested here
|
||||
+ 1612 | const auto _Candidate = _Linear_for_lerp(_ArgA, _ArgB, _ArgT);
|
||||
+ | ^
|
||||
+c:\vs2022bt\VC\Tools\MSVC\14.44.35207\include\cmath:1681:12: note: in instantiation of function template specialization 'std::_Common_lerp<long double>' requested here
|
||||
+ 1681 | return _Common_lerp(_ArgA, _ArgB, _ArgT);
|
||||
+ | ^
|
||||
+C:\db\build\S\VS1564R\Release\llvm\lib\clang\20\include\__clang_cuda_math_forward_declares.h:71:19: note: candidate function
|
||||
+ 71 | __DEVICE__ double fma(double, double, double);
|
||||
+ | ^
|
||||
+C:\db\build\S\VS1564R\Release\llvm\lib\clang\20\include\__clang_cuda_math_forward_declares.h:72:18: note: candidate function
|
||||
+ 72 | __DEVICE__ float fma(float, float, float);
|
||||
+ | ^
|
||||
+=========8<=========8<=========8<=========8<=========8<=========8<=========8<=========8<=========8<=========8<=========8<
|
||||
+*/
|
||||
+__DEVICE__ double fma(long double, long double, long double);
|
||||
__DEVICE__ double fma(double, double, double);
|
||||
__DEVICE__ float fma(float, float, float);
|
||||
__DEVICE__ double fmax(double, double);
|
||||
|
|
@ -1,22 +1,22 @@
|
|||
diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt
|
||||
index 057526d..059cdbd 100644
|
||||
index 27e2ed3..35a8541 100644
|
||||
--- a/core/CMakeLists.txt
|
||||
+++ b/core/CMakeLists.txt
|
||||
@@ -94,6 +94,7 @@ set_target_properties(OpenImageDenoise_core PROPERTIES
|
||||
@@ -95,6 +95,7 @@ set_target_properties(OpenImageDenoise_core PROPERTIES
|
||||
OUTPUT_NAME ${OIDN_LIBRARY_NAME}_core
|
||||
)
|
||||
target_compile_definitions(OpenImageDenoise_core PRIVATE OIDN_LIBRARY_NAME="${OIDN_LIBRARY_NAME}")
|
||||
+target_compile_definitions(OpenImageDenoise_core PRIVATE SHARED_POSTFIX=\"$<$<CONFIG:Debug>:$<TARGET_PROPERTY:OpenImageDenoise_core,DEBUG_POSTFIX>>\")
|
||||
|
||||
|
||||
if(OIDN_LIBRARY_VERSIONED)
|
||||
set_target_properties(OpenImageDenoise_core PROPERTIES VERSION ${PROJECT_VERSION})
|
||||
diff --git a/core/module.cpp b/core/module.cpp
|
||||
index cafedbc..b7d7ff6 100644
|
||||
index 9cd9498..23a5593 100644
|
||||
--- a/core/module.cpp
|
||||
+++ b/core/module.cpp
|
||||
@@ -29,7 +29,7 @@ OIDN_NAMESPACE_BEGIN
|
||||
return true; // module already loaded
|
||||
|
||||
|
||||
// Get the path of the module to load
|
||||
- std::string filename = OIDN_LIBRARY_NAME "_" + name;
|
||||
+ std::string filename = OIDN_LIBRARY_NAME "_" + name + SHARED_POSTFIX;
|
||||
|
|
@ -34,18 +34,18 @@ index cafedbc..b7d7ff6 100644
|
|||
filename = "lib" + filename + ".so" + versionStr;
|
||||
#endif
|
||||
diff --git a/devices/CMakeLists.txt b/devices/CMakeLists.txt
|
||||
index d43a68e..c878613 100644
|
||||
index a0ea112..c6b31f9 100644
|
||||
--- a/devices/CMakeLists.txt
|
||||
+++ b/devices/CMakeLists.txt
|
||||
@@ -67,6 +67,7 @@ if(OIDN_DEVICE_CUDA)
|
||||
-DOIDN_WARN_AS_ERRORS:BOOL=${OIDN_WARN_AS_ERRORS}
|
||||
-DOIDN_SANITIZER:STRING=${OIDN_SANITIZER}
|
||||
-DOIDN_DEVICE_CUDA_API:STRING=${OIDN_DEVICE_CUDA_API}
|
||||
+ -DPython_EXECUTABLE:STRING=${Python_EXECUTABLE}
|
||||
BUILD_ALWAYS TRUE
|
||||
DEPENDS
|
||||
OpenImageDenoise_core
|
||||
@@ -158,6 +159,8 @@ if(OIDN_DEVICE_HIP)
|
||||
@@ -60,6 +60,7 @@ if(OIDN_DEVICE_CUDA)
|
||||
-DOIDN_WARN_AS_ERRORS:BOOL=${OIDN_WARN_AS_ERRORS}
|
||||
-DOIDN_SANITIZER:STRING=${OIDN_SANITIZER}
|
||||
-DOIDN_DEVICE_CUDA_API:STRING=${OIDN_DEVICE_CUDA_API}
|
||||
+ -DPython_EXECUTABLE:STRING=${Python_EXECUTABLE}
|
||||
)
|
||||
if(DEFINED CUDAToolkit_ROOT)
|
||||
list(APPEND _oidn_cuda_cache_args
|
||||
@@ -170,6 +171,8 @@ if(OIDN_DEVICE_HIP)
|
||||
-DOIDN_API_NAMESPACE:STRING=${OIDN_API_NAMESPACE}
|
||||
-DOIDN_WARN_AS_ERRORS:BOOL=${OIDN_WARN_AS_ERRORS}
|
||||
-DOIDN_SANITIZER:STRING=${OIDN_SANITIZER}
|
||||
|
|
@ -55,20 +55,22 @@ index d43a68e..c878613 100644
|
|||
DEPENDS
|
||||
OpenImageDenoise_core
|
||||
diff --git a/devices/hip/hip_device.cpp b/devices/hip/hip_device.cpp
|
||||
index 35c6291..5cc2d84 100644
|
||||
index 6093afc..2f0e67f 100644
|
||||
--- a/devices/hip/hip_device.cpp
|
||||
+++ b/devices/hip/hip_device.cpp
|
||||
@@ -97,11 +97,17 @@ OIDN_NAMESPACE_BEGIN
|
||||
@@ -96,13 +96,19 @@ OIDN_NAMESPACE_BEGIN
|
||||
HIPArch HIPDevice::getArch(const hipDeviceProp_t& prop)
|
||||
{
|
||||
const std::string name = getArchName(prop);
|
||||
|
||||
+ // BLENDER: this comment is meant to generate a merge conflict if the code
|
||||
+ // here changes, so we know that hipSupportsDeviceOIDN should be updated.
|
||||
if (name == "gfx1030")
|
||||
if (name == "gfx1030" || name == "gfx1031" || name == "gfx1032" || name == "gfx1034" ||
|
||||
name == "gfx1035" || name == "gfx1036")
|
||||
return HIPArch::DL;
|
||||
+ // BLENDER: this comment is meant to generate a merge conflict if the code
|
||||
+ // here changes, so we know that hipSupportsDeviceOIDN should be updated.
|
||||
if (name == "gfx1100" || name == "gfx1101" || name == "gfx1102" ||
|
||||
if (name == "gfx1100" || name == "gfx1101" || name == "gfx1102" || name == "gfx1103" ||
|
||||
name == "gfx1150" || name == "gfx1151" || name == "gfx1152" ||
|
||||
name == "gfx1200" || name == "gfx1201")
|
||||
return HIPArch::WMMA;
|
||||
+ // BLENDER: this comment is meant to generate a merge conflict if the code
|
||||
|
|
@ -76,15 +78,3 @@ index 35c6291..5cc2d84 100644
|
|||
else
|
||||
return HIPArch::Unknown;
|
||||
}
|
||||
diff --git a/devices/sycl/sycl_device_table.h b/devices/sycl/sycl_device_table.h
|
||||
index 70dd493..7a773ea 100644
|
||||
--- a/devices/sycl/sycl_device_table.h
|
||||
+++ b/devices/sycl/sycl_device_table.h
|
||||
@@ -77,6 +77,7 @@ OIDN_NAMESPACE_BEGIN
|
||||
SYCLArch::Xe2HPG,
|
||||
{
|
||||
0x05004000, // bmg-g21
|
||||
+ 0x05008000,
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -13,11 +13,42 @@ diff -Naur orig/CMakeLists.txt external_openimageio/CMakeLists.txt
|
|||
diff -Naur orig/src/cmake/compiler.cmake external_openimageio/src/cmake/compiler.cmake
|
||||
--- orig/src/cmake/compiler.cmake 2020-05-10 21:43:52 -0600
|
||||
+++ external_openimageio/src/cmake/compiler.cmake 2020-05-13 17:02:54 -0600
|
||||
@@ -188,6 +189,7 @@
|
||||
@@ -204,6 +204,7 @@ if (MSVC)
|
||||
add_compile_definitions (_CRT_NONSTDC_NO_WARNINGS)
|
||||
add_compile_definitions (_SCL_SECURE_NO_WARNINGS)
|
||||
add_compile_definitions (JAS_WIN_MSVC_BUILD)
|
||||
+ add_compile_definitions (OPJ_STATIC)
|
||||
# https://github.com/AcademySoftwareFoundation/OpenImageIO/issues/4641#issuecomment-2725013661
|
||||
add_compile_definitions (_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR)
|
||||
endif (MSVC)
|
||||
diff -Naur OpenImageIO-3.1.7.0/src/cmake/externalpackages.cmake external_openimageio/src/cmake/externalpackages.cmake
|
||||
--- OpenImageIO-3.1.7.0/src/cmake/externalpackages.cmake 2025-11-01 00:47:41.000000000 -0700
|
||||
+++ external_openimageio/src/cmake/externalpackages.cmake 2025-11-13 16:54:00.826831400 -0800
|
||||
@@ -164,7 +164,8 @@
|
||||
# For HEIF/HEIC/AVIF formats
|
||||
checked_find_package (Libheif VERSION_MIN 1.11
|
||||
RECOMMEND_MIN 1.16
|
||||
- RECOMMEND_MIN_REASON "for orientation support")
|
||||
+ RECOMMEND_MIN_REASON "for orientation support"
|
||||
+ PREFER_CONFIG)
|
||||
|
||||
if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD"
|
||||
checked_find_package (LibRaw
|
||||
VERSION_MIN 0.20.0
|
||||
diff -Naur OpenImageIO-3.1.7.0/src/heif.imageio/CMakeLists.txt external_openimageio/src/heif.imageio/CMakeLists.txt
|
||||
--- OpenImageIO-3.1.7.0/src/heif.imageio/CMakeLists.txt 2025-11-01 00:47:41.000000000 -0700
|
||||
+++ external_openimageio/src/heif.imageio/CMakeLists.txt 2025-11-13 16:59:13.920763100 -0800
|
||||
@@ -24,10 +24,12 @@
|
||||
message ("${ColorReset}")
|
||||
endif()
|
||||
endif()
|
||||
-
|
||||
+ if (TARGET heif)
|
||||
+ set (HEIF_TARGET heif)
|
||||
+ endif()
|
||||
add_oiio_plugin (heifinput.cpp heifoutput.cpp
|
||||
INCLUDE_DIRS ${LIBHEIF_INCLUDES}
|
||||
- LINK_LIBRARIES ${LIBHEIF_LIBRARIES}
|
||||
+ LINK_LIBRARIES ${LIBHEIF_LIBRARIES} ${HEIF_TARGET}
|
||||
DEFINITIONS "USE_HEIF=1")
|
||||
else ()
|
||||
message (WARNING "heif plugin will not be built")
|
||||
|
|
|
|||
|
|
@ -1,105 +0,0 @@
|
|||
diff --git a/src/include/OpenImageIO/imageio.h b/src/include/OpenImageIO/imageio.h
|
||||
index bb575880c..6a8e04cec 100644
|
||||
--- a/src/include/OpenImageIO/imageio.h
|
||||
+++ b/src/include/OpenImageIO/imageio.h
|
||||
@@ -2016,6 +2016,9 @@ public:
|
||||
/// Does this format allow 0x0 sized images, i.e. an image file
|
||||
/// with metadata only and no pixels?
|
||||
///
|
||||
+ /// - `"cicp"` :
|
||||
+ /// Does this format support embedding CICP metadata?
|
||||
+ ///
|
||||
/// This list of queries may be extended in future releases. Since this
|
||||
/// can be done simply by recognizing new query strings, and does not
|
||||
/// require any new API entry points, addition of support for new
|
||||
@@ -3224,7 +3227,6 @@ OIIO_API void set_colorspace(ImageSpec& spec, string_view name);
|
||||
/// @version 3.0
|
||||
OIIO_API void set_colorspace_rec709_gamma(ImageSpec& spec, float gamma);
|
||||
|
||||
-
|
||||
/// Are the two named color spaces equivalent, based on the default color
|
||||
/// config in effect?
|
||||
///
|
||||
diff --git a/src/png.imageio/png_pvt.h b/src/png.imageio/png_pvt.h
|
||||
index 85ac6ec74..450689a67 100644
|
||||
--- a/src/png.imageio/png_pvt.h
|
||||
+++ b/src/png.imageio/png_pvt.h
|
||||
@@ -40,7 +40,7 @@ http://lists.openimageio.org/pipermail/oiio-dev-openimageio.org/2009-April/00065
|
||||
OIIO_PLUGIN_NAMESPACE_BEGIN
|
||||
|
||||
#define ICC_PROFILE_ATTR "ICCProfile"
|
||||
-
|
||||
+#define CICP_ATTR "CICP"
|
||||
|
||||
namespace PNG_pvt {
|
||||
|
||||
@@ -326,6 +326,16 @@ read_info(png_structp& sp, png_infop& ip, int& bit_depth, int& color_type,
|
||||
|
||||
interlace_type = png_get_interlace_type(sp, ip);
|
||||
|
||||
+#ifdef PNG_cICP_SUPPORTED
|
||||
+ {
|
||||
+ png_byte pri = 0, trc = 0, mtx = 0, vfr = 0;
|
||||
+ if (png_get_cICP(sp, ip, &pri, &trc, &mtx, &vfr)) {
|
||||
+ int cicp[4] = { pri, trc, mtx, vfr };
|
||||
+ spec.attribute(CICP_ATTR, TypeDesc(TypeDesc::INT, 4), cicp);
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
#ifdef PNG_eXIf_SUPPORTED
|
||||
// Recent version of PNG and libpng (>= 1.6.32, I think) have direct
|
||||
// support for Exif chunks. Older versions don't support it, and I'm not
|
||||
@@ -698,6 +708,21 @@ write_info(png_structp& sp, png_infop& ip, int& color_type, ImageSpec& spec,
|
||||
(png_uint_32)(yres * scale), unittype);
|
||||
}
|
||||
|
||||
+#ifdef PNG_cICP_SUPPORTED
|
||||
+ const ParamValue* p = spec.find_attribute(CICP_ATTR,
|
||||
+ TypeDesc(TypeDesc::INT, 4));
|
||||
+ if (p) {
|
||||
+ const int* int_vals = static_cast<const int*>(p->data());
|
||||
+ png_byte vals[4];
|
||||
+ for (int i = 0; i < 4; ++i)
|
||||
+ vals[i] = static_cast<png_byte>(int_vals[i]);
|
||||
+ if (setjmp(png_jmpbuf(sp))) // NOLINT(cert-err52-cpp)
|
||||
+ return "Could not set PNG cICP chunk";
|
||||
+ // libpng will only write the chunk if the third byte is 0
|
||||
+ png_set_cICP(sp, ip, vals[0], vals[1], (png_byte)0, vals[3]);
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
#ifdef PNG_eXIf_SUPPORTED
|
||||
std::vector<char> exifBlob;
|
||||
encode_exif(spec, exifBlob, endian::big);
|
||||
diff --git a/src/png.imageio/pnginput.cpp b/src/png.imageio/pnginput.cpp
|
||||
index 4947b3b6a..085448e24 100644
|
||||
--- a/src/png.imageio/pnginput.cpp
|
||||
+++ b/src/png.imageio/pnginput.cpp
|
||||
@@ -18,7 +18,11 @@ public:
|
||||
const char* format_name(void) const override { return "png"; }
|
||||
int supports(string_view feature) const override
|
||||
{
|
||||
- return (feature == "ioproxy" || feature == "exif");
|
||||
+ return (feature == "ioproxy" || feature == "exif"
|
||||
+#ifdef PNG_cICP_SUPPORTED
|
||||
+ || feature == "cicp"
|
||||
+#endif
|
||||
+ );
|
||||
}
|
||||
bool valid_file(Filesystem::IOProxy* ioproxy) const override;
|
||||
bool open(const std::string& name, ImageSpec& newspec) override;
|
||||
diff --git a/src/png.imageio/pngoutput.cpp b/src/png.imageio/pngoutput.cpp
|
||||
index 1b5c2c385..00e11947c 100644
|
||||
--- a/src/png.imageio/pngoutput.cpp
|
||||
+++ b/src/png.imageio/pngoutput.cpp
|
||||
@@ -24,6 +24,9 @@ public:
|
||||
return (feature == "alpha" || feature == "ioproxy"
|
||||
#ifdef PNG_eXIf_SUPPORTED
|
||||
|| feature == "exif"
|
||||
+#endif
|
||||
+#ifdef PNG_cICP_SUPPORTED
|
||||
+ || feature == "cicp"
|
||||
#endif
|
||||
);
|
||||
}
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
diff --git a/runtime/src/z_Linux_asm.S b/runtime/src/z_Linux_asm.S
|
||||
index 0d8885e..42aa5ad 100644
|
||||
--- a/runtime/src/z_Linux_asm.S
|
||||
+++ b/runtime/src/z_Linux_asm.S
|
||||
@@ -1540,10 +1540,12 @@ __kmp_unnamed_critical_addr:
|
||||
.comm .gomp_critical_user_,32,8
|
||||
.data
|
||||
.align 8
|
||||
- .global __kmp_unnamed_critical_addr
|
||||
-__kmp_unnamed_critical_addr:
|
||||
+ .global ___kmp_unnamed_critical_addr
|
||||
+___kmp_unnamed_critical_addr:
|
||||
.8byte .gomp_critical_user_
|
||||
- .size __kmp_unnamed_critical_addr,8
|
||||
+# if !(KMP_OS_DARWIN)
|
||||
+ .size ___kmp_unnamed_critical_addr,8
|
||||
+# endif
|
||||
#endif /* KMP_ARCH_PPC64 || KMP_ARCH_AARCH64 */
|
||||
|
||||
#if KMP_OS_LINUX
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,97 +0,0 @@
|
|||
From 2a1dd46bbd14b6fdc6540c76422ac4e9bd8ab724 Mon Sep 17 00:00:00 2001
|
||||
From: Brecht Van Lommel <brecht@blender.org>
|
||||
Date: Fri, 13 Dec 2024 02:31:45 +0100
|
||||
Subject: [PATCH] Fix address sanitizer warnings with stencil table casting
|
||||
|
||||
For compatibility, StencilTableReal<float> is cast to StencilTable, which has
|
||||
the same data layout but it's not actually an instance of that class. And so
|
||||
using static_cast is not strictly correct. Use reinterpret_cast instead.
|
||||
---
|
||||
opensubdiv/far/patchTable.h | 6 +++---
|
||||
opensubdiv/far/stencilTableFactory.h | 12 ++++++------
|
||||
2 files changed, 9 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/opensubdiv/far/patchTable.h b/opensubdiv/far/patchTable.h
|
||||
index d2e9d5a614..6731d788f6 100644
|
||||
--- a/opensubdiv/far/patchTable.h
|
||||
+++ b/opensubdiv/far/patchTable.h
|
||||
@@ -777,19 +777,19 @@ PatchTable::LocalPointFaceVaryingStencilPrecisionMatchesType<double>() const {
|
||||
inline StencilTable const *
|
||||
PatchTable::GetLocalPointStencilTable() const {
|
||||
assert(LocalPointStencilPrecisionMatchesType<float>());
|
||||
- return static_cast<StencilTable const *>(_localPointStencils.Get<float>());
|
||||
+ return reinterpret_cast<StencilTable const *>(_localPointStencils.Get<float>());
|
||||
}
|
||||
inline StencilTable const *
|
||||
PatchTable::GetLocalPointVaryingStencilTable() const {
|
||||
assert(LocalPointVaryingStencilPrecisionMatchesType<float>());
|
||||
- return static_cast<StencilTable const *>(
|
||||
+ return reinterpret_cast<StencilTable const *>(
|
||||
_localPointVaryingStencils.Get<float>());
|
||||
}
|
||||
inline StencilTable const *
|
||||
PatchTable::GetLocalPointFaceVaryingStencilTable(int channel) const {
|
||||
assert(LocalPointFaceVaryingStencilPrecisionMatchesType<float>());
|
||||
if (channel >= 0 && channel < (int)_localPointFaceVaryingStencils.size()) {
|
||||
- return static_cast<StencilTable const *>(
|
||||
+ return reinterpret_cast<StencilTable const *>(
|
||||
_localPointFaceVaryingStencils[channel].Get<float>());
|
||||
}
|
||||
return NULL;
|
||||
diff --git a/opensubdiv/far/stencilTableFactory.h b/opensubdiv/far/stencilTableFactory.h
|
||||
index c2e95e1c3d..5b8d43f1dc 100644
|
||||
--- a/opensubdiv/far/stencilTableFactory.h
|
||||
+++ b/opensubdiv/far/stencilTableFactory.h
|
||||
@@ -293,14 +293,14 @@ class StencilTableFactory : public StencilTableFactoryReal<float> {
|
||||
static StencilTable const * Create(
|
||||
TopologyRefiner const & refiner, Options options = Options()) {
|
||||
|
||||
- return static_cast<StencilTable const *>(
|
||||
+ return reinterpret_cast<StencilTable const *>(
|
||||
BaseFactory::Create(refiner, options));
|
||||
}
|
||||
|
||||
static StencilTable const * Create(
|
||||
int numTables, StencilTable const ** tables) {
|
||||
|
||||
- return static_cast<StencilTable const *>(
|
||||
+ return reinterpret_cast<StencilTable const *>(
|
||||
BaseFactory::Create(numTables,
|
||||
reinterpret_cast<BaseTable const **>(tables)));
|
||||
}
|
||||
@@ -311,7 +311,7 @@ class StencilTableFactory : public StencilTableFactoryReal<float> {
|
||||
StencilTable const *localPointStencilTable,
|
||||
bool factorize = true) {
|
||||
|
||||
- return static_cast<StencilTable const *>(
|
||||
+ return reinterpret_cast<StencilTable const *>(
|
||||
BaseFactory::AppendLocalPointStencilTable(refiner,
|
||||
static_cast<BaseTable const *>(baseStencilTable),
|
||||
static_cast<BaseTable const *>(localPointStencilTable),
|
||||
@@ -324,7 +324,7 @@ class StencilTableFactory : public StencilTableFactoryReal<float> {
|
||||
StencilTable const *localPointStencilTable,
|
||||
bool factorize = true) {
|
||||
|
||||
- return static_cast<StencilTable const *>(
|
||||
+ return reinterpret_cast<StencilTable const *>(
|
||||
BaseFactory::AppendLocalPointStencilTableVarying(refiner,
|
||||
static_cast<BaseTable const *>(baseStencilTable),
|
||||
static_cast<BaseTable const *>(localPointStencilTable),
|
||||
@@ -338,7 +338,7 @@ class StencilTableFactory : public StencilTableFactoryReal<float> {
|
||||
int channel = 0,
|
||||
bool factorize = true) {
|
||||
|
||||
- return static_cast<StencilTable const *>(
|
||||
+ return reinterpret_cast<StencilTable const *>(
|
||||
BaseFactory::AppendLocalPointStencilTableFaceVarying(refiner,
|
||||
static_cast<BaseTable const *>(baseStencilTable),
|
||||
static_cast<BaseTable const *>(localPointStencilTable),
|
||||
@@ -364,7 +364,7 @@ class LimitStencilTableFactory : public LimitStencilTableFactoryReal<float> {
|
||||
PatchTable const * patchTable = 0,
|
||||
Options options = Options()) {
|
||||
|
||||
- return static_cast<LimitStencilTable const *>(
|
||||
+ return reinterpret_cast<LimitStencilTable const *>(
|
||||
BaseFactory::Create(
|
||||
refiner,
|
||||
locationArrays,
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
diff --git a/nanovdb/nanovdb/tools/GridBuilder.h b/nanovdb/nanovdb/tools/GridBuilder.h
|
||||
index 30385661d0..428215ba65 100644
|
||||
--- a/nanovdb/nanovdb/tools/GridBuilder.h
|
||||
+++ b/nanovdb/nanovdb/tools/GridBuilder.h
|
||||
@@ -1158,7 +1158,7 @@ struct LeafNode
|
||||
ValueIterator& operator=(const ValueIterator&) = default;
|
||||
ValueType operator*() const { NANOVDB_ASSERT(*this); return mParent->mValues[mPos];}
|
||||
Coord getCoord() const { NANOVDB_ASSERT(*this); return mParent->offsetToGlobalCoord(mPos);}
|
||||
- bool isActive() const { NANOVDB_ASSERT(*this); return mParent->isActive(mPos);}
|
||||
+ bool isActive() const { NANOVDB_ASSERT(*this); return mParent->mValueMask.isOn(mPos);}
|
||||
operator bool() const {return mPos < SIZE;}
|
||||
ValueIterator& operator++() {++mPos; return *this;}
|
||||
ValueIterator operator++(int) {
|
||||
diff --git a/openvdb/openvdb/tree/NodeManager.h b/openvdb/openvdb/tree/NodeManager.h
|
||||
index 27a3f82012..1023c00748 100644
|
||||
--- a/openvdb/openvdb/tree/NodeManager.h
|
||||
+++ b/openvdb/openvdb/tree/NodeManager.h
|
||||
@@ -328,7 +328,7 @@ class NodeList
|
||||
void operator()(const NodeRange& range) const
|
||||
{
|
||||
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
|
||||
- OpT::template eval(mNodeOp, it);
|
||||
+ OpT::eval(mNodeOp, it);
|
||||
}
|
||||
}
|
||||
const NodeOp mNodeOp;
|
||||
@@ -348,7 +348,7 @@ class NodeList
|
||||
void operator()(const NodeRange& range) const
|
||||
{
|
||||
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
|
||||
- OpT::template eval(mNodeOp, it);
|
||||
+ OpT::eval(mNodeOp, it);
|
||||
}
|
||||
}
|
||||
const NodeOp& mNodeOp;
|
||||
@@ -373,7 +373,7 @@ class NodeList
|
||||
void operator()(const NodeRange& range)
|
||||
{
|
||||
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
|
||||
- OpT::template eval(*mNodeOp, it);
|
||||
+ OpT::eval(*mNodeOp, it);
|
||||
}
|
||||
}
|
||||
void join(const NodeReducer& other)
|
||||
|
|
@ -1,113 +0,0 @@
|
|||
diff --git a/tools/FindPythonLibsNew.cmake b/tools/FindPythonLibsNew.cmake
|
||||
index ce558d4ece..104448597f 100644
|
||||
--- a/tools/FindPythonLibsNew.cmake
|
||||
+++ b/tools/FindPythonLibsNew.cmake
|
||||
@@ -172,13 +172,20 @@ _pybind11_get_if_undef(_PYTHON_VALUES 0 _PYTHON_VERSION_LIST)
|
||||
_pybind11_get_if_undef(_PYTHON_VALUES 1 PYTHON_PREFIX)
|
||||
_pybind11_get_if_undef(_PYTHON_VALUES 2 PYTHON_INCLUDE_DIR)
|
||||
_pybind11_get_if_undef(_PYTHON_VALUES 3 PYTHON_SITE_PACKAGES)
|
||||
-_pybind11_get_if_undef(_PYTHON_VALUES 4 PYTHON_MODULE_EXTENSION)
|
||||
_pybind11_get_if_undef(_PYTHON_VALUES 5 PYTHON_IS_DEBUG)
|
||||
_pybind11_get_if_undef(_PYTHON_VALUES 6 PYTHON_SIZEOF_VOID_P)
|
||||
_pybind11_get_if_undef(_PYTHON_VALUES 7 PYTHON_LIBRARY_SUFFIX)
|
||||
_pybind11_get_if_undef(_PYTHON_VALUES 8 PYTHON_LIBDIR)
|
||||
_pybind11_get_if_undef(_PYTHON_VALUES 9 PYTHON_MULTIARCH)
|
||||
|
||||
+list(GET _PYTHON_VALUES 4 _PYTHON_MODULE_EXT_SUFFIX)
|
||||
+if(PYBIND11_PYTHONLIBS_OVERWRITE OR NOT DEFINED PYTHON_MODULE_DEBUG_POSTFIX)
|
||||
+ get_filename_component(PYTHON_MODULE_DEBUG_POSTFIX "${_PYTHON_MODULE_EXT_SUFFIX}" NAME_WE)
|
||||
+endif()
|
||||
+if(PYBIND11_PYTHONLIBS_OVERWRITE OR NOT DEFINED PYTHON_MODULE_EXTENSION)
|
||||
+ get_filename_component(PYTHON_MODULE_EXTENSION "${_PYTHON_MODULE_EXT_SUFFIX}" EXT)
|
||||
+endif()
|
||||
+
|
||||
# Make sure the Python has the same pointer-size as the chosen compiler
|
||||
# Skip if CMAKE_SIZEOF_VOID_P is not defined
|
||||
# This should be skipped for (non-Apple) cross-compiles (like EMSCRIPTEN)
|
||||
diff --git a/tools/pybind11NewTools.cmake b/tools/pybind11NewTools.cmake
|
||||
index 7d7424a790..07bd2f90eb 100644
|
||||
--- a/tools/pybind11NewTools.cmake
|
||||
+++ b/tools/pybind11NewTools.cmake
|
||||
@@ -95,25 +95,36 @@ endif()
|
||||
|
||||
# Get the suffix - SO is deprecated, should use EXT_SUFFIX, but this is
|
||||
# required for PyPy3 (as of 7.3.1)
|
||||
-if(NOT DEFINED PYTHON_MODULE_EXTENSION)
|
||||
+if(NOT DEFINED PYTHON_MODULE_EXTENSION OR NOT DEFINED PYTHON_MODULE_DEBUG_POSTFIX)
|
||||
execute_process(
|
||||
COMMAND
|
||||
"${${_Python}_EXECUTABLE}" "-c"
|
||||
"import sys, importlib; s = importlib.import_module('distutils.sysconfig' if sys.version_info < (3, 10) else 'sysconfig'); print(s.get_config_var('EXT_SUFFIX') or s.get_config_var('SO'))"
|
||||
- OUTPUT_VARIABLE _PYTHON_MODULE_EXTENSION
|
||||
- ERROR_VARIABLE _PYTHON_MODULE_EXTENSION_ERR
|
||||
+ OUTPUT_VARIABLE _PYTHON_MODULE_EXT_SUFFIX
|
||||
+ ERROR_VARIABLE _PYTHON_MODULE_EXT_SUFFIX_ERR
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
- if(_PYTHON_MODULE_EXTENSION STREQUAL "")
|
||||
+ if(_PYTHON_MODULE_EXT_SUFFIX STREQUAL "")
|
||||
message(
|
||||
FATAL_ERROR "pybind11 could not query the module file extension, likely the 'distutils'"
|
||||
- "package is not installed. Full error message:\n${_PYTHON_MODULE_EXTENSION_ERR}")
|
||||
+ "package is not installed. Full error message:\n${_PYTHON_MODULE_EXT_SUFFIX_ERR}"
|
||||
+ )
|
||||
endif()
|
||||
|
||||
# This needs to be available for the pybind11_extension function
|
||||
- set(PYTHON_MODULE_EXTENSION
|
||||
- "${_PYTHON_MODULE_EXTENSION}"
|
||||
- CACHE INTERNAL "")
|
||||
+ if(NOT DEFINED PYTHON_MODULE_DEBUG_POSTFIX)
|
||||
+ get_filename_component(_PYTHON_MODULE_DEBUG_POSTFIX "${_PYTHON_MODULE_EXT_SUFFIX}" NAME_WE)
|
||||
+ set(PYTHON_MODULE_DEBUG_POSTFIX
|
||||
+ "${_PYTHON_MODULE_DEBUG_POSTFIX}"
|
||||
+ CACHE INTERNAL "")
|
||||
+ endif()
|
||||
+
|
||||
+ if(NOT DEFINED PYTHON_MODULE_EXTENSION)
|
||||
+ get_filename_component(_PYTHON_MODULE_EXTENSION "${_PYTHON_MODULE_EXT_SUFFIX}" EXT)
|
||||
+ set(PYTHON_MODULE_EXTENSION
|
||||
+ "${_PYTHON_MODULE_EXTENSION}"
|
||||
+ CACHE INTERNAL "")
|
||||
+ endif()
|
||||
endif()
|
||||
|
||||
# Python debug libraries expose slightly different objects before 3.8
|
||||
@@ -251,6 +262,9 @@ endfunction()
|
||||
|
||||
function(pybind11_extension name)
|
||||
# The extension is precomputed
|
||||
- set_target_properties(${name} PROPERTIES PREFIX "" SUFFIX "${PYTHON_MODULE_EXTENSION}")
|
||||
-
|
||||
+ set_target_properties(
|
||||
+ ${name}
|
||||
+ PROPERTIES PREFIX ""
|
||||
+ DEBUG_POSTFIX "${PYTHON_MODULE_DEBUG_POSTFIX}"
|
||||
+ SUFFIX "${PYTHON_MODULE_EXTENSION}")
|
||||
endfunction()
|
||||
diff --git a/tools/pybind11Tools.cmake b/tools/pybind11Tools.cmake
|
||||
index 66ad00a478..874fc39ebb 100644
|
||||
--- a/tools/pybind11Tools.cmake
|
||||
+++ b/tools/pybind11Tools.cmake
|
||||
@@ -65,6 +65,7 @@ _pybind11_promote_to_cache(PYTHON_INCLUDE_DIRS)
|
||||
_pybind11_promote_to_cache(PYTHON_LIBRARIES)
|
||||
_pybind11_promote_to_cache(PYTHON_MODULE_PREFIX)
|
||||
_pybind11_promote_to_cache(PYTHON_MODULE_EXTENSION)
|
||||
+_pybind11_promote_to_cache(PYTHON_MODULE_DEBUG_POSTFIX)
|
||||
_pybind11_promote_to_cache(PYTHON_VERSION_MAJOR)
|
||||
_pybind11_promote_to_cache(PYTHON_VERSION_MINOR)
|
||||
_pybind11_promote_to_cache(PYTHON_VERSION)
|
||||
@@ -148,8 +149,11 @@ endif()
|
||||
|
||||
function(pybind11_extension name)
|
||||
# The prefix and extension are provided by FindPythonLibsNew.cmake
|
||||
- set_target_properties(${name} PROPERTIES PREFIX "${PYTHON_MODULE_PREFIX}"
|
||||
- SUFFIX "${PYTHON_MODULE_EXTENSION}")
|
||||
+ set_target_properties(
|
||||
+ ${name}
|
||||
+ PROPERTIES PREFIX "${PYTHON_MODULE_PREFIX}"
|
||||
+ DEBUG_POSTFIX "${PYTHON_MODULE_DEBUG_POSTFIX}"
|
||||
+ SUFFIX "${PYTHON_MODULE_EXTENSION}")
|
||||
endfunction()
|
||||
|
||||
# Build a Python extension module:
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
diff --git a/setup.py.orig b/setup.py
|
||||
index a97a755..07ce853 100644
|
||||
--- a/setup.py.orig
|
||||
+++ b/setup.py
|
||||
@@ -2168,7 +2168,7 @@
|
||||
ffi_inc = None
|
||||
print('Header file {} does not exist'.format(ffi_h))
|
||||
if ffi_lib is None and ffi_inc:
|
||||
- for lib_name in ('ffi', 'ffi_pic'):
|
||||
+ for lib_name in ('ffi_pic', ):
|
||||
if (self.compiler.find_library_file(self.lib_dirs, lib_name)):
|
||||
ffi_lib = lib_name
|
||||
break
|
||||
--- a/Modules/posixmodule.c 2022-12-09 21:44:03
|
||||
+++ b/Modules/posixmodule.c 2022-12-09 21:39:46
|
||||
@@ -10564,10 +10564,15 @@
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
#ifdef HAVE_MKFIFOAT
|
||||
if (dir_fd != DEFAULT_DIR_FD) {
|
||||
+// BLENDER: disable also at compile time for compatibility when linking with older Xcode.
|
||||
+// https://github.com/python/cpython/issues/97897
|
||||
+#ifndef __APPLE__
|
||||
if (HAVE_MKFIFOAT_RUNTIME) {
|
||||
result = mkfifoat(dir_fd, path->narrow, mode);
|
||||
|
||||
+ } else
|
||||
+#endif
|
||||
+ {
|
||||
- } else {
|
||||
mkfifoat_unavailable = 1;
|
||||
result = 0;
|
||||
}
|
||||
@@ -10638,10 +10633,15 @@
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
#ifdef HAVE_MKNODAT
|
||||
if (dir_fd != DEFAULT_DIR_FD) {
|
||||
+// BLENDER: disable also at compile time for compatibility when linking with older Xcode.
|
||||
+// https://github.com/python/cpython/issues/97897
|
||||
+#ifndef __APPLE__
|
||||
if (HAVE_MKNODAT_RUNTIME) {
|
||||
result = mknodat(dir_fd, path->narrow, mode, device);
|
||||
|
||||
+ } else
|
||||
+#endif
|
||||
+ {
|
||||
- } else {
|
||||
mknodat_unavailable = 1;
|
||||
result = 0;
|
||||
}
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
diff --git a/setup.py.orig b/setup.py
|
||||
index a97a755..07ce853 100644
|
||||
--- a/setup.py.orig
|
||||
+++ b/setup.py
|
||||
@@ -2168,7 +2168,7 @@
|
||||
ffi_inc = None
|
||||
print('Header file {} does not exist'.format(ffi_h))
|
||||
if ffi_lib is None and ffi_inc:
|
||||
- for lib_name in ('ffi', 'ffi_pic'):
|
||||
+ for lib_name in ('ffi_pic', ):
|
||||
if (self.compiler.find_library_file(self.lib_dirs, lib_name)):
|
||||
ffi_lib = lib_name
|
||||
break
|
||||
--- a/configure 2023-12-10 05:22:18.130767840 +0100
|
||||
+++ b/configure 2023-12-10 05:22:05.210521365 +0100
|
||||
@@ -11258,7 +11258,7 @@
|
||||
#define HAVE_LIBDL 1
|
||||
_ACEOF
|
||||
|
||||
- LIBS="-ldl $LIBS"
|
||||
+ LIBS="-ldl -lm $LIBS"
|
||||
|
||||
fi
|
||||
# Dynamic linking for SunOS/Solaris and SYSV
|
||||
@@ -23231,7 +23231,7 @@
|
||||
save_LIBS=$LIBS
|
||||
|
||||
|
||||
- LIBS="$LIBS $OPENSSL_LIBS"
|
||||
+ LIBS="$OPENSSL_LIBS $LIBS"
|
||||
CFLAGS="$CFLAGS $OPENSSL_INCLUDES"
|
||||
LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH"
|
||||
|
||||
@@ -23292,7 +23292,7 @@
|
||||
save_LIBS=$LIBS
|
||||
|
||||
|
||||
- LIBS="$LIBS $LIBCRYPTO_LIBS"
|
||||
+ LIBS="$LIBCRYPTO_LIBS $LIBS"
|
||||
CFLAGS="$CFLAGS $OPENSSL_INCLUDES"
|
||||
LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH"
|
||||
|
||||
14
build_files/build_environment/patches/sdl_woa.diff
Normal file
14
build_files/build_environment/patches/sdl_woa.diff
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -755,6 +755,11 @@ if(MSVC)
|
||||
if(MSVC_VERSION GREATER 1926 AND CMAKE_GENERATOR_PLATFORM MATCHES "Win32|x64")
|
||||
list(APPEND EXTRA_LDFLAGS_BUILD "-CETCOMPAT")
|
||||
endif()
|
||||
+
|
||||
+ # for VS >= 17.14 targeting ARM64: inline the Interlocked funcs
|
||||
+ if(MSVC_VERSION GREATER 1943 AND SDL_CPU_ARM64 AND NOT SDL_LIBC)
|
||||
+ list(APPEND EXTRA_CFLAGS /forceInterlockedFunctions-)
|
||||
+ endif()
|
||||
endif()
|
||||
|
||||
if(CMAKE_C_COMPILER_ID STREQUAL "MSVC")
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
diff --git a/src/tbbmalloc_proxy/proxy.cpp b/src/tbbmalloc_proxy/proxy.cpp
|
||||
index a6d3dea06f..954583ba5f 100644
|
||||
--- a/src/tbbmalloc_proxy/proxy.cpp
|
||||
+++ b/src/tbbmalloc_proxy/proxy.cpp
|
||||
@@ -431,14 +431,12 @@ void __TBB_malloc__free_base(void *ptr)
|
||||
const char* known_bytecodes[] = {
|
||||
#if _WIN64
|
||||
// "========================================================" - 56 symbols
|
||||
+ "E9********CCCC", // multiple - jmp(0xE9) with address followed by empty space (0xCC - INT 3)
|
||||
"4883EC284885C974", // release free()
|
||||
"4883EC284885C975", // release _msize()
|
||||
"4885C974375348", // release free() 8.0.50727.42, 10.0
|
||||
- "E907000000CCCC", // release _aligned_msize(), _aligned_free() ucrtbase.dll
|
||||
"C7442410000000008B", // release free() ucrtbase.dll 10.0.14393.33
|
||||
- "E90B000000CCCC", // release _msize() ucrtbase.dll 10.0.14393.33
|
||||
"48895C24085748", // release _aligned_msize() ucrtbase.dll 10.0.14393.33
|
||||
- "E903000000CCCC", // release _aligned_msize() ucrtbase.dll 10.0.16299.522
|
||||
"48894C24084883EC28BA", // debug prologue
|
||||
"4C894424184889542410", // debug _aligned_msize() 10.0
|
||||
"48894C24084883EC2848", // debug _aligned_free 10.0
|
||||
|
|
@ -194,7 +194,7 @@ index c22f2d75e..f6b724bb5 100644
|
|||
// Resolve multisample textures
|
||||
HgiGL* hgiGL = static_cast<HgiGL*>(hgi);
|
||||
diff --git a/pxr/imaging/hgiGL/graphicsPipeline.cpp b/pxr/imaging/hgiGL/graphicsPipeline.cpp
|
||||
index 9704c6e11..6d864f398 100644
|
||||
index 9704c6e11..34148d1fa 100644
|
||||
--- a/pxr/imaging/hgiGL/graphicsPipeline.cpp
|
||||
+++ b/pxr/imaging/hgiGL/graphicsPipeline.cpp
|
||||
@@ -25,7 +25,12 @@ HgiGLGraphicsPipeline::HgiGLGraphicsPipeline(
|
||||
|
|
@ -228,6 +228,15 @@ index 9704c6e11..6d864f398 100644
|
|||
//
|
||||
// Depth Stencil State
|
||||
//
|
||||
@@ -150,7 +158,7 @@ HgiGLGraphicsPipeline::BindPipeline()
|
||||
//
|
||||
if (_descriptor.multiSampleState.multiSampleEnable) {
|
||||
glEnable(GL_MULTISAMPLE);
|
||||
- if (!_hgi->GetCapabilities()->IsSet(
|
||||
+ if (!coreProfile && !_hgi->GetCapabilities()->IsSet(
|
||||
HgiDeviceCapabilitiesBitsRoundPoints)) {
|
||||
// Needed to get gl_pointCoord in FS.
|
||||
glEnable(GL_POINT_SPRITE);
|
||||
@@ -160,7 +168,9 @@ HgiGLGraphicsPipeline::BindPipeline()
|
||||
// If not using GL_MULTISAMPLE, use GL_POINT_SMOOTH to render points as
|
||||
// circles instead of square.
|
||||
|
|
@ -249,7 +258,7 @@ index 9704c6e11..6d864f398 100644
|
|||
}
|
||||
|
||||
diff --git a/pxr/imaging/hgiGL/scopedStateHolder.cpp b/pxr/imaging/hgiGL/scopedStateHolder.cpp
|
||||
index 28e31b12e..737a75dad 100644
|
||||
index 28e31b12e..3a339dc3b 100644
|
||||
--- a/pxr/imaging/hgiGL/scopedStateHolder.cpp
|
||||
+++ b/pxr/imaging/hgiGL/scopedStateHolder.cpp
|
||||
@@ -9,6 +9,7 @@
|
||||
|
|
@ -308,7 +317,7 @@ index 28e31b12e..737a75dad 100644
|
|||
if (_cullFace) {
|
||||
glEnable(GL_CULL_FACE);
|
||||
} else {
|
||||
@@ -275,10 +284,12 @@ HgiGL_ScopedStateHolder::~HgiGL_ScopedStateHolder()
|
||||
@@ -275,16 +284,17 @@ HgiGL_ScopedStateHolder::~HgiGL_ScopedStateHolder()
|
||||
glDisable(GL_MULTISAMPLE);
|
||||
}
|
||||
|
||||
|
|
@ -316,15 +325,26 @@ index 28e31b12e..737a75dad 100644
|
|||
- glEnable(GL_POINT_SMOOTH);
|
||||
- } else {
|
||||
- glDisable(GL_POINT_SMOOTH);
|
||||
- }
|
||||
-
|
||||
- if (_restorePointSprite) {
|
||||
- glEnable(GL_POINT_SPRITE);
|
||||
- } else {
|
||||
- glDisable(GL_POINT_SPRITE);
|
||||
+ if (!_coreProfile) {
|
||||
+ if (_restorePointSmooth) {
|
||||
+ glEnable(GL_POINT_SMOOTH);
|
||||
+ } else {
|
||||
+ glDisable(GL_POINT_SMOOTH);
|
||||
+ }
|
||||
+ if (_restorePointSprite) {
|
||||
+ glEnable(GL_POINT_SPRITE);
|
||||
+ } else {
|
||||
+ glDisable(GL_POINT_SPRITE);
|
||||
+ }
|
||||
}
|
||||
|
||||
if (_restorePointSprite) {
|
||||
glPixelStorei(GL_UNPACK_ALIGNMENT, _restoreUnpackAlignment);
|
||||
diff --git a/pxr/imaging/hgiGL/scopedStateHolder.h b/pxr/imaging/hgiGL/scopedStateHolder.h
|
||||
index 4e76d5426..39de06111 100644
|
||||
--- a/pxr/imaging/hgiGL/scopedStateHolder.h
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
diff --git a/pxr/imaging/hio/OpenEXRImage.cpp b/pxr/imaging/hio/OpenEXRImage.cpp
|
||||
index 443bc0b0c..4449c2fd0 100644
|
||||
--- a/pxr/imaging/hio/OpenEXRImage.cpp
|
||||
+++ b/pxr/imaging/hio/OpenEXRImage.cpp
|
||||
@@ -762,8 +762,6 @@ bool Hio_OpenEXRImage::_OpenForReading(std::string const &filename,
|
||||
}
|
||||
|
||||
if (_exrReader.numMipLevels <= mip) {
|
||||
- TF_DIAGNOSTIC_WARNING("In image \"%s\" mip level %d does not exist",
|
||||
- filename.c_str(), mip);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -7,8 +7,8 @@ REM #
|
|||
REM # If you find this script with a .txt extension, DO NOT RUN IT! vmprep will
|
||||
REM # Download this and give it the right extension.
|
||||
REM ###########################################################################
|
||||
set CMAKE_GENERATOR_INSTANCE=c:\vs2019bt\
|
||||
set CMAKE_GENERATOR=Visual Studio 16 2019
|
||||
set CMAKE_GENERATOR_INSTANCE=c:\vs2022bt\
|
||||
set CMAKE_GENERATOR=Visual Studio 17 2022
|
||||
set NODEBUG=
|
||||
set TMPDIR=c:\t\
|
||||
set ROCM_PATH=c:\tools\rocm\6.4
|
||||
|
|
@ -19,4 +19,4 @@ if not exist c:\db\ (
|
|||
mkdir c:\db
|
||||
)
|
||||
cd /d c:\db
|
||||
call c:\blendergit\blender\build_files\build_environment\windows\build_deps.cmd 2019 x64 release
|
||||
call c:\blendergit\blender\build_files\build_environment\windows\build_deps.cmd 2022 x64 release
|
||||
|
|
@ -21,9 +21,9 @@ echo #
|
|||
echo # Then run it using %USERPROFILE%/vmprep.cmd
|
||||
echo #
|
||||
echo # This will install :
|
||||
echo # - Visual Studio 2019 16.11.26 Buildtools with the required workloads in
|
||||
echo # the c:\vs2019bt\ folder
|
||||
echo # - Meson 1.6.0
|
||||
echo # - Visual Studio 2022 17.14.14 Buildtools with the required workloads in
|
||||
echo # the c:\vs2022bt\ folder
|
||||
echo # - Meson 1.9.1
|
||||
echo # - Visual Studio 2010 X64 redist (required for the yaml binary)
|
||||
echo # - Git 2.38.0
|
||||
echo # - CMake 3.31.7
|
||||
|
|
@ -66,11 +66,11 @@ echo create shortly named temp folder
|
|||
mkdir C:\t
|
||||
|
||||
echo Obtaining Visual Studio build tools installer
|
||||
curl https://download.visualstudio.microsoft.com/download/pr/48ee919d-ab7d-45bc-a595-a2262643c3bc/295fdfc1de25116a75b2d6e0944284f2f79c0778ffab798ae9db35d187e8ab99/vs_BuildTools.exe -o c:\install\vs_BuildTools.exe
|
||||
curl https://download.visualstudio.microsoft.com/download/pr/c2e2845d-bdff-44fc-ac00-3d488e9f5675/abdb87ff12fe1885ccc4964b4ab51da566549fd2096d7ceb1fdea907372f21d7/vs_BuildTools.exe -o c:\install\vs_BuildTools.exe
|
||||
echo Obtaining Visual studio blender installer configuration
|
||||
curl https://projects.blender.org/blender/blender/raw/branch/main/build_files/build_environment/windows/vsconfig_2019 -o c:\install\.vsconfig_2019
|
||||
echo Installing Visual Studio 2019 Build tools
|
||||
c:\install\vs_BuildTools.exe --wait --passive --installPath c:\vs2019bt\ --config c:\install\.vsconfig_2019
|
||||
curl https://projects.blender.org/blender/blender/raw/branch/main/build_files/build_environment/windows/vsconfig -o c:\install\.vsconfig
|
||||
echo Installing Visual Studio 2022 Build tools
|
||||
c:\install\vs_BuildTools.exe --wait --passive --installPath c:\vs2022bt\ --config c:\install\.vsconfig
|
||||
|
||||
echo Obtaining git
|
||||
curl -L https://github.com/git-for-windows/git/releases/download/v2.38.0.windows.1/Git-2.38.0-64-bit.exe -o c:\install\Git-2.38.0-64-bit.exe
|
||||
|
|
@ -83,9 +83,9 @@ echo Installing cmake
|
|||
start /wait msiexec /passive /ic:\install\cmake-3.31.7-windows-x86_64.msi ADD_CMAKE_TO_PATH="System"
|
||||
|
||||
echo Obtaining meson
|
||||
curl -L https://github.com/mesonbuild/meson/releases/download/1.6.0/meson-1.6.0-64.msi -o c:\install\meson-1.6.0-64.msi
|
||||
curl -L https://github.com/mesonbuild/meson/releases/download/1.9.1/meson-1.9.1-64.msi -o c:\install\meson-1.9.1-64.msi
|
||||
echo Installing meson
|
||||
start /wait msiexec /passive /i c:\install\meson-1.6.0-64.msi
|
||||
start /wait msiexec /passive /i c:\install\meson-1.9.1-64.msi
|
||||
|
||||
echo Obtaining Visual studio 2010 x64 redist
|
||||
curl https://download.microsoft.com/download/3/2/2/3224B87F-CFA0-4E70-BDA3-3DE650EFEBA5/vcredist_x64.exe -o c:\install\vcredist_x64.exe
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
"Microsoft.Component.MSBuild",
|
||||
"Microsoft.VisualStudio.Component.CoreBuildTools",
|
||||
"Microsoft.VisualStudio.Workload.MSBuildTools",
|
||||
"Microsoft.VisualStudio.Component.Windows10SDK",
|
||||
"Microsoft.VisualStudio.Component.Windows11SDK.22621",
|
||||
"Microsoft.VisualStudio.Component.VC.CoreBuildTools",
|
||||
"Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
|
||||
"Microsoft.VisualStudio.Component.VC.Redist.14.Latest",
|
||||
|
|
@ -36,7 +36,7 @@ else()
|
|||
set(PYTHON_ROOT_DIR "")
|
||||
endif()
|
||||
|
||||
set(_PYTHON_VERSION_SUPPORTED 3.11)
|
||||
set(_PYTHON_VERSION_SUPPORTED 3.13)
|
||||
|
||||
set(PYTHON_VERSION ${_PYTHON_VERSION_SUPPORTED} CACHE STRING "Python Version (major and minor only)")
|
||||
mark_as_advanced(PYTHON_VERSION)
|
||||
|
|
|
|||
|
|
@ -61,6 +61,7 @@ set(WITH_TBB ON CACHE BOOL "" FORCE)
|
|||
set(WITH_USD ON CACHE BOOL "" FORCE)
|
||||
set(WITH_MATERIALX ON CACHE BOOL "" FORCE)
|
||||
set(WITH_HYDRA ON CACHE BOOL "" FORCE)
|
||||
set(WITH_XR_OPENXR ON CACHE BOOL "" FORCE)
|
||||
|
||||
# platform dependent options
|
||||
if(APPLE)
|
||||
|
|
@ -79,12 +80,9 @@ if(UNIX AND NOT APPLE)
|
|||
set(WITH_X11_XINPUT ON CACHE BOOL "" FORCE)
|
||||
endif()
|
||||
if(NOT APPLE)
|
||||
set(WITH_XR_OPENXR ON CACHE BOOL "" FORCE)
|
||||
|
||||
# Can't use CMAKE_SYSTEM_PROCESSOR here as it's not set yet,
|
||||
# so fall back to checking the env for vcvarsall's VSCMD_ARG_TGT_ARCH
|
||||
if(NOT (WIN32 AND "$ENV{VSCMD_ARG_TGT_ARCH}" STREQUAL "arm64"))
|
||||
set(WITH_TBB_MALLOC_PROXY ON CACHE BOOL "" FORCE)
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -65,6 +65,7 @@ set(WITH_TBB ON CACHE BOOL "" FORCE)
|
|||
set(WITH_USD ON CACHE BOOL "" FORCE)
|
||||
set(WITH_MATERIALX ON CACHE BOOL "" FORCE)
|
||||
set(WITH_HYDRA ON CACHE BOOL "" FORCE)
|
||||
set(WITH_XR_OPENXR ON CACHE BOOL "" FORCE)
|
||||
|
||||
# platform dependent options
|
||||
if(APPLE)
|
||||
|
|
@ -88,8 +89,6 @@ if(UNIX AND NOT APPLE)
|
|||
set(WITH_PIPEWIRE_DYNLOAD ON CACHE BOOL "" FORCE)
|
||||
endif()
|
||||
if(NOT APPLE)
|
||||
set(WITH_XR_OPENXR ON CACHE BOOL "" FORCE)
|
||||
|
||||
# Can't use CMAKE_SYSTEM_PROCESSOR here as it's not set yet,
|
||||
# so fall back to checking the env for vcvarsall's VSCMD_ARG_TGT_ARCH
|
||||
if(NOT (WIN32 AND "$ENV{VSCMD_ARG_TGT_ARCH}" STREQUAL "arm64"))
|
||||
|
|
|
|||
|
|
@ -435,3 +435,9 @@ endif()
|
|||
if(DEFINED PTHREADS_LIBRARIES)
|
||||
target_link_libraries(bf_deps_pthreads INTERFACE ${PTHREADS_LIBRARIES})
|
||||
endif()
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Configure libfmt
|
||||
#
|
||||
|
||||
add_library(bf::dependencies::fmt ALIAS fmt::fmt)
|
||||
|
|
|
|||
|
|
@ -241,6 +241,9 @@ find_package(JPEG REQUIRED)
|
|||
set(TIFF_ROOT ${LIBDIR}/tiff)
|
||||
find_package(TIFF REQUIRED)
|
||||
|
||||
set(fmt_ROOT ${LIBDIR}/fmt)
|
||||
find_package(fmt REQUIRED)
|
||||
|
||||
if(WITH_IMAGE_WEBP)
|
||||
set(WEBP_ROOT_DIR ${LIBDIR}/webp)
|
||||
find_package(WebP REQUIRED)
|
||||
|
|
@ -336,6 +339,8 @@ if(WITH_CYCLES AND WITH_CYCLES_OSL)
|
|||
find_package(OSL 1.13.4 REQUIRED)
|
||||
endif()
|
||||
add_bundled_libraries(osl/lib)
|
||||
# OSL dependecy
|
||||
add_bundled_libraries(openjph/lib)
|
||||
|
||||
if(WITH_CYCLES AND WITH_CYCLES_EMBREE)
|
||||
find_package(Embree 4.0.0 REQUIRED)
|
||||
|
|
|
|||
|
|
@ -100,6 +100,7 @@ if(DEFINED LIBDIR)
|
|||
set(OPENEXR_ROOT_DIR ${LIBDIR}/openexr)
|
||||
set(CLANG_ROOT_DIR ${LIBDIR}/llvm)
|
||||
set(MaterialX_DIR ${LIBDIR}/materialx/lib/cmake/MaterialX)
|
||||
set(fmt_ROOT ${LIBDIR}/fmt)
|
||||
endif()
|
||||
|
||||
# Wrapper to prefer static libraries
|
||||
|
|
@ -126,6 +127,12 @@ find_package_wrapper(PNG REQUIRED)
|
|||
find_package_wrapper(ZLIB REQUIRED)
|
||||
find_package_wrapper(Zstd REQUIRED)
|
||||
find_package_wrapper(Epoxy REQUIRED)
|
||||
find_package_wrapper(fmt REQUIRED)
|
||||
if(DEFINED fmt_DIR)
|
||||
# Hide the fmt_DIR from the standard user settings to be consistent with our
|
||||
# other "here is the library" settings.
|
||||
mark_as_advanced(fmt_DIR)
|
||||
endif()
|
||||
|
||||
# XXX Linking errors with debian static tiff :/
|
||||
# find_package_wrapper(TIFF REQUIRED)
|
||||
|
|
@ -257,6 +264,7 @@ if(WITH_IMAGE_OPENEXR)
|
|||
endif()
|
||||
add_bundled_libraries(openexr/lib)
|
||||
add_bundled_libraries(imath/lib)
|
||||
add_bundled_libraries(openjph/lib)
|
||||
|
||||
if(WITH_IMAGE_OPENJPEG)
|
||||
find_package_wrapper(OpenJPEG)
|
||||
|
|
@ -1054,6 +1062,13 @@ set(PLATFORM_LINKFLAGS
|
|||
"${PLATFORM_LINKFLAGS} -Wl,--version-script='${PLATFORM_SYMBOLS_MAP}'"
|
||||
)
|
||||
|
||||
# We do not ensure transitive dependencies of dynamic libraries are available at
|
||||
# link time, this allows that. The better solution would be to switch to cmake
|
||||
# configs but more work is needed for that.
|
||||
set(PLATFORM_LINKFLAGS
|
||||
"${PLATFORM_LINKFLAGS} -Wl,--allow-shlib-undefined -Wl,--unresolved-symbols=ignore-in-shared-libs"
|
||||
)
|
||||
|
||||
# Don't use position independent executable for portable install since file
|
||||
# browsers can't properly detect blender as an executable then. Still enabled
|
||||
# for non-portable installs as typically used by Linux distributions.
|
||||
|
|
|
|||
|
|
@ -29,23 +29,15 @@ if(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
|||
endif()
|
||||
else()
|
||||
if(WITH_BLENDER)
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.28.29921) # MSVC 2019 16.9.16
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.44.35216) # MSVC 2022 17.14.14
|
||||
message(FATAL_ERROR
|
||||
"Compiler is unsupported, MSVC 2019 16.9.16 or newer is required for building blender."
|
||||
)
|
||||
endif()
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.36.32532 AND # MSVC 2022 17.6.0 has a bad codegen
|
||||
CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.37.32705) # But it is fixed in 2022 17.7 preview 1
|
||||
message(FATAL_ERROR
|
||||
"Compiler is unsupported, "
|
||||
"MSVC 2022 17.6.x has codegen issues and cannot be used to build blender. "
|
||||
"Please upgrade to 17.7 or newer."
|
||||
"Compiler is unsupported, MSVC 2022 17.14.14 or newer is required for building blender."
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(WINDOWS_ARM64_MIN_VSCMD_VER 17.12.3)
|
||||
set(WINDOWS_ARM64_MIN_VSCMD_VER 17.14.23)
|
||||
# We have a minimum version of VSCMD for ARM64 (ie, the version the libs were compiled against)
|
||||
# This checks for the version on initial run, and caches it,
|
||||
# so users do not have to run the VS CMD window every time
|
||||
|
|
@ -57,7 +49,7 @@ if(CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64")
|
|||
if(VSCMD_VER VERSION_LESS WINDOWS_ARM64_MIN_VSCMD_VER)
|
||||
message(FATAL_ERROR
|
||||
"Windows ARM64 requires VS2022 version ${WINDOWS_ARM64_MIN_VSCMD_VER} or greater - "
|
||||
"please update your VS2022 install!"
|
||||
"detected ${VSCMD_VER}, please update your VS2022 install!"
|
||||
)
|
||||
endif()
|
||||
else()
|
||||
|
|
@ -394,6 +386,9 @@ set(ZLIB_INCLUDE_DIR ${LIBDIR}/zlib/include)
|
|||
set(ZLIB_LIBRARY ${LIBDIR}/zlib/lib/libz_st.lib)
|
||||
set(ZLIB_DIR ${LIBDIR}/zlib)
|
||||
|
||||
set(fmt_DIR ${LIBDIR}/fmt/lib/cmake/config)
|
||||
find_package(fmt REQUIRED CONFIG)
|
||||
|
||||
windows_find_package(ZLIB) # We want to find before finding things that depend on it like PNG.
|
||||
windows_find_package(PNG)
|
||||
if(NOT PNG_FOUND)
|
||||
|
|
@ -581,17 +576,17 @@ if(WITH_JACK)
|
|||
)
|
||||
endif()
|
||||
|
||||
set(_PYTHON_VERSION "3.11")
|
||||
set(_PYTHON_VERSION "3.13")
|
||||
string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${_PYTHON_VERSION})
|
||||
|
||||
# Enable for a short time when bumping to the next Python version.
|
||||
if(FALSE)
|
||||
if(TRUE)
|
||||
if(NOT EXISTS ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS})
|
||||
set(_PYTHON_VERSION "3.12")
|
||||
set(_PYTHON_VERSION "3.11")
|
||||
string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${_PYTHON_VERSION})
|
||||
if(NOT EXISTS ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS})
|
||||
message(FATAL_ERROR
|
||||
"Missing python libraries! Neither 3.12 nor 3.11 are found in ${LIBDIR}/python"
|
||||
"Missing python libraries! Neither 3.13 nor 3.11 are found in ${LIBDIR}/python"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
|
@ -610,7 +605,7 @@ if(WITH_PYTHON)
|
|||
set(PYTHON_LIBRARY_DEBUG ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/libs/python${_PYTHON_VERSION_NO_DOTS}_d.lib)
|
||||
|
||||
set(PYTHON_INCLUDE_DIR ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/include)
|
||||
set(PYTHON_NUMPY_INCLUDE_DIRS ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/lib/site-packages/numpy/core/include)
|
||||
set(PYTHON_NUMPY_INCLUDE_DIRS ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/lib/site-packages/numpy/_core/include)
|
||||
set(NUMPY_FOUND ON)
|
||||
# uncached vars
|
||||
set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
|
||||
|
|
@ -1346,7 +1341,7 @@ endif()
|
|||
get_filename_component(_msvc_path ${CMAKE_C_COMPILER} DIRECTORY)
|
||||
# Environment variables to run precompiled executables that needed libraries.
|
||||
list(JOIN PLATFORM_BUNDLED_LIBRARY_DIRS ";" _library_paths)
|
||||
set(PLATFORM_ENV_BUILD_DIRS "${_msvc_path}\;${LIBDIR}/epoxy/bin\;${LIBDIR}/tbb/bin\;${LIBDIR}/OpenImageIO/bin\;${LIBDIR}/boost/lib\;${LIBDIR}/openexr/bin\;${LIBDIR}/imath/bin\;${LIBDIR}/shaderc/bin\;${LIBDIR}/opencolorio/bin\;${PATH}")
|
||||
set(PLATFORM_ENV_BUILD_DIRS "${_msvc_path}\;${LIBDIR}/epoxy/bin\;${LIBDIR}/tbb/bin\;${LIBDIR}/OpenImageIO/bin\;${LIBDIR}/boost/lib\;${LIBDIR}/openexr/bin\;${LIBDIR}/imath/bin\;${LIBDIR}/shaderc/bin\;${LIBDIR}/opencolorio/bin\;${LIBDIR}/aom/bin\;${LIBDIR}/openjph/bin\;${PATH}")
|
||||
set(PLATFORM_ENV_BUILD "PATH=${PLATFORM_ENV_BUILD_DIRS}")
|
||||
# Install needs the additional folders from PLATFORM_ENV_BUILD_DIRS as well, as tools like:
|
||||
# `idiff` and `abcls` use the release mode dlls.
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
buildbot:
|
||||
gcc:
|
||||
version: '11.0.0'
|
||||
version: '14.2.1'
|
||||
xcode:
|
||||
version: '26.1.1'
|
||||
cuda10:
|
||||
|
|
|
|||
|
|
@ -2,11 +2,9 @@ REM find all dependencies and set the corresponding environment variables.
|
|||
for %%X in (cmake.exe) do (set CMAKE=%%~$PATH:X)
|
||||
for %%X in (ctest.exe) do (set CTEST=%%~$PATH:X)
|
||||
for %%X in (git.exe) do (set GIT=%%~$PATH:X)
|
||||
REM For python, default on 310 but if that does not exist also check
|
||||
REM the 311, 312 and finally 39 folders to see if those are there, it checks
|
||||
REM this far ahead to ensure good lib folder compatibility in the future
|
||||
REM it falls back to 3.9 just in case it is a very old lib folder.
|
||||
set PYTHON=%BLENDER_DIR%\lib\windows_x64\python\310\bin\python.exe
|
||||
REM For python, default on 313 but if that does not exist also check
|
||||
REM 311, to see if that is available.
|
||||
set PYTHON=%BLENDER_DIR%\lib\windows_x64\python\313\bin\python.exe
|
||||
if EXIST %PYTHON% (
|
||||
goto detect_python_done
|
||||
)
|
||||
|
|
@ -14,17 +12,8 @@ set PYTHON=%BLENDER_DIR%\lib\windows_x64\python\311\bin\python.exe
|
|||
if EXIST %PYTHON% (
|
||||
goto detect_python_done
|
||||
)
|
||||
set PYTHON=%BLENDER_DIR%\lib\windows_x64\python\312\bin\python.exe
|
||||
if EXIST %PYTHON% (
|
||||
goto detect_python_done
|
||||
)
|
||||
set PYTHON=%BLENDER_DIR%\lib\windows_x64\python\39\bin\python.exe
|
||||
if EXIST %PYTHON% (
|
||||
goto detect_python_done
|
||||
)
|
||||
|
||||
rem Additionally check for the ARM64 version
|
||||
set PYTHON=%BLENDER_DIR%\lib\windows_arm64\python\310\bin\python.exe
|
||||
set PYTHON=%BLENDER_DIR%\lib\windows_arm64\python\313\bin\python.exe
|
||||
if EXIST %PYTHON% (
|
||||
goto detect_python_done
|
||||
)
|
||||
|
|
@ -32,14 +21,6 @@ set PYTHON=%BLENDER_DIR%\lib\windows_arm64\python\311\bin\python.exe
|
|||
if EXIST %PYTHON% (
|
||||
goto detect_python_done
|
||||
)
|
||||
set PYTHON=%BLENDER_DIR%\lib\windows_arm64\python\312\bin\python.exe
|
||||
if EXIST %PYTHON% (
|
||||
goto detect_python_done
|
||||
)
|
||||
set PYTHON=%BLENDER_DIR%\lib\windows_arm64\python\39\bin\python.exe
|
||||
if EXIST %PYTHON% (
|
||||
goto detect_python_done
|
||||
)
|
||||
|
||||
if NOT EXIST %PYTHON% (
|
||||
if EXIST %BLENDER_DIR%\lib\windows_x64\.git (
|
||||
|
|
|
|||
1
extern/CMakeLists.txt
vendored
1
extern/CMakeLists.txt
vendored
|
|
@ -5,7 +5,6 @@
|
|||
# Libs that adhere to strict flags
|
||||
add_subdirectory(curve_fit_nd)
|
||||
add_subdirectory(fast_float)
|
||||
add_subdirectory(fmtlib)
|
||||
add_subdirectory(json)
|
||||
if(WITH_IO_FBX)
|
||||
add_subdirectory(ufbx)
|
||||
|
|
|
|||
23
extern/fmtlib/CMakeLists.txt
vendored
23
extern/fmtlib/CMakeLists.txt
vendored
|
|
@ -1,23 +0,0 @@
|
|||
# SPDX-FileCopyrightText: 2023 Blender Foundation
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
set(INC
|
||||
)
|
||||
|
||||
set(INC_SYS
|
||||
PUBLIC include
|
||||
)
|
||||
|
||||
set(SRC
|
||||
include/fmt/core.h
|
||||
include/fmt/format-inl.h
|
||||
include/fmt/format.h
|
||||
src/format.cc
|
||||
)
|
||||
|
||||
set(LIB
|
||||
)
|
||||
|
||||
blender_add_lib(extern_fmtlib "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
|
||||
add_library(bf::extern::fmtlib ALIAS extern_fmtlib)
|
||||
27
extern/fmtlib/LICENSE.rst
vendored
27
extern/fmtlib/LICENSE.rst
vendored
|
|
@ -1,27 +0,0 @@
|
|||
Copyright (c) 2012 - present, Victor Zverovich and {fmt} contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
--- Optional exception to the license ---
|
||||
|
||||
As an exception, if, as a result of your compiling your source code, portions
|
||||
of this Software are embedded into a machine-executable object form of such
|
||||
source code, you may redistribute such embedded portions in such object form
|
||||
without including the above copyright and permission notices.
|
||||
13
extern/fmtlib/README.blender
vendored
13
extern/fmtlib/README.blender
vendored
|
|
@ -1,13 +0,0 @@
|
|||
Project: {fmt}
|
||||
URL: https://github.com/fmtlib/fmt
|
||||
License: SPDX:MIT
|
||||
Upstream version: 10.1.1 (f5e5435, 2023 Aug 28)
|
||||
Copyright: "Copyright (c) 2012 - present, Victor Zverovich and {fmt} contributors"
|
||||
Local modifications:
|
||||
|
||||
- Took only files needed for Blender:
|
||||
- LICENSE, README
|
||||
- include/fmt: core.h, format-inl.h, format.h
|
||||
- src/format.cc
|
||||
- CMakeLists.txt is not from fmtlib, but
|
||||
made for Blender codebase
|
||||
545
extern/fmtlib/README.rst
vendored
545
extern/fmtlib/README.rst
vendored
|
|
@ -1,545 +0,0 @@
|
|||
.. image:: https://user-images.githubusercontent.com/
|
||||
576385/156254208-f5b743a9-88cf-439d-b0c0-923d53e8d551.png
|
||||
:width: 25%
|
||||
:alt: {fmt}
|
||||
|
||||
.. image:: https://github.com/fmtlib/fmt/workflows/linux/badge.svg
|
||||
:target: https://github.com/fmtlib/fmt/actions?query=workflow%3Alinux
|
||||
|
||||
.. image:: https://github.com/fmtlib/fmt/workflows/macos/badge.svg
|
||||
:target: https://github.com/fmtlib/fmt/actions?query=workflow%3Amacos
|
||||
|
||||
.. image:: https://github.com/fmtlib/fmt/workflows/windows/badge.svg
|
||||
:target: https://github.com/fmtlib/fmt/actions?query=workflow%3Awindows
|
||||
|
||||
.. image:: https://oss-fuzz-build-logs.storage.googleapis.com/badges/fmt.svg
|
||||
:alt: fmt is continuously fuzzed at oss-fuzz
|
||||
:target: https://bugs.chromium.org/p/oss-fuzz/issues/list?\
|
||||
colspec=ID%20Type%20Component%20Status%20Proj%20Reported%20Owner%20\
|
||||
Summary&q=proj%3Dfmt&can=1
|
||||
|
||||
.. image:: https://img.shields.io/badge/stackoverflow-fmt-blue.svg
|
||||
:alt: Ask questions at StackOverflow with the tag fmt
|
||||
:target: https://stackoverflow.com/questions/tagged/fmt
|
||||
|
||||
.. image:: https://api.securityscorecards.dev/projects/github.com/fmtlib/fmt/badge
|
||||
:target: https://securityscorecards.dev/viewer/?uri=github.com/fmtlib/fmt
|
||||
|
||||
**{fmt}** is an open-source formatting library providing a fast and safe
|
||||
alternative to C stdio and C++ iostreams.
|
||||
|
||||
If you like this project, please consider donating to one of the funds that
|
||||
help victims of the war in Ukraine: https://www.stopputin.net/.
|
||||
|
||||
`Documentation <https://fmt.dev>`__
|
||||
|
||||
`Cheat Sheets <https://hackingcpp.com/cpp/libs/fmt.html>`__
|
||||
|
||||
Q&A: ask questions on `StackOverflow with the tag fmt
|
||||
<https://stackoverflow.com/questions/tagged/fmt>`_.
|
||||
|
||||
Try {fmt} in `Compiler Explorer <https://godbolt.org/z/Eq5763>`_.
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
* Simple `format API <https://fmt.dev/latest/api.html>`_ with positional arguments
|
||||
for localization
|
||||
* Implementation of `C++20 std::format
|
||||
<https://en.cppreference.com/w/cpp/utility/format>`__
|
||||
* `Format string syntax <https://fmt.dev/latest/syntax.html>`_ similar to Python's
|
||||
`format <https://docs.python.org/3/library/stdtypes.html#str.format>`_
|
||||
* Fast IEEE 754 floating-point formatter with correct rounding, shortness and
|
||||
round-trip guarantees using the `Dragonbox <https://github.com/jk-jeon/dragonbox>`_
|
||||
algorithm
|
||||
* Portable Unicode support
|
||||
* Safe `printf implementation
|
||||
<https://fmt.dev/latest/api.html#printf-formatting>`_ including the POSIX
|
||||
extension for positional arguments
|
||||
* Extensibility: `support for user-defined types
|
||||
<https://fmt.dev/latest/api.html#formatting-user-defined-types>`_
|
||||
* High performance: faster than common standard library implementations of
|
||||
``(s)printf``, iostreams, ``to_string`` and ``to_chars``, see `Speed tests`_
|
||||
and `Converting a hundred million integers to strings per second
|
||||
<http://www.zverovich.net/2020/06/13/fast-int-to-string-revisited.html>`_
|
||||
* Small code size both in terms of source code with the minimum configuration
|
||||
consisting of just three files, ``core.h``, ``format.h`` and ``format-inl.h``,
|
||||
and compiled code; see `Compile time and code bloat`_
|
||||
* Reliability: the library has an extensive set of `tests
|
||||
<https://github.com/fmtlib/fmt/tree/master/test>`_ and is `continuously fuzzed
|
||||
<https://bugs.chromium.org/p/oss-fuzz/issues/list?colspec=ID%20Type%20
|
||||
Component%20Status%20Proj%20Reported%20Owner%20Summary&q=proj%3Dfmt&can=1>`_
|
||||
* Safety: the library is fully type-safe, errors in format strings can be
|
||||
reported at compile time, automatic memory management prevents buffer overflow
|
||||
errors
|
||||
* Ease of use: small self-contained code base, no external dependencies,
|
||||
permissive MIT `license
|
||||
<https://github.com/fmtlib/fmt/blob/master/LICENSE.rst>`_
|
||||
* `Portability <https://fmt.dev/latest/index.html#portability>`_ with
|
||||
consistent output across platforms and support for older compilers
|
||||
* Clean warning-free codebase even on high warning levels such as
|
||||
``-Wall -Wextra -pedantic``
|
||||
* Locale independence by default
|
||||
* Optional header-only configuration enabled with the ``FMT_HEADER_ONLY`` macro
|
||||
|
||||
See the `documentation <https://fmt.dev>`_ for more details.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
**Print to stdout** (`run <https://godbolt.org/z/Tevcjh>`_)
|
||||
|
||||
.. code:: c++
|
||||
|
||||
#include <fmt/core.h>
|
||||
|
||||
int main() {
|
||||
fmt::print("Hello, world!\n");
|
||||
}
|
||||
|
||||
**Format a string** (`run <https://godbolt.org/z/oK8h33>`_)
|
||||
|
||||
.. code:: c++
|
||||
|
||||
std::string s = fmt::format("The answer is {}.", 42);
|
||||
// s == "The answer is 42."
|
||||
|
||||
**Format a string using positional arguments** (`run <https://godbolt.org/z/Yn7Txe>`_)
|
||||
|
||||
.. code:: c++
|
||||
|
||||
std::string s = fmt::format("I'd rather be {1} than {0}.", "right", "happy");
|
||||
// s == "I'd rather be happy than right."
|
||||
|
||||
**Print chrono durations** (`run <https://godbolt.org/z/K8s4Mc>`_)
|
||||
|
||||
.. code:: c++
|
||||
|
||||
#include <fmt/chrono.h>
|
||||
|
||||
int main() {
|
||||
using namespace std::literals::chrono_literals;
|
||||
fmt::print("Default format: {} {}\n", 42s, 100ms);
|
||||
fmt::print("strftime-like format: {:%H:%M:%S}\n", 3h + 15min + 30s);
|
||||
}
|
||||
|
||||
Output::
|
||||
|
||||
Default format: 42s 100ms
|
||||
strftime-like format: 03:15:30
|
||||
|
||||
**Print a container** (`run <https://godbolt.org/z/MxM1YqjE7>`_)
|
||||
|
||||
.. code:: c++
|
||||
|
||||
#include <vector>
|
||||
#include <fmt/ranges.h>
|
||||
|
||||
int main() {
|
||||
std::vector<int> v = {1, 2, 3};
|
||||
fmt::print("{}\n", v);
|
||||
}
|
||||
|
||||
Output::
|
||||
|
||||
[1, 2, 3]
|
||||
|
||||
**Check a format string at compile time**
|
||||
|
||||
.. code:: c++
|
||||
|
||||
std::string s = fmt::format("{:d}", "I am not a number");
|
||||
|
||||
This gives a compile-time error in C++20 because ``d`` is an invalid format
|
||||
specifier for a string.
|
||||
|
||||
**Write a file from a single thread**
|
||||
|
||||
.. code:: c++
|
||||
|
||||
#include <fmt/os.h>
|
||||
|
||||
int main() {
|
||||
auto out = fmt::output_file("guide.txt");
|
||||
out.print("Don't {}", "Panic");
|
||||
}
|
||||
|
||||
This can be `5 to 9 times faster than fprintf
|
||||
<http://www.zverovich.net/2020/08/04/optimal-file-buffer-size.html>`_.
|
||||
|
||||
**Print with colors and text styles**
|
||||
|
||||
.. code:: c++
|
||||
|
||||
#include <fmt/color.h>
|
||||
|
||||
int main() {
|
||||
fmt::print(fg(fmt::color::crimson) | fmt::emphasis::bold,
|
||||
"Hello, {}!\n", "world");
|
||||
fmt::print(fg(fmt::color::floral_white) | bg(fmt::color::slate_gray) |
|
||||
fmt::emphasis::underline, "Hello, {}!\n", "мир");
|
||||
fmt::print(fg(fmt::color::steel_blue) | fmt::emphasis::italic,
|
||||
"Hello, {}!\n", "世界");
|
||||
}
|
||||
|
||||
Output on a modern terminal:
|
||||
|
||||
.. image:: https://user-images.githubusercontent.com/
|
||||
576385/88485597-d312f600-cf2b-11ea-9cbe-61f535a86e28.png
|
||||
|
||||
Benchmarks
|
||||
----------
|
||||
|
||||
Speed tests
|
||||
~~~~~~~~~~~
|
||||
|
||||
================= ============= ===========
|
||||
Library Method Run Time, s
|
||||
================= ============= ===========
|
||||
libc printf 0.91
|
||||
libc++ std::ostream 2.49
|
||||
{fmt} 9.1 fmt::print 0.74
|
||||
Boost Format 1.80 boost::format 6.26
|
||||
Folly Format folly::format 1.87
|
||||
================= ============= ===========
|
||||
|
||||
{fmt} is the fastest of the benchmarked methods, ~20% faster than ``printf``.
|
||||
|
||||
The above results were generated by building ``tinyformat_test.cpp`` on macOS
|
||||
12.6.1 with ``clang++ -O3 -DNDEBUG -DSPEED_TEST -DHAVE_FORMAT``, and taking the
|
||||
best of three runs. In the test, the format string ``"%0.10f:%04d:%+g:%s:%p:%c:%%\n"``
|
||||
or equivalent is filled 2,000,000 times with output sent to ``/dev/null``; for
|
||||
further details refer to the `source
|
||||
<https://github.com/fmtlib/format-benchmark/blob/master/src/tinyformat-test.cc>`_.
|
||||
|
||||
{fmt} is up to 20-30x faster than ``std::ostringstream`` and ``sprintf`` on
|
||||
IEEE754 ``float`` and ``double`` formatting (`dtoa-benchmark <https://github.com/fmtlib/dtoa-benchmark>`_)
|
||||
and faster than `double-conversion <https://github.com/google/double-conversion>`_ and
|
||||
`ryu <https://github.com/ulfjack/ryu>`_:
|
||||
|
||||
.. image:: https://user-images.githubusercontent.com/576385/
|
||||
95684665-11719600-0ba8-11eb-8e5b-972ff4e49428.png
|
||||
:target: https://fmt.dev/unknown_mac64_clang12.0.html
|
||||
|
||||
Compile time and code bloat
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The script `bloat-test.py
|
||||
<https://github.com/fmtlib/format-benchmark/blob/master/bloat-test.py>`_
|
||||
from `format-benchmark <https://github.com/fmtlib/format-benchmark>`_
|
||||
tests compile time and code bloat for nontrivial projects.
|
||||
It generates 100 translation units and uses ``printf()`` or its alternative
|
||||
five times in each to simulate a medium-sized project. The resulting
|
||||
executable size and compile time (Apple LLVM version 8.1.0 (clang-802.0.42),
|
||||
macOS Sierra, best of three) is shown in the following tables.
|
||||
|
||||
**Optimized build (-O3)**
|
||||
|
||||
============= =============== ==================== ==================
|
||||
Method Compile Time, s Executable size, KiB Stripped size, KiB
|
||||
============= =============== ==================== ==================
|
||||
printf 2.6 29 26
|
||||
printf+string 16.4 29 26
|
||||
iostreams 31.1 59 55
|
||||
{fmt} 19.0 37 34
|
||||
Boost Format 91.9 226 203
|
||||
Folly Format 115.7 101 88
|
||||
============= =============== ==================== ==================
|
||||
|
||||
As you can see, {fmt} has 60% less overhead in terms of resulting binary code
|
||||
size compared to iostreams and comes pretty close to ``printf``. Boost Format
|
||||
and Folly Format have the largest overheads.
|
||||
|
||||
``printf+string`` is the same as ``printf`` but with an extra ``<string>``
|
||||
include to measure the overhead of the latter.
|
||||
|
||||
**Non-optimized build**
|
||||
|
||||
============= =============== ==================== ==================
|
||||
Method Compile Time, s Executable size, KiB Stripped size, KiB
|
||||
============= =============== ==================== ==================
|
||||
printf 2.2 33 30
|
||||
printf+string 16.0 33 30
|
||||
iostreams 28.3 56 52
|
||||
{fmt} 18.2 59 50
|
||||
Boost Format 54.1 365 303
|
||||
Folly Format 79.9 445 430
|
||||
============= =============== ==================== ==================
|
||||
|
||||
``libc``, ``lib(std)c++``, and ``libfmt`` are all linked as shared libraries to
|
||||
compare formatting function overhead only. Boost Format is a
|
||||
header-only library so it doesn't provide any linkage options.
|
||||
|
||||
Running the tests
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
Please refer to `Building the library`__ for instructions on how to build
|
||||
the library and run the unit tests.
|
||||
|
||||
__ https://fmt.dev/latest/usage.html#building-the-library
|
||||
|
||||
Benchmarks reside in a separate repository,
|
||||
`format-benchmarks <https://github.com/fmtlib/format-benchmark>`_,
|
||||
so to run the benchmarks you first need to clone this repository and
|
||||
generate Makefiles with CMake::
|
||||
|
||||
$ git clone --recursive https://github.com/fmtlib/format-benchmark.git
|
||||
$ cd format-benchmark
|
||||
$ cmake .
|
||||
|
||||
Then you can run the speed test::
|
||||
|
||||
$ make speed-test
|
||||
|
||||
or the bloat test::
|
||||
|
||||
$ make bloat-test
|
||||
|
||||
Migrating code
|
||||
--------------
|
||||
|
||||
`clang-tidy <https://clang.llvm.org/extra/clang-tidy/>`_ v17 (not yet
|
||||
released) provides the `modernize-use-std-print
|
||||
<https://clang.llvm.org/extra/clang-tidy/checks/modernize/use-std-print.html>`_
|
||||
check that is capable of converting occurrences of ``printf`` and
|
||||
``fprintf`` to ``fmt::print`` if configured to do so. (By default it
|
||||
converts to ``std::print``.)
|
||||
|
||||
Projects using this library
|
||||
---------------------------
|
||||
|
||||
* `0 A.D. <https://play0ad.com/>`_: a free, open-source, cross-platform
|
||||
real-time strategy game
|
||||
|
||||
* `AMPL/MP <https://github.com/ampl/mp>`_:
|
||||
an open-source library for mathematical programming
|
||||
|
||||
* `Aseprite <https://github.com/aseprite/aseprite>`_:
|
||||
animated sprite editor & pixel art tool
|
||||
|
||||
* `AvioBook <https://www.aviobook.aero/en>`_: a comprehensive aircraft
|
||||
operations suite
|
||||
|
||||
* `Blizzard Battle.net <https://battle.net/>`_: an online gaming platform
|
||||
|
||||
* `Celestia <https://celestia.space/>`_: real-time 3D visualization of space
|
||||
|
||||
* `Ceph <https://ceph.com/>`_: a scalable distributed storage system
|
||||
|
||||
* `ccache <https://ccache.dev/>`_: a compiler cache
|
||||
|
||||
* `ClickHouse <https://github.com/ClickHouse/ClickHouse>`_: an analytical database
|
||||
management system
|
||||
|
||||
* `Contour <https://github.com/contour-terminal/contour/>`_: a modern terminal emulator
|
||||
|
||||
* `CUAUV <https://cuauv.org/>`_: Cornell University's autonomous underwater
|
||||
vehicle
|
||||
|
||||
* `Drake <https://drake.mit.edu/>`_: a planning, control, and analysis toolbox
|
||||
for nonlinear dynamical systems (MIT)
|
||||
|
||||
* `Envoy <https://lyft.github.io/envoy/>`_: C++ L7 proxy and communication bus
|
||||
(Lyft)
|
||||
|
||||
* `FiveM <https://fivem.net/>`_: a modification framework for GTA V
|
||||
|
||||
* `fmtlog <https://github.com/MengRao/fmtlog>`_: a performant fmtlib-style
|
||||
logging library with latency in nanoseconds
|
||||
|
||||
* `Folly <https://github.com/facebook/folly>`_: Facebook open-source library
|
||||
|
||||
* `GemRB <https://gemrb.org/>`_: a portable open-source implementation of
|
||||
Bioware’s Infinity Engine
|
||||
|
||||
* `Grand Mountain Adventure
|
||||
<https://store.steampowered.com/app/1247360/Grand_Mountain_Adventure/>`_:
|
||||
a beautiful open-world ski & snowboarding game
|
||||
|
||||
* `HarpyWar/pvpgn <https://github.com/pvpgn/pvpgn-server>`_:
|
||||
Player vs Player Gaming Network with tweaks
|
||||
|
||||
* `KBEngine <https://github.com/kbengine/kbengine>`_: an open-source MMOG server
|
||||
engine
|
||||
|
||||
* `Keypirinha <https://keypirinha.com/>`_: a semantic launcher for Windows
|
||||
|
||||
* `Kodi <https://kodi.tv/>`_ (formerly xbmc): home theater software
|
||||
|
||||
* `Knuth <https://kth.cash/>`_: high-performance Bitcoin full-node
|
||||
|
||||
* `libunicode <https://github.com/contour-terminal/libunicode/>`_: a modern C++17 Unicode library
|
||||
|
||||
* `MariaDB <https://mariadb.org/>`_: relational database management system
|
||||
|
||||
* `Microsoft Verona <https://github.com/microsoft/verona>`_:
|
||||
research programming language for concurrent ownership
|
||||
|
||||
* `MongoDB <https://mongodb.com/>`_: distributed document database
|
||||
|
||||
* `MongoDB Smasher <https://github.com/duckie/mongo_smasher>`_: a small tool to
|
||||
generate randomized datasets
|
||||
|
||||
* `OpenSpace <https://openspaceproject.com/>`_: an open-source
|
||||
astrovisualization framework
|
||||
|
||||
* `PenUltima Online (POL) <https://www.polserver.com/>`_:
|
||||
an MMO server, compatible with most Ultima Online clients
|
||||
|
||||
* `PyTorch <https://github.com/pytorch/pytorch>`_: an open-source machine
|
||||
learning library
|
||||
|
||||
* `quasardb <https://www.quasardb.net/>`_: a distributed, high-performance,
|
||||
associative database
|
||||
|
||||
* `Quill <https://github.com/odygrd/quill>`_: asynchronous low-latency logging library
|
||||
|
||||
* `QKW <https://github.com/ravijanjam/qkw>`_: generalizing aliasing to simplify
|
||||
navigation, and executing complex multi-line terminal command sequences
|
||||
|
||||
* `redis-cerberus <https://github.com/HunanTV/redis-cerberus>`_: a Redis cluster
|
||||
proxy
|
||||
|
||||
* `redpanda <https://vectorized.io/redpanda>`_: a 10x faster Kafka® replacement
|
||||
for mission-critical systems written in C++
|
||||
|
||||
* `rpclib <http://rpclib.net/>`_: a modern C++ msgpack-RPC server and client
|
||||
library
|
||||
|
||||
* `Salesforce Analytics Cloud
|
||||
<https://www.salesforce.com/analytics-cloud/overview/>`_:
|
||||
business intelligence software
|
||||
|
||||
* `Scylla <https://www.scylladb.com/>`_: a Cassandra-compatible NoSQL data store
|
||||
that can handle 1 million transactions per second on a single server
|
||||
|
||||
* `Seastar <http://www.seastar-project.org/>`_: an advanced, open-source C++
|
||||
framework for high-performance server applications on modern hardware
|
||||
|
||||
* `spdlog <https://github.com/gabime/spdlog>`_: super fast C++ logging library
|
||||
|
||||
* `Stellar <https://www.stellar.org/>`_: financial platform
|
||||
|
||||
* `Touch Surgery <https://www.touchsurgery.com/>`_: surgery simulator
|
||||
|
||||
* `TrinityCore <https://github.com/TrinityCore/TrinityCore>`_: open-source
|
||||
MMORPG framework
|
||||
|
||||
* `🐙 userver framework <https://userver.tech/>`_: open-source asynchronous
|
||||
framework with a rich set of abstractions and database drivers
|
||||
|
||||
* `Windows Terminal <https://github.com/microsoft/terminal>`_: the new Windows
|
||||
terminal
|
||||
|
||||
`More... <https://github.com/search?q=fmtlib&type=Code>`_
|
||||
|
||||
If you are aware of other projects using this library, please let me know
|
||||
by `email <mailto:victor.zverovich@gmail.com>`_ or by submitting an
|
||||
`issue <https://github.com/fmtlib/fmt/issues>`_.
|
||||
|
||||
Motivation
|
||||
----------
|
||||
|
||||
So why yet another formatting library?
|
||||
|
||||
There are plenty of methods for doing this task, from standard ones like
|
||||
the printf family of function and iostreams to Boost Format and FastFormat
|
||||
libraries. The reason for creating a new library is that every existing
|
||||
solution that I found either had serious issues or didn't provide
|
||||
all the features I needed.
|
||||
|
||||
printf
|
||||
~~~~~~
|
||||
|
||||
The good thing about ``printf`` is that it is pretty fast and readily available
|
||||
being a part of the C standard library. The main drawback is that it
|
||||
doesn't support user-defined types. ``printf`` also has safety issues although
|
||||
they are somewhat mitigated with `__attribute__ ((format (printf, ...))
|
||||
<https://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html>`_ in GCC.
|
||||
There is a POSIX extension that adds positional arguments required for
|
||||
`i18n <https://en.wikipedia.org/wiki/Internationalization_and_localization>`_
|
||||
to ``printf`` but it is not a part of C99 and may not be available on some
|
||||
platforms.
|
||||
|
||||
iostreams
|
||||
~~~~~~~~~
|
||||
|
||||
The main issue with iostreams is best illustrated with an example:
|
||||
|
||||
.. code:: c++
|
||||
|
||||
std::cout << std::setprecision(2) << std::fixed << 1.23456 << "\n";
|
||||
|
||||
which is a lot of typing compared to printf:
|
||||
|
||||
.. code:: c++
|
||||
|
||||
printf("%.2f\n", 1.23456);
|
||||
|
||||
Matthew Wilson, the author of FastFormat, called this "chevron hell". iostreams
|
||||
don't support positional arguments by design.
|
||||
|
||||
The good part is that iostreams support user-defined types and are safe although
|
||||
error handling is awkward.
|
||||
|
||||
Boost Format
|
||||
~~~~~~~~~~~~
|
||||
|
||||
This is a very powerful library that supports both ``printf``-like format
|
||||
strings and positional arguments. Its main drawback is performance. According to
|
||||
various benchmarks, it is much slower than other methods considered here. Boost
|
||||
Format also has excessive build times and severe code bloat issues (see
|
||||
`Benchmarks`_).
|
||||
|
||||
FastFormat
|
||||
~~~~~~~~~~
|
||||
|
||||
This is an interesting library that is fast, safe, and has positional arguments.
|
||||
However, it has significant limitations, citing its author:
|
||||
|
||||
Three features that have no hope of being accommodated within the
|
||||
current design are:
|
||||
|
||||
* Leading zeros (or any other non-space padding)
|
||||
* Octal/hexadecimal encoding
|
||||
* Runtime width/alignment specification
|
||||
|
||||
It is also quite big and has a heavy dependency, STLSoft, which might be too
|
||||
restrictive for using it in some projects.
|
||||
|
||||
Boost Spirit.Karma
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This is not a formatting library but I decided to include it here for
|
||||
completeness. As iostreams, it suffers from the problem of mixing verbatim text
|
||||
with arguments. The library is pretty fast, but slower on integer formatting
|
||||
than ``fmt::format_to`` with format string compilation on Karma's own benchmark,
|
||||
see `Converting a hundred million integers to strings per second
|
||||
<http://www.zverovich.net/2020/06/13/fast-int-to-string-revisited.html>`_.
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
{fmt} is distributed under the MIT `license
|
||||
<https://github.com/fmtlib/fmt/blob/master/LICENSE.rst>`_.
|
||||
|
||||
Documentation License
|
||||
---------------------
|
||||
|
||||
The `Format String Syntax <https://fmt.dev/latest/syntax.html>`_
|
||||
section in the documentation is based on the one from Python `string module
|
||||
documentation <https://docs.python.org/3/library/string.html#module-string>`_.
|
||||
For this reason, the documentation is distributed under the Python Software
|
||||
Foundation license available in `doc/python-license.txt
|
||||
<https://raw.github.com/fmtlib/fmt/master/doc/python-license.txt>`_.
|
||||
It only applies if you distribute the documentation of {fmt}.
|
||||
|
||||
Maintainers
|
||||
-----------
|
||||
|
||||
The {fmt} library is maintained by Victor Zverovich (`vitaut
|
||||
<https://github.com/vitaut>`_) with contributions from many other people.
|
||||
See `Contributors <https://github.com/fmtlib/fmt/graphs/contributors>`_ and
|
||||
`Releases <https://github.com/fmtlib/fmt/releases>`_ for some of the names.
|
||||
Let us know if your contribution is not listed or mentioned incorrectly and
|
||||
we'll make it right.
|
||||
2922
extern/fmtlib/include/fmt/core.h
vendored
2922
extern/fmtlib/include/fmt/core.h
vendored
File diff suppressed because it is too large
Load diff
1662
extern/fmtlib/include/fmt/format-inl.h
vendored
1662
extern/fmtlib/include/fmt/format-inl.h
vendored
File diff suppressed because it is too large
Load diff
4510
extern/fmtlib/include/fmt/format.h
vendored
4510
extern/fmtlib/include/fmt/format.h
vendored
File diff suppressed because it is too large
Load diff
43
extern/fmtlib/src/format.cc
vendored
43
extern/fmtlib/src/format.cc
vendored
|
|
@ -1,43 +0,0 @@
|
|||
// Formatting library for C++
|
||||
//
|
||||
// Copyright (c) 2012 - 2016, Victor Zverovich
|
||||
// All rights reserved.
|
||||
//
|
||||
// For the license information refer to format.h.
|
||||
|
||||
#include "fmt/format-inl.h"
|
||||
|
||||
FMT_BEGIN_NAMESPACE
|
||||
namespace detail {
|
||||
|
||||
template FMT_API auto dragonbox::to_decimal(float x) noexcept
|
||||
-> dragonbox::decimal_fp<float>;
|
||||
template FMT_API auto dragonbox::to_decimal(double x) noexcept
|
||||
-> dragonbox::decimal_fp<double>;
|
||||
|
||||
#ifndef FMT_STATIC_THOUSANDS_SEPARATOR
|
||||
template FMT_API locale_ref::locale_ref(const std::locale& loc);
|
||||
template FMT_API auto locale_ref::get<std::locale>() const -> std::locale;
|
||||
#endif
|
||||
|
||||
// Explicit instantiations for char.
|
||||
|
||||
template FMT_API auto thousands_sep_impl(locale_ref)
|
||||
-> thousands_sep_result<char>;
|
||||
template FMT_API auto decimal_point_impl(locale_ref) -> char;
|
||||
|
||||
template FMT_API void buffer<char>::append(const char*, const char*);
|
||||
|
||||
template FMT_API void vformat_to(buffer<char>&, string_view,
|
||||
typename vformat_args<>::type, locale_ref);
|
||||
|
||||
// Explicit instantiations for wchar_t.
|
||||
|
||||
template FMT_API auto thousands_sep_impl(locale_ref)
|
||||
-> thousands_sep_result<wchar_t>;
|
||||
template FMT_API auto decimal_point_impl(locale_ref) -> wchar_t;
|
||||
|
||||
template FMT_API void buffer<wchar_t>::append(const wchar_t*, const wchar_t*);
|
||||
|
||||
} // namespace detail
|
||||
FMT_END_NAMESPACE
|
||||
|
|
@ -81,8 +81,10 @@ static inline bool hipSupportsDeviceOIDN(const int hipDevId)
|
|||
{
|
||||
/* Matches HIPDevice::getArch in HIP. */
|
||||
const std::string arch = hipDeviceArch(hipDevId);
|
||||
return (arch == "gfx1030" || arch == "gfx1100" || arch == "gfx1101" || arch == "gfx1102" ||
|
||||
arch == "gfx1200" || arch == "gfx1201");
|
||||
return (arch == "gfx1030" || arch == "gfx1031" || arch == "gfx1032" || arch == "gfx1034" ||
|
||||
arch == "gfx1035" || arch == "gfx1036" || arch == "gfx1100" || arch == "gfx1101" ||
|
||||
arch == "gfx1102" || arch == "gfx1103" || arch == "gfx1150" || arch == "gfx1151" ||
|
||||
arch == "gfx1152" || arch == "gfx1200" || arch == "gfx1201");
|
||||
}
|
||||
|
||||
CCL_NAMESPACE_END
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit 3abcca1aa43fe29f21cdf442d0cf412357cf4d25
|
||||
Subproject commit 387181c90943597f33ea1788d1085a7e7d7157f9
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit e03cf90fa4c466947b285eaef174e2fc06efbf64
|
||||
Subproject commit 40d25564e2254a23e7febf35aa2051aafbffb282
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue