Fix #106235: Use consistent order for multi-input socket links #106320
16
AUTHORS
16
AUTHORS
@ -62,6 +62,7 @@ Andre Susano Pinto <andresusanopinto@gmail.com>
|
||||
Andrea Beconcini <beco>
|
||||
Andrea Weikert <elubie@gmx.net>
|
||||
Andreas Bergmeier <abergmeier>
|
||||
Andrej730 <azhilenkov@gmail.com>
|
||||
Andrew Buttery <axb2035@gmail.com>
|
||||
Andrew Hale <TrumanBlending@gmail.com>
|
||||
Andrew Oates <aoates>
|
||||
@ -169,8 +170,10 @@ Dave Pagurek <davepagurek>
|
||||
David Ballesteros <dballesg>
|
||||
David Friedli <hlorus>
|
||||
David Vogel <Dadido3>
|
||||
Daybreak <daybreak-2@noreply.localhost>
|
||||
Deep Majumder <dmcoder>
|
||||
Demeter Dzadik <Mets>
|
||||
Denis Kovacs <den.products@gmail.com>
|
||||
Dennis Ranish <Codec>
|
||||
Diego Borghetti <bdiego@gmail.com>
|
||||
Diego Gangl <dnicolas@gmail.com>
|
||||
@ -238,7 +241,7 @@ Hallam Roberts <MysteryPancake>
|
||||
Hamdi Ozbayburtlu <hamdio>
|
||||
Hamed Zaghaghi <hamed.zaghaghi@gmail.com>
|
||||
Hannes Loeschke <blender@hlae.de>
|
||||
Hans Goudey <h.goudey@me.com>
|
||||
Hans Goudey <hans@blender.org>
|
||||
Hans Lambermont <hans@lambermont.dyndns.org>
|
||||
Harley Acheson <harley.acheson@gmail.com>
|
||||
Harshit Mehta <harshitmehta2293@gmail.com>
|
||||
@ -329,7 +332,7 @@ Juha Mäki-Kanto <ih5235252@gmail.com>
|
||||
Juho Vepsalainen <bebraw@gmail.com>
|
||||
Julian Eisel <julian@blender.org>
|
||||
Julian Squires <julian@cipht.net>
|
||||
Julien Kaspar <JulienKaspar>
|
||||
Julien Kaspar <julien@blender.org>
|
||||
Jun Mizutani <jmztn@noreply.localhost>
|
||||
Jung Jaeyun <cube-c>
|
||||
Justin Dailey <dail8859@yahoo.com>
|
||||
@ -472,6 +475,7 @@ Nikolaus Leopold <nikolaus.leopold@gmail.com>
|
||||
Nils Thuerey <nils@thuerey.de>
|
||||
Nischay-Raj <nischay-raj@noreply.localhost>
|
||||
Norman Lin <nlin@nlin.net>
|
||||
NueSB <moocowperson@gmail.com>
|
||||
Octave C <toctave>
|
||||
Olivier Jolly <zeograd>
|
||||
Olivier Maury <omaury>
|
||||
@ -492,6 +496,8 @@ Paul Melis <paulmelis>
|
||||
PaulKristoffersson <57681017+PaulKristoffersson@users.noreply.github.com>
|
||||
Pawel Franitza <Rongix>
|
||||
Pedro Reis <veryprofessionaldodo>
|
||||
Peng Yan <1105012124@qq.com>
|
||||
Petar Dosev <pdosev@gmail.com>
|
||||
Peter Fog <tintwotin>
|
||||
Peter Kim <pk15950@gmail.com>
|
||||
Peter Larabell <xgl.asyliax@gmail.com>
|
||||
@ -629,7 +635,8 @@ Urko <urko3d>
|
||||
Vaishnav S <padthai>
|
||||
Valdemar Lindberg <Voldie>
|
||||
Valentin <Poulpator>
|
||||
Vasyl-Pidhirskyi <vpidhirskyi@gmail.com>
|
||||
Vasilis-Milios <vasilis-milios@noreply.localhost>
|
||||
Vasyl Pidhirskyi <vpidhirskyi@gmail.com>
|
||||
Victor Seiji Hariki <seijihariki>
|
||||
Victor-Louis De Gusseme <victorlouis>
|
||||
Viktoriia Safiullina <safiuvik>
|
||||
@ -671,6 +678,7 @@ b-init <b-init>
|
||||
bird_d <bird_d>
|
||||
brunoT <drehuwann@gmail.com>
|
||||
cgtinker <Denys.Hsu@gmail.com>
|
||||
coyo_t <constachugga@gmail.com>
|
||||
fiord <hyoga_quasar@yahoo.co.jp>
|
||||
himisa <himisa@noreply.localhost>
|
||||
jim man <jimman2003>
|
||||
@ -680,10 +688,12 @@ listout <listout@protonmail.com>
|
||||
lolloz98 <lorenzocarpaneto@yahoo.it>
|
||||
luzpaz <luzpaz>
|
||||
matc <matc>
|
||||
menda <alguien@aqui.es>
|
||||
n-kall <noa@tutamail.com>
|
||||
nBurn <nbwashburn@gmail.com>
|
||||
nutti <nutti.metro@gmail.com>
|
||||
ok_what <ip1149a@gmail.com>
|
||||
persun <perplexing.sun@gmail.com>
|
||||
swann <slumber>
|
||||
unclezeiv <davide.vercelli@gmail.com>
|
||||
yves <valfeur>
|
||||
|
104
CMakeLists.txt
104
CMakeLists.txt
@ -335,13 +335,6 @@ if(UNIX AND NOT (APPLE OR HAIKU))
|
||||
option(WITH_GHOST_WAYLAND_LIBDECOR "Optionally build with LibDecor window decorations" ON)
|
||||
mark_as_advanced(WITH_GHOST_WAYLAND_LIBDECOR)
|
||||
|
||||
option(WITH_GHOST_WAYLAND_DBUS "\
|
||||
Optionally build with DBUS support (used for Cursor themes). \
|
||||
May hang on startup systems where DBUS is not used."
|
||||
OFF
|
||||
)
|
||||
mark_as_advanced(WITH_GHOST_WAYLAND_DBUS)
|
||||
|
||||
option(WITH_GHOST_WAYLAND_DYNLOAD "Enable runtime dynamic WAYLAND libraries loading" ON)
|
||||
mark_as_advanced(WITH_GHOST_WAYLAND_DYNLOAD)
|
||||
|
||||
@ -684,8 +677,10 @@ This option is only for debugging purposes."
|
||||
)
|
||||
|
||||
# https://www.intel.com/content/www/us/en/develop/documentation/oneapi-dpcpp-cpp-compiler-dev-guide-and-reference/top/compilation/ahead-of-time-compilation.html
|
||||
# acm-g10 is the target for the first Intel Arc Alchemist GPUs.
|
||||
set(CYCLES_ONEAPI_SPIR64_GEN_DEVICES "acm-g10" CACHE STRING "\
|
||||
# The target architectures levels can be retrieved from `ocloc` output when running
|
||||
# `ocloc compile -device {device_id} test.c` for given GPUs PCI device IDs.
|
||||
# 12.55.8 is for Arc Alchemist GPUs. 12.70.0 for Meteor Lake iGPUs.
|
||||
set(CYCLES_ONEAPI_INTEL_BINARIES_ARCH 12.55.8 12.70.0 CACHE STRING "\
|
||||
oneAPI Intel GPU architectures to build binaries for"
|
||||
)
|
||||
set(CYCLES_ONEAPI_SYCL_TARGETS spir64 spir64_gen CACHE STRING "\
|
||||
@ -693,7 +688,7 @@ oneAPI targets to build AOT binaries for"
|
||||
)
|
||||
|
||||
mark_as_advanced(WITH_CYCLES_ONEAPI_HOST_TASK_EXECUTION)
|
||||
mark_as_advanced(CYCLES_ONEAPI_SPIR64_GEN_DEVICES)
|
||||
mark_as_advanced(CYCLES_ONEAPI_INTEL_BINARIES_ARCH)
|
||||
mark_as_advanced(CYCLES_ONEAPI_SYCL_TARGETS)
|
||||
endif()
|
||||
|
||||
@ -793,15 +788,20 @@ else()
|
||||
endif()
|
||||
|
||||
# Vulkan
|
||||
option(WITH_VULKAN_BACKEND "Enable Vulkan as graphics backend (only for development)" OFF)
|
||||
option(WITH_VULKAN_GUARDEDALLOC "\
|
||||
Use guardedalloc for host allocations done inside Vulkan (development option)"
|
||||
OFF
|
||||
)
|
||||
mark_as_advanced(
|
||||
WITH_VULKAN_BACKEND
|
||||
WITH_VULKAN_GUARDEDALLOC
|
||||
)
|
||||
if(NOT APPLE)
|
||||
option(WITH_VULKAN_BACKEND "Enable Vulkan as graphics backend (experimental)" ON)
|
||||
option(WITH_VULKAN_GUARDEDALLOC "\
|
||||
Use guardedalloc for host allocations done inside Vulkan (development option)"
|
||||
OFF
|
||||
)
|
||||
mark_as_advanced(
|
||||
WITH_VULKAN_BACKEND
|
||||
WITH_VULKAN_GUARDEDALLOC
|
||||
)
|
||||
if(NOT WITH_EXPERIMENTAL_FEATURES)
|
||||
set(WITH_VULKAN_BACKEND OFF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Metal
|
||||
if(APPLE)
|
||||
@ -945,7 +945,10 @@ Include the files needed for debugging python scripts with visual studio 2017+."
|
||||
option(WITH_WINDOWS_SCCACHE "Use sccache to speed up builds (Ninja builder only)" OFF)
|
||||
mark_as_advanced(WITH_WINDOWS_SCCACHE)
|
||||
|
||||
option(WITH_WINDOWS_RELEASE_PDB "Generate a pdb file for client side stacktraces for release builds" ON)
|
||||
option(WITH_WINDOWS_RELEASE_PDB "\
|
||||
Generate a pdb file for client side stacktraces for release builds"
|
||||
ON
|
||||
)
|
||||
mark_as_advanced(WITH_WINDOWS_RELEASE_PDB)
|
||||
|
||||
option(WITH_WINDOWS_RELEASE_STRIPPED_PDB "Use a stripped PDB file for release builds" ON)
|
||||
@ -1129,17 +1132,19 @@ if(WITH_INSTALL_PORTABLE)
|
||||
set(CMAKE_SKIP_BUILD_RPATH TRUE)
|
||||
endif()
|
||||
|
||||
if(WITH_GHOST_SDL OR WITH_HEADLESS)
|
||||
message(STATUS "Disabling Ghost Wayland, X11, Input IME, and OpenXR")
|
||||
set(WITH_GHOST_WAYLAND OFF)
|
||||
set(WITH_GHOST_X11 OFF)
|
||||
set(WITH_X11_XINPUT OFF)
|
||||
set(WITH_X11_XF86VMODE OFF)
|
||||
set(WITH_X11_XFIXES OFF)
|
||||
set(WITH_GHOST_XDND OFF)
|
||||
set(WITH_INPUT_IME OFF)
|
||||
set(WITH_XR_OPENXR OFF)
|
||||
if(UNIX AND NOT (APPLE OR HAIKU))
|
||||
set_and_warn_incompatible(WITH_HEADLESS WITH_GHOST_WAYLAND OFF)
|
||||
set_and_warn_incompatible(WITH_HEADLESS WITH_GHOST_X11 OFF)
|
||||
endif()
|
||||
set_and_warn_incompatible(WITH_HEADLESS WITH_GHOST_SDL OFF)
|
||||
|
||||
if(WIN32 OR APPLE)
|
||||
set_and_warn_incompatible(WITH_HEADLESS WITH_INPUT_IME OFF)
|
||||
set_and_warn_incompatible(WITH_GHOST_SDL WITH_INPUT_IME OFF)
|
||||
endif()
|
||||
|
||||
set_and_warn_incompatible(WITH_HEADLESS WITH_XR_OPENXR OFF)
|
||||
set_and_warn_incompatible(WITH_GHOST_SDL WITH_XR_OPENXR OFF)
|
||||
|
||||
if(WITH_BUILDINFO)
|
||||
find_package(Git)
|
||||
@ -1361,23 +1366,27 @@ if(WITH_CPU_SIMD)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Print instructions used
|
||||
if(SUPPORT_NEON_BUILD)
|
||||
if(SSE2NEON_FOUND)
|
||||
message(STATUS "Neon SIMD instructions enabled")
|
||||
# Print instructions used on first run.
|
||||
if(FIRST_RUN)
|
||||
if(WITH_CPU_SIMD)
|
||||
if(SUPPORT_NEON_BUILD)
|
||||
if(SSE2NEON_FOUND)
|
||||
message(STATUS "Neon SIMD instructions enabled")
|
||||
else()
|
||||
message(STATUS "Neon SIMD instructions detected but unused, requires sse2neon")
|
||||
endif()
|
||||
elseif(SUPPORT_SSE2_BUILD)
|
||||
message(STATUS "SSE2 SIMD instructions enabled")
|
||||
elseif(SUPPORT_SSE_BUILD)
|
||||
message(STATUS "SSE SIMD instructions enabled")
|
||||
else()
|
||||
message(STATUS "Neon SIMD instructions detected but unused, requires sse2neon")
|
||||
message(STATUS "No SIMD instructions detected")
|
||||
endif()
|
||||
elseif(SUPPORT_SSE2_BUILD)
|
||||
message(STATUS "SSE2 SIMD instructions enabled")
|
||||
elseif(SUPPORT_SSE_BUILD)
|
||||
message(STATUS "SSE SIMD instructions enabled")
|
||||
else()
|
||||
message(STATUS "No SIMD instructions detected")
|
||||
message(STATUS "SIMD instructions disabled")
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "SIMD instructions disabled")
|
||||
endif()
|
||||
|
||||
# set the endian define
|
||||
@ -1516,13 +1525,8 @@ endif()
|
||||
# -----------------------------------------------------------------------------
|
||||
# Configure Python
|
||||
|
||||
if(WITH_PYTHON_MODULE)
|
||||
# Not currently supported due to different required Python link flags.
|
||||
if(WITH_GTESTS)
|
||||
message(STATUS "GTests not compatible with Python module, disabling WITH_GTESTS")
|
||||
set(WITH_GTESTS OFF)
|
||||
endif()
|
||||
endif()
|
||||
# Not currently supported due to different required Python link flags.
|
||||
set_and_warn_incompatible(WITH_PYTHON_MODULE WITH_GTESTS OFF)
|
||||
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
@ -1891,6 +1895,7 @@ elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
C_WARN_NO_STRICT_PROTOTYPES -Wno-strict-prototypes
|
||||
C_WARN_NO_BITWISE_INSTEAD_OF_LOGICAL -Wno-bitwise-instead-of-logical
|
||||
C_WARN_NO_IMPLICIT_CONST_INT_FLOAT_CONVERSION -Wno-implicit-const-int-float-conversion
|
||||
C_WARN_NO_SINGLE_BIT_BITFIELD_CONSTANT_CONVERSION -Wno-single-bit-bitfield-constant-conversion
|
||||
)
|
||||
|
||||
add_check_cxx_compiler_flags(
|
||||
@ -2273,7 +2278,6 @@ if(FIRST_RUN)
|
||||
if(WITH_GHOST_WAYLAND)
|
||||
info_cfg_option(WITH_GHOST_WAYLAND_DYNLOAD)
|
||||
info_cfg_option(WITH_GHOST_WAYLAND_LIBDECOR)
|
||||
info_cfg_option(WITH_GHOST_WAYLAND_DBUS)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
11
GNUmakefile
11
GNUmakefile
@ -489,8 +489,7 @@ check_wiki_file_structure: .FORCE
|
||||
"$(BLENDER_DIR)/tools/check_wiki/check_wiki_file_structure.py"
|
||||
|
||||
check_spelling_py: .FORCE
|
||||
@cd "$(BUILD_DIR)" ; \
|
||||
PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
@PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
"$(BLENDER_DIR)/tools/check_source/check_spelling.py" \
|
||||
--cache-file=$(CHECK_SPELLING_CACHE) \
|
||||
--match=".*\.(py)$$" \
|
||||
@ -499,8 +498,7 @@ check_spelling_py: .FORCE
|
||||
"$(BLENDER_DIR)/tools"
|
||||
|
||||
check_spelling_c: .FORCE
|
||||
@cd "$(BUILD_DIR)" ; \
|
||||
PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
@PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
"$(BLENDER_DIR)/tools/check_source/check_spelling.py" \
|
||||
--cache-file=$(CHECK_SPELLING_CACHE) \
|
||||
--match=".*\.(c|cc|cpp|cxx|h|hh|hpp|hxx|inl|m|mm)$$" \
|
||||
@ -510,11 +508,10 @@ check_spelling_c: .FORCE
|
||||
"$(BLENDER_DIR)/intern/ghost"
|
||||
|
||||
check_spelling_shaders: .FORCE
|
||||
@cd "$(BUILD_DIR)" ; \
|
||||
PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
@PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
"$(BLENDER_DIR)/tools/check_source/check_spelling.py" \
|
||||
--cache-file=$(CHECK_SPELLING_CACHE) \
|
||||
--match=".*\.(osl|msl|glsl)$$" \
|
||||
--match=".*\.(osl|metal|msl|glsl)$$" \
|
||||
"$(BLENDER_DIR)/intern/" \
|
||||
"$(BLENDER_DIR)/source/"
|
||||
|
||||
|
@ -4,6 +4,8 @@ vendor,product,version,cve_number,remarks,comment
|
||||
@PYTHON_ID@,CVE-2020-29396,Ignored,issue in odoo not used by blender
|
||||
@PYTHON_ID@,CVE-2021-32052,Ignored,issue in django not used by blender
|
||||
@PYTHON_ID@,CVE-2009-3720,Ignored,already fixed in libexpat version used
|
||||
@PYTHON_ID@,CVE-2023-36632,Ignored,not used in blender and not considered a bug upstream
|
||||
@PYTHON_ID@,CVE-2023-27043,Ignored,not used in blender
|
||||
@SSL_ID@,CVE-2009-1390,Ignored,issue in mutt not used by blender
|
||||
@SSL_ID@,CVE-2009-3765,Ignored,issue in mutt not used by blender
|
||||
@SSL_ID@,CVE-2009-3766,Ignored,issue in mutt not used by blender
|
||||
@ -24,6 +26,8 @@ vendor,product,version,cve_number,remarks,comment
|
||||
@TIFF_ID@,CVE-2022-3626,Ignored,issue in tiff command line tool not used by blender
|
||||
@TIFF_ID@,CVE-2022-3627,Ignored,issue in tiff command line tool not used by blender
|
||||
@XML2_ID@,CVE-2016-3709,Ignored,not affecting blender and not considered a security issue upstream
|
||||
@XML2_ID@,CVE-2023-39615,Ignored,not affecting blender and not considered a security issue upstream
|
||||
@XML2_ID@,CVE-2020-7595,Ignored,already fixed in the libxml2 version used
|
||||
@GMP_ID@,CVE-2021-43618,Mitigated,patched using upstream commit 561a9c25298e
|
||||
@SQLITE_ID@,CVE-2022-35737,Ignored,only affects SQLITE_ENABLE_STAT4 compile option not used by blender or python
|
||||
@SBOMCONTENTS@
|
||||
|
@ -47,6 +47,7 @@ set(OPENIMAGEIO_EXTRA_ARGS
|
||||
-DBUILD_SHARED_LIBS=ON
|
||||
${OPENIMAGEIO_LINKSTATIC}
|
||||
${DEFAULT_BOOST_FLAGS}
|
||||
-DREQUIRED_DEPS=WebP$<SEMICOLON>JPEGTurbo$<SEMICOLON>TIFF$<SEMICOLON>OpenEXR$<SEMICOLON>PNG$<SEMICOLON>OpenJPEG$<SEMICOLON>fmt$<SEMICOLON>Robinmap$<SEMICOLON>ZLIB$<SEMICOLON>pugixml$<SEMICOLON>Python
|
||||
-DUSE_LIBSQUISH=OFF
|
||||
-DUSE_QT5=OFF
|
||||
-DUSE_NUKE=OFF
|
||||
@ -108,9 +109,9 @@ ExternalProject_Add(external_openimageio
|
||||
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
|
||||
PREFIX ${BUILD_DIR}/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}/oiio_3832.diff &&
|
||||
${PATCH_CMD} -p 1 -N -d ${BUILD_DIR}/openimageio/src/external_openimageio/ < ${PATCH_DIR}/oiio_deadlock.diff &&
|
||||
${PATCH_CMD} -p 1 -N -d ${BUILD_DIR}/openimageio/src/external_openimageio/ < ${PATCH_DIR}/oiio_psd_8da473e254.diff
|
||||
${PATCH_CMD} -p 1 -N -d ${BUILD_DIR}/openimageio/src/external_openimageio/ < ${PATCH_DIR}/oiio_3984.diff &&
|
||||
${PATCH_CMD} -p 1 -N -d ${BUILD_DIR}/openimageio/src/external_openimageio/ < ${PATCH_DIR}/oiio_webp.diff
|
||||
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/openimageio ${DEFAULT_CMAKE_FLAGS} ${OPENIMAGEIO_EXTRA_ARGS}
|
||||
INSTALL_DIR ${LIBDIR}/openimageio
|
||||
)
|
||||
|
@ -88,7 +88,7 @@ else()
|
||||
export CFLAGS=${PYTHON_CFLAGS} &&
|
||||
export CPPFLAGS=${PYTHON_CFLAGS} &&
|
||||
export LDFLAGS=${PYTHON_LDFLAGS} &&
|
||||
export PKG_CONFIG_PATH=${LIBDIR}/ffi/lib/pkgconfig:${LIBDIR}/ssl/lib64/pkgconfig)
|
||||
export PKG_CONFIG_PATH=${LIBDIR}/ffi/lib/pkgconfig:${LIBDIR}/ssl/lib/pkgconfig:${LIBDIR}/ssl/lib64/pkgconfig)
|
||||
|
||||
# NOTE: untested on APPLE so far.
|
||||
if(NOT APPLE)
|
||||
|
@ -11,7 +11,7 @@
|
||||
# dependencies have one assigned.
|
||||
|
||||
set(ZLIB_VERSION 1.2.13)
|
||||
set(ZLIB_URI https://zlib.net/zlib-${ZLIB_VERSION}.tar.gz)
|
||||
set(ZLIB_URI https://github.com/madler/zlib/releases/download/v${ZLIB_VERSION}/zlib-${ZLIB_VERSION}.tar.gz)
|
||||
set(ZLIB_HASH 9b8aa094c4e5765dabf4da391f00d15c)
|
||||
set(ZLIB_HASH_TYPE MD5)
|
||||
set(ZLIB_FILE zlib-${ZLIB_VERSION}.tar.gz)
|
||||
@ -174,9 +174,9 @@ set(OPENMP_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${
|
||||
set(OPENMP_HASH_TYPE MD5)
|
||||
set(OPENMP_FILE openmp-${OPENMP_VERSION}.src.tar.xz)
|
||||
|
||||
set(OPENIMAGEIO_VERSION v2.4.11.0)
|
||||
set(OPENIMAGEIO_VERSION v2.4.15.0)
|
||||
set(OPENIMAGEIO_URI https://github.com/OpenImageIO/oiio/archive/refs/tags/${OPENIMAGEIO_VERSION}.tar.gz)
|
||||
set(OPENIMAGEIO_HASH 7eb997479ecfe7d9fa59cc8ddd35d0ae)
|
||||
set(OPENIMAGEIO_HASH aa4f077e5ba2a2e548afc1c4faddd8ff)
|
||||
set(OPENIMAGEIO_HASH_TYPE MD5)
|
||||
set(OPENIMAGEIO_FILE OpenImageIO-${OPENIMAGEIO_VERSION}.tar.gz)
|
||||
|
||||
@ -219,11 +219,11 @@ set(OSL_FILE OpenShadingLanguage-${OSL_VERSION}.tar.gz)
|
||||
# BZIP2, FFI, SQLITE and change the versions in this file as well. For compliance
|
||||
# reasons there can be no exceptions to this.
|
||||
|
||||
set(PYTHON_VERSION 3.10.12)
|
||||
set(PYTHON_VERSION 3.10.13)
|
||||
set(PYTHON_SHORT_VERSION 3.10)
|
||||
set(PYTHON_SHORT_VERSION_NO_DOTS 310)
|
||||
set(PYTHON_URI https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tar.xz)
|
||||
set(PYTHON_HASH 49b0342476b984e106d308c25d657f12)
|
||||
set(PYTHON_HASH 8847dc6458d1431d0ae0f55942deeb89)
|
||||
set(PYTHON_HASH_TYPE MD5)
|
||||
set(PYTHON_FILE Python-${PYTHON_VERSION}.tar.xz)
|
||||
set(PYTHON_CPE "cpe:2.3:a:python:python:${PYTHON_VERSION}:-:*:*:*:*:*:*")
|
||||
@ -370,16 +370,16 @@ set(ICONV_HASH_TYPE MD5)
|
||||
set(ICONV_FILE libiconv-${ICONV_VERSION}.tar.gz)
|
||||
set(ICONV_HOMEPAGE https://www.gnu.org/software/libiconv/)
|
||||
|
||||
set(SNDFILE_VERSION 1.1.0)
|
||||
set(SNDFILE_URI https://github.com/libsndfile/libsndfile/releases/download/1.1.0/libsndfile-${SNDFILE_VERSION}.tar.xz)
|
||||
set(SNDFILE_HASH e63dead2b4f0aaf323687619d007ee6a)
|
||||
set(SNDFILE_VERSION 1.2.2)
|
||||
set(SNDFILE_URI https://github.com/libsndfile/libsndfile/releases/download/1.2.2/libsndfile-${SNDFILE_VERSION}.tar.xz)
|
||||
set(SNDFILE_HASH 04e2e6f726da7c5dc87f8cf72f250d04)
|
||||
set(SNDFILE_HASH_TYPE MD5)
|
||||
set(SNDFILE_FILE libsndfile-${SNDFILE_VERSION}.tar.xz)
|
||||
set(SNDFILE_CPE "cpe:2.3:a:libsndfile_project:libsndfile:${SNDFILE_VERSION}:*:*:*:*:*:*:*")
|
||||
|
||||
set(WEBP_VERSION 1.2.2)
|
||||
set(WEBP_VERSION 1.3.2)
|
||||
set(WEBP_URI https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz)
|
||||
set(WEBP_HASH b5e2e414a8adee4c25fe56b18dd9c549)
|
||||
set(WEBP_HASH 34869086761c0e2da6361035f7b64771)
|
||||
set(WEBP_HASH_TYPE MD5)
|
||||
set(WEBP_FILE libwebp-${WEBP_VERSION}.tar.gz)
|
||||
set(WEBP_CPE "cpe:2.3:a:webmproject:libwebp:${WEBP_VERSION}:*:*:*:*:*:*:*")
|
||||
@ -481,9 +481,9 @@ set(LZMA_FILE xz-${LZMA_VERSION}.tar.bz2)
|
||||
set(LZMA_HOMEPAGE https://tukaani.org/lzma/)
|
||||
|
||||
# NOTE: Python's build has been modified to use our ssl version.
|
||||
set(SSL_VERSION 3.0.9)
|
||||
set(SSL_VERSION 3.1.2)
|
||||
set(SSL_URI https://www.openssl.org/source/openssl-${SSL_VERSION}.tar.gz)
|
||||
set(SSL_HASH eb1ab04781474360f77c318ab89d8c5a03abc38e63d65a603cabbf1b00a1dc90)
|
||||
set(SSL_HASH a0ce69b8b97ea6a35b96875235aa453b966ba3cba8af2de23657d8b6767d6539)
|
||||
set(SSL_HASH_TYPE SHA256)
|
||||
set(SSL_FILE openssl-${SSL_VERSION}.tar.gz)
|
||||
set(SSL_CPE "cpe:2.3:a:openssl:openssl:${SSL_VERSION}:*:*:*:*:*:*:*")
|
||||
|
@ -770,7 +770,7 @@ PACKAGES_ALL = (
|
||||
DISTRO_ID_ARCH: "openimageio",
|
||||
},
|
||||
),
|
||||
Package(name="LLVM Library", is_mandatory=False, version="15.0.7", version_short="15.0", version_min="11.0", version_mex="16.0",
|
||||
Package(name="LLVM Library", is_mandatory=False, version="12.0.0", version_short="12.0", version_min="11.0", version_mex="16.0",
|
||||
sub_packages=(
|
||||
Package(name="Clang Compiler", is_mandatory=False,
|
||||
distro_package_names={DISTRO_ID_DEBIAN: "clang",
|
||||
|
@ -1,13 +0,0 @@
|
||||
diff --git a/src/python/py_oiio.cpp b/src/python/py_oiio.cpp
|
||||
index 6031d2c23..e71105da5 100644
|
||||
--- a/src/python/py_oiio.cpp
|
||||
+++ b/src/python/py_oiio.cpp
|
||||
@@ -153,7 +153,7 @@ oiio_bufinfo::oiio_bufinfo(const py::buffer_info& pybuf, int nchans, int width,
|
||||
format = TypeUnknown; // No idea what's going on -- error
|
||||
error = Strutil::fmt::format(
|
||||
"Python array shape is [{:,}] but expecting h={}, w={}, ch={}",
|
||||
- cspan<ssize_t>(pybuf.shape), height, width, nchans);
|
||||
+ cspan<py::ssize_t>(pybuf.shape), height, width, nchans);
|
||||
}
|
||||
} else if (pixeldims == 1) {
|
||||
// Reading a 1D scanline span
|
13
build_files/build_environment/patches/oiio_3984.diff
Normal file
13
build_files/build_environment/patches/oiio_3984.diff
Normal file
@ -0,0 +1,13 @@
|
||||
diff --git a/src/libOpenImageIO/exif.cpp b/src/libOpenImageIO/exif.cpp
|
||||
index 90eaaec6e9..1fbf04140e 100644
|
||||
--- a/src/libOpenImageIO/exif.cpp
|
||||
+++ b/src/libOpenImageIO/exif.cpp
|
||||
@@ -1302,6 +1302,8 @@ encode_exif(const ImageSpec& spec, std::vector<char>& blob,
|
||||
TIFFHeader head;
|
||||
head.tiff_magic = (endianreq == endian::little) ? 0x4949 : 0x4d4d;
|
||||
head.tiff_version = 42;
|
||||
+ if (endianreq != endian::native)
|
||||
+ swap_endian(&head.tiff_version);
|
||||
// N.B. need to swap_endian head.tiff_diroff below, once we know the sizes
|
||||
append(blob, head);
|
||||
|
@ -1,34 +0,0 @@
|
||||
diff --git a/src/psd.imageio/psdinput.cpp b/src/psd.imageio/psdinput.cpp
|
||||
index 9dc240281..05b008e0a 100644
|
||||
--- a/src/psd.imageio/psdinput.cpp
|
||||
+++ b/src/psd.imageio/psdinput.cpp
|
||||
@@ -1344,9 +1344,27 @@ PSDInput::load_resource_thumbnail(uint32_t length, bool isBGR)
|
||||
if (!ioread(&jpeg_data[0], jpeg_length))
|
||||
return false;
|
||||
|
||||
+ // Create an IOMemReader that references the thumbnail JPEG blob and read
|
||||
+ // it with an ImageInput, into the memory owned by an ImageBuf.
|
||||
Filesystem::IOMemReader thumbblob(jpeg_data.data(), jpeg_length);
|
||||
- m_thumbnail = ImageBuf("thumbnail.jpg", 0, 0, nullptr, nullptr, &thumbblob);
|
||||
- m_thumbnail.read(0, 0, true);
|
||||
+ m_thumbnail.clear();
|
||||
+ auto imgin = ImageInput::open("thumbnail.jpg", nullptr, &thumbblob);
|
||||
+ if (imgin) {
|
||||
+ ImageSpec spec = imgin->spec(0);
|
||||
+ m_thumbnail.reset(spec, InitializePixels::No);
|
||||
+ ok = imgin->read_image(0, 0, 0, m_thumbnail.spec().nchannels,
|
||||
+ m_thumbnail.spec().format,
|
||||
+ m_thumbnail.localpixels());
|
||||
+ imgin.reset();
|
||||
+ } else {
|
||||
+ errorfmt("Failed to open thumbnail");
|
||||
+ return false;
|
||||
+ }
|
||||
+ if (!ok) {
|
||||
+ errorfmt("Failed to read thumbnail: {}", m_thumbnail.geterror());
|
||||
+ m_thumbnail.clear();
|
||||
+ return false;
|
||||
+ }
|
||||
|
||||
// Set these attributes for the merged composite only (subimage 0)
|
||||
composite_attribute("thumbnail_width", (int)m_thumbnail.spec().width);
|
78
build_files/build_environment/patches/oiio_webp.diff
Normal file
78
build_files/build_environment/patches/oiio_webp.diff
Normal file
@ -0,0 +1,78 @@
|
||||
diff -Naur oiio-2.4.15.0/src/cmake/modules/FindWebP.cmake external_openimageio/src/cmake/modules/FindWebP.cmake
|
||||
--- oiio-2.4.15.0/src/cmake/modules/FindWebP.cmake 2023-09-01 10:48:29.000000000 -0600
|
||||
+++ external_openimageio/src/cmake/modules/FindWebP.cmake 2023-09-21 14:47:19.366083900 -0600
|
||||
@@ -25,15 +25,30 @@
|
||||
ENV WEBP_INCLUDE_PATH
|
||||
DOC "The directory where Webp headers reside")
|
||||
|
||||
-find_library (WEBP_LIBRARY webp
|
||||
+find_library (WEBP_LIBRARY
|
||||
+ NAMES
|
||||
+ webp
|
||||
+ libwebp
|
||||
HINTS
|
||||
${WEBP_LIBRARY_PATH}
|
||||
ENV WEBP_LIBRARY_PATH)
|
||||
-find_library (WEBPDEMUX_LIBRARY webpdemux
|
||||
+find_library (WEBPDEMUX_LIBRARY
|
||||
+ NAMES
|
||||
+ webpdemux
|
||||
+ libwebpdemux
|
||||
+ HINTS
|
||||
+ ${WEBP_LIBRARY_PATH}
|
||||
+ ENV WEBP_LIBRARY_PATH)
|
||||
+# New in WebP 1.3
|
||||
+find_library (WEBP_SHARPYUV_LIBRARY
|
||||
+ NAMES
|
||||
+ sharpyuv
|
||||
+ libsharpyuv
|
||||
HINTS
|
||||
${WEBP_LIBRARY_PATH}
|
||||
ENV WEBP_LIBRARY_PATH)
|
||||
|
||||
+
|
||||
include (FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args (WebP
|
||||
REQUIRED_VARS WEBP_INCLUDE_DIR
|
||||
@@ -42,7 +57,7 @@
|
||||
|
||||
if (WebP_FOUND)
|
||||
set (WEBP_INCLUDES "${WEBP_INCLUDE_DIR}")
|
||||
- set (WEBP_LIBRARIES ${WEBP_LIBRARY} ${WEBPDEMUX_LIBRARY})
|
||||
+ set (WEBP_LIBRARIES ${WEBP_LIBRARY} ${WEBPDEMUX_LIBRARY} ${WEBP_SHARPYUV_LIBRARY})
|
||||
|
||||
if (NOT TARGET WebP::webp)
|
||||
add_library(WebP::webp UNKNOWN IMPORTED)
|
||||
@@ -58,10 +73,18 @@
|
||||
set_property(TARGET WebP::webpdemux APPEND PROPERTY
|
||||
IMPORTED_LOCATION ${WEBPDEMUX_LIBRARY})
|
||||
endif ()
|
||||
+ if (WEBP_SHARPYUV_LIBRARY AND NOT TARGET WebP::sharpyuv)
|
||||
+ add_library(WebP::sharpyuv UNKNOWN IMPORTED)
|
||||
+ set_target_properties(WebP::sharpyuv PROPERTIES
|
||||
+ INTERFACE_INCLUDE_DIRECTORIES ${WEBP_INCLUDES})
|
||||
+ set_property(TARGET WebP::sharpyuv APPEND PROPERTY
|
||||
+ IMPORTED_LOCATION ${WEBP_SHARPYUV_LIBRARY})
|
||||
+ endif ()
|
||||
endif ()
|
||||
|
||||
mark_as_advanced (
|
||||
WEBP_INCLUDE_DIR
|
||||
WEBP_LIBRARY
|
||||
WEBPDEMUX_LIBRARY
|
||||
+ WEBP_SHARPYUV_LIBRARY
|
||||
)
|
||||
|
||||
diff --git a/src/webp.imageio/CMakeLists.txt b/src/webp.imageio/CMakeLists.txt
|
||||
index ccf1146..c646e99 100644
|
||||
--- a/src/webp.imageio/CMakeLists.txt
|
||||
+++ b/src/webp.imageio/CMakeLists.txt
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
if (WebP_FOUND)
|
||||
add_oiio_plugin (webpinput.cpp webpoutput.cpp
|
||||
- LINK_LIBRARIES WebP::webp WebP::webpdemux
|
||||
+ LINK_LIBRARIES WebP::webp WebP::webpdemux WebP::sharpyuv
|
||||
DEFINITIONS "-DUSE_WEBP=1")
|
||||
else ()
|
||||
message (STATUS "WebP plugin will not be built")
|
@ -8,25 +8,7 @@ include("${CMAKE_CURRENT_LIST_DIR}/../../cmake/config/blender_release.cmake")
|
||||
|
||||
message(STATUS "Building in Rocky 8 Linux 64bit environment")
|
||||
|
||||
set(LIBDIR_NAME "linux_x86_64_glibc_228")
|
||||
|
||||
# ######## Linux-specific build options ########
|
||||
# Options which are specific to Linux-only platforms
|
||||
|
||||
set(WITH_DOC_MANPAGE OFF CACHE BOOL "" FORCE)
|
||||
|
||||
# ######## Official release-specific build options ########
|
||||
# Options which are specific to Linux release builds only
|
||||
|
||||
set(WITH_JACK_DYNLOAD ON CACHE BOOL "" FORCE)
|
||||
set(WITH_PULSEAUDIO_DYNLOAD ON CACHE BOOL "" FORCE)
|
||||
set(WITH_SDL_DYNLOAD ON CACHE BOOL "" FORCE)
|
||||
|
||||
# ######## Release environment specific settings ########
|
||||
|
||||
set(LIBDIR "${CMAKE_CURRENT_LIST_DIR}/../../../../lib/${LIBDIR_NAME}" CACHE STRING "" FORCE)
|
||||
|
||||
# Platform specific configuration, to ensure static linking against everything.
|
||||
|
||||
# Additional linking libraries
|
||||
set(CMAKE_EXE_LINKER_FLAGS "-lrt -no-pie" CACHE STRING "" FORCE)
|
||||
|
@ -85,7 +85,6 @@ set(_CLANG_FIND_COMPONENTS
|
||||
clangAST
|
||||
clangLex
|
||||
clangBasic
|
||||
clangSupport
|
||||
)
|
||||
|
||||
set(_CLANG_LIBRARIES)
|
||||
|
@ -12,6 +12,9 @@ if(DEFINED HIP_ROOT_DIR AND HIP_ROOT_DIR)
|
||||
# Pass.
|
||||
elseif(DEFINED ENV{HIP_ROOT_DIR})
|
||||
set(HIP_ROOT_DIR $ENV{HIP_ROOT_DIR})
|
||||
elseif(DEFINED ENV{HIP_PATH})
|
||||
# Built-in environment variable from SDK.
|
||||
set(HIP_ROOT_DIR $ENV{HIP_PATH})
|
||||
else()
|
||||
set(HIP_ROOT_DIR "")
|
||||
endif()
|
||||
|
@ -12,6 +12,9 @@ if(DEFINED HIPRT_ROOT_DIR AND HIPRT_ROOT_DIR)
|
||||
# Pass.
|
||||
elseif(DEFINED ENV{HIPRT_ROOT_DIR})
|
||||
set(HIPRT_ROOT_DIR $ENV{HIPRT_ROOT_DIR})
|
||||
elseif(DEFINED ENV{HIP_PATH})
|
||||
# Built-in environment variable from SDK.
|
||||
set(HIPRT_ROOT_DIR $ENV{HIP_PATH})
|
||||
else()
|
||||
set(HIPRT_ROOT_DIR "")
|
||||
endif()
|
||||
@ -24,6 +27,7 @@ find_path(HIPRT_INCLUDE_DIR
|
||||
NAMES
|
||||
hiprt/hiprt.h
|
||||
HINTS
|
||||
${_hiprt_SEARCH_DIRS}/include
|
||||
${_hiprt_SEARCH_DIRS}
|
||||
)
|
||||
|
||||
@ -36,6 +40,7 @@ if(HIPRT_INCLUDE_DIR)
|
||||
NAMES
|
||||
hiprt${_hiprt_version}_amd_lib_win.bc
|
||||
HINTS
|
||||
${HIPRT_ROOT_DIR}/bin
|
||||
${HIPRT_ROOT_DIR}/dist/bin/Release
|
||||
NO_DEFAULT_PATH
|
||||
)
|
||||
|
@ -41,6 +41,7 @@ set(_webp_FIND_COMPONENTS
|
||||
webp
|
||||
webpmux
|
||||
webpdemux
|
||||
sharpyuv # New in 1.3
|
||||
)
|
||||
|
||||
set(_webp_LIBRARIES)
|
||||
@ -56,7 +57,9 @@ foreach(COMPONENT ${_webp_FIND_COMPONENTS})
|
||||
PATH_SUFFIXES
|
||||
lib64 lib lib/static
|
||||
)
|
||||
list(APPEND _webp_LIBRARIES "${WEBP_${UPPERCOMPONENT}_LIBRARY}")
|
||||
if(WEBP_${UPPERCOMPONENT}_LIBRARY)
|
||||
list(APPEND _webp_LIBRARIES "${WEBP_${UPPERCOMPONENT}_LIBRARY}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(NOT WEBP_WEBP_LIBRARY)
|
||||
@ -84,4 +87,5 @@ mark_as_advanced(
|
||||
WEBP_WEBPDEMUX_LIBRARY
|
||||
WEBP_WEBPMUX_LIBRARY
|
||||
WEBP_WEBP_LIBRARY
|
||||
WEBP_SHARPYUV_LIBRARY
|
||||
)
|
||||
|
@ -492,7 +492,7 @@ def run_checks_on_project(
|
||||
import multiprocessing
|
||||
|
||||
if jobs <= 0:
|
||||
jobs = multiprocessing.cpu_count() * 2
|
||||
jobs = multiprocessing.cpu_count()
|
||||
|
||||
if jobs > 1:
|
||||
with multiprocessing.Pool(processes=jobs) as pool:
|
||||
|
@ -7,6 +7,9 @@
|
||||
# Example usage:
|
||||
# cmake -C../blender/build_files/cmake/config/blender_release.cmake ../blender
|
||||
#
|
||||
# NOTE: the built-bot supports configuration overrides for some of these settings.
|
||||
# This means the daily-builds may not match this configuration *exactly*,
|
||||
# see: `build_files/buildbot/config/*.cmake`.
|
||||
|
||||
set(WITH_ALEMBIC ON CACHE BOOL "" FORCE)
|
||||
set(WITH_ASSERT_ABORT OFF CACHE BOOL "" FORCE)
|
||||
@ -78,6 +81,9 @@ if(UNIX AND NOT APPLE)
|
||||
set(WITH_PULSEAUDIO ON CACHE BOOL "" FORCE)
|
||||
set(WITH_X11_XINPUT ON CACHE BOOL "" FORCE)
|
||||
set(WITH_X11_XF86VMODE ON CACHE BOOL "" FORCE)
|
||||
set(WITH_JACK_DYNLOAD ON CACHE BOOL "" FORCE)
|
||||
set(WITH_PULSEAUDIO_DYNLOAD ON CACHE BOOL "" FORCE)
|
||||
set(WITH_SDL_DYNLOAD ON CACHE BOOL "" FORCE)
|
||||
endif()
|
||||
if(NOT APPLE)
|
||||
set(WITH_XR_OPENXR ON CACHE BOOL "" FORCE)
|
||||
|
@ -733,8 +733,8 @@ endmacro()
|
||||
# when we have warnings as errors applied globally this
|
||||
# needs to be removed for some external libs which we don't maintain.
|
||||
|
||||
# utility macro
|
||||
macro(remove_cc_flag
|
||||
|
||||
macro(remove_c_flag
|
||||
_flag)
|
||||
|
||||
foreach(f ${ARGV})
|
||||
@ -743,7 +743,14 @@ macro(remove_cc_flag
|
||||
string(REGEX REPLACE ${f} "" CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE})
|
||||
string(REGEX REPLACE ${f} "" CMAKE_C_FLAGS_MINSIZEREL ${CMAKE_C_FLAGS_MINSIZEREL})
|
||||
string(REGEX REPLACE ${f} "" CMAKE_C_FLAGS_RELWITHDEBINFO ${CMAKE_C_FLAGS_RELWITHDEBINFO})
|
||||
endforeach()
|
||||
unset(f)
|
||||
endmacro()
|
||||
|
||||
macro(remove_cxx_flag
|
||||
_flag)
|
||||
|
||||
foreach(f ${ARGV})
|
||||
string(REGEX REPLACE ${f} "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
||||
string(REGEX REPLACE ${f} "" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG})
|
||||
string(REGEX REPLACE ${f} "" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE})
|
||||
@ -751,7 +758,14 @@ macro(remove_cc_flag
|
||||
string(REGEX REPLACE ${f} "" CMAKE_CXX_FLAGS_RELWITHDEBINFO ${CMAKE_CXX_FLAGS_RELWITHDEBINFO})
|
||||
endforeach()
|
||||
unset(f)
|
||||
endmacro()
|
||||
|
||||
# utility macro
|
||||
macro(remove_cc_flag
|
||||
_flag)
|
||||
|
||||
remove_c_flag(${ARGV})
|
||||
remove_cxx_flag(${ARGV})
|
||||
endmacro()
|
||||
|
||||
macro(add_c_flag
|
||||
@ -1110,7 +1124,7 @@ function(data_to_c
|
||||
|
||||
set(optional_args "")
|
||||
foreach(f ${ARGN})
|
||||
if (f STREQUAL "STRIP_LEADING_C_COMMENTS")
|
||||
if(f STREQUAL "STRIP_LEADING_C_COMMENTS")
|
||||
set(optional_args "--options=strip_leading_c_comments")
|
||||
else()
|
||||
message(FATAL_ERROR "Unknown optional argument ${f} to \"data_to_c\"")
|
||||
@ -1147,7 +1161,7 @@ function(data_to_c_simple
|
||||
|
||||
set(optional_args "")
|
||||
foreach(f ${ARGN})
|
||||
if (f STREQUAL "STRIP_LEADING_C_COMMENTS")
|
||||
if(f STREQUAL "STRIP_LEADING_C_COMMENTS")
|
||||
set(optional_args "--options=strip_leading_c_comments")
|
||||
else()
|
||||
message(FATAL_ERROR "Unknown optional argument ${f} to \"data_to_c_simple\"")
|
||||
@ -1441,6 +1455,24 @@ macro(set_and_warn_dependency
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(set_and_warn_incompatible
|
||||
_dependency _setting _val)
|
||||
# when $_dependency is enabled, forces $_setting = $_val
|
||||
# Both should be defined, warn if they're not.
|
||||
if(NOT DEFINED ${_dependency})
|
||||
message(STATUS "${_dependency} not defined!")
|
||||
elseif(NOT DEFINED ${_setting})
|
||||
message(STATUS "${_setting} not defined!")
|
||||
elseif(${${_dependency}} AND ${${_setting}})
|
||||
if(WITH_STRICT_BUILD_OPTIONS)
|
||||
message(SEND_ERROR "${_dependency} enabled but incompatible with ${_setting}")
|
||||
else()
|
||||
message(STATUS "${_dependency} is enabled but incompatible, setting ${_setting}=${_val}")
|
||||
endif()
|
||||
set(${_setting} ${_val})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(set_and_warn_library_found
|
||||
_library_name _library_found _setting)
|
||||
if(((NOT ${_library_found}) OR (NOT ${${_library_found}})) AND ${${_setting}})
|
||||
|
@ -54,7 +54,9 @@ if(NOT DEFINED LIBDIR)
|
||||
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin_${CMAKE_OSX_ARCHITECTURES})
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}")
|
||||
if(FIRST_RUN)
|
||||
message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}")
|
||||
endif()
|
||||
endif()
|
||||
if(NOT EXISTS "${LIBDIR}/")
|
||||
message(FATAL_ERROR "Mac OSX requires pre-compiled libs at: '${LIBDIR}'")
|
||||
@ -102,12 +104,6 @@ if(WITH_MATERIALX)
|
||||
endif()
|
||||
add_bundled_libraries(materialx/lib)
|
||||
|
||||
if(WITH_VULKAN_BACKEND)
|
||||
find_package(MoltenVK REQUIRED)
|
||||
find_package(ShaderC REQUIRED)
|
||||
find_package(Vulkan REQUIRED)
|
||||
endif()
|
||||
|
||||
if(WITH_OPENSUBDIV)
|
||||
find_package(OpenSubdiv)
|
||||
endif()
|
||||
@ -192,8 +188,6 @@ set(PLATFORM_LINKFLAGS
|
||||
"-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio -framework Metal -framework QuartzCore"
|
||||
)
|
||||
|
||||
list(APPEND PLATFORM_LINKLIBS c++)
|
||||
|
||||
if(WITH_OPENIMAGEDENOISE)
|
||||
if("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "arm64")
|
||||
# OpenImageDenoise uses BNNS from the Accelerate framework.
|
||||
@ -330,16 +324,6 @@ endif()
|
||||
|
||||
if(WITH_CYCLES AND WITH_CYCLES_EMBREE)
|
||||
find_package(Embree 3.8.0 REQUIRED)
|
||||
|
||||
# Embree static library linking can mix up SSE and AVX symbols, causing
|
||||
# crashes on macOS systems with older CPUs that don't have AVX. Using
|
||||
# force load avoids that. The Embree shared library does not suffer from
|
||||
# this problem, precisely because linking a shared library uses force load.
|
||||
set(_embree_libraries_force_load)
|
||||
foreach(_embree_library ${EMBREE_LIBRARIES})
|
||||
list(APPEND _embree_libraries_force_load "-Wl,-force_load,${_embree_library}")
|
||||
endforeach()
|
||||
set(EMBREE_LIBRARIES ${_embree_libraries_force_load})
|
||||
endif()
|
||||
add_bundled_libraries(embree/lib)
|
||||
|
||||
@ -435,8 +419,10 @@ string(APPEND PLATFORM_LINKFLAGS
|
||||
" -Wl,-unexported_symbols_list,'${PLATFORM_SYMBOLS_MAP}'"
|
||||
)
|
||||
|
||||
string(APPEND CMAKE_CXX_FLAGS " -stdlib=libc++")
|
||||
string(APPEND PLATFORM_LINKFLAGS " -stdlib=libc++")
|
||||
# Use old, slower linker for now to avoid many linker warnings.
|
||||
if(${XCODE_VERSION} VERSION_GREATER_EQUAL 15.0)
|
||||
string(APPEND PLATFORM_LINKFLAGS " -Wl,-ld_classic")
|
||||
endif()
|
||||
|
||||
# Make stack size more similar to Embree, required for Embree.
|
||||
string(APPEND PLATFORM_LINKFLAGS_EXECUTABLE " -Wl,-stack_size,0x100000")
|
||||
|
@ -46,12 +46,13 @@ else()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
# Support restoring this value once pre-compiled libraries have been handled.
|
||||
set(WITH_STATIC_LIBS_INIT ${WITH_STATIC_LIBS})
|
||||
|
||||
if(DEFINED LIBDIR)
|
||||
message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}")
|
||||
if(FIRST_RUN)
|
||||
message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}")
|
||||
endif()
|
||||
|
||||
file(GLOB LIB_SUBDIRS ${LIBDIR}/*)
|
||||
|
||||
@ -118,17 +119,24 @@ if(WITH_VULKAN_BACKEND)
|
||||
find_package_wrapper(Vulkan REQUIRED)
|
||||
find_package_wrapper(ShaderC REQUIRED)
|
||||
endif()
|
||||
add_bundled_libraries(vulkan/lib)
|
||||
|
||||
function(check_freetype_for_brotli)
|
||||
include(CheckSymbolExists)
|
||||
set(CMAKE_REQUIRED_INCLUDES ${FREETYPE_INCLUDE_DIRS})
|
||||
check_symbol_exists(FT_CONFIG_OPTION_USE_BROTLI "freetype/config/ftconfig.h" HAVE_BROTLI)
|
||||
unset(CMAKE_REQUIRED_INCLUDES)
|
||||
if(NOT HAVE_BROTLI)
|
||||
if((DEFINED HAVE_BROTLI AND HAVE_BROTLI) AND
|
||||
(DEFINED HAVE_BROTLI_INC AND ("${HAVE_BROTLI_INC}" STREQUAL "${FREETYPE_INCLUDE_DIRS}")))
|
||||
# Pass, the includes didn't change, use the cached value.
|
||||
else()
|
||||
unset(HAVE_BROTLI CACHE)
|
||||
message(FATAL_ERROR "Freetype needs to be compiled with brotli support!")
|
||||
include(CheckSymbolExists)
|
||||
set(CMAKE_REQUIRED_INCLUDES ${FREETYPE_INCLUDE_DIRS})
|
||||
check_symbol_exists(FT_CONFIG_OPTION_USE_BROTLI "freetype/config/ftconfig.h" HAVE_BROTLI)
|
||||
unset(CMAKE_REQUIRED_INCLUDES)
|
||||
if(NOT HAVE_BROTLI)
|
||||
unset(HAVE_BROTLI CACHE)
|
||||
message(FATAL_ERROR "Freetype needs to be compiled with brotli support!")
|
||||
endif()
|
||||
set(HAVE_BROTLI_INC "${FREETYPE_INCLUDE_DIRS}" CACHE INTERNAL "")
|
||||
endif()
|
||||
unset(HAVE_BROTLI CACHE)
|
||||
endfunction()
|
||||
|
||||
if(NOT WITH_SYSTEM_FREETYPE)
|
||||
@ -379,6 +387,7 @@ endif()
|
||||
if(WITH_USD)
|
||||
find_package_wrapper(USD)
|
||||
set_and_warn_library_found("USD" USD_FOUND WITH_USD)
|
||||
set_and_warn_library_found("Hydra" USD_FOUND WITH_HYDRA)
|
||||
endif()
|
||||
add_bundled_libraries(usd/lib)
|
||||
|
||||
@ -542,7 +551,9 @@ if(WITH_CYCLES AND WITH_CYCLES_PATH_GUIDING)
|
||||
if(openpgl_FOUND)
|
||||
get_target_property(OPENPGL_LIBRARIES openpgl::openpgl LOCATION)
|
||||
get_target_property(OPENPGL_INCLUDE_DIR openpgl::openpgl INTERFACE_INCLUDE_DIRECTORIES)
|
||||
message(STATUS "Found OpenPGL: ${OPENPGL_LIBRARIES}")
|
||||
if(FIRST_RUN)
|
||||
message(STATUS "Found OpenPGL: ${OPENPGL_LIBRARIES}")
|
||||
endif()
|
||||
else()
|
||||
set(WITH_CYCLES_PATH_GUIDING OFF)
|
||||
message(STATUS "OpenPGL not found, disabling WITH_CYCLES_PATH_GUIDING")
|
||||
@ -709,10 +720,6 @@ if(WITH_GHOST_WAYLAND)
|
||||
set_and_warn_library_found("xkbcommon" xkbcommon_FOUND WITH_GHOST_WAYLAND)
|
||||
|
||||
if(WITH_GHOST_WAYLAND)
|
||||
if(WITH_GHOST_WAYLAND_DBUS)
|
||||
pkg_check_modules(dbus REQUIRED dbus-1)
|
||||
endif()
|
||||
|
||||
if(WITH_GHOST_WAYLAND_LIBDECOR)
|
||||
if(_use_system_wayland)
|
||||
pkg_check_modules(libdecor libdecor-0>=0.1)
|
||||
@ -723,10 +730,6 @@ if(WITH_GHOST_WAYLAND)
|
||||
set_and_warn_library_found("libdecor" libdecor_FOUND WITH_GHOST_WAYLAND_LIBDECOR)
|
||||
endif()
|
||||
|
||||
if(WITH_GHOST_WAYLAND_DBUS)
|
||||
add_definitions(-DWITH_GHOST_WAYLAND_DBUS)
|
||||
endif()
|
||||
|
||||
if(WITH_GHOST_WAYLAND_LIBDECOR)
|
||||
add_definitions(-DWITH_GHOST_WAYLAND_LIBDECOR)
|
||||
endif()
|
||||
|
@ -278,7 +278,9 @@ if(NOT DEFINED LIBDIR)
|
||||
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/${LIBDIR_BASE}_vc15)
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}")
|
||||
if(FIRST_RUN)
|
||||
message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}")
|
||||
endif()
|
||||
endif()
|
||||
if(NOT EXISTS "${LIBDIR}/")
|
||||
message(FATAL_ERROR "\n\nWindows requires pre-compiled libs at: '${LIBDIR}'. Please run `make update` in the blender source folder to obtain them.")
|
||||
@ -388,7 +390,20 @@ endif()
|
||||
if(WITH_IMAGE_WEBP)
|
||||
set(WEBP_INCLUDE_DIRS ${LIBDIR}/webp/include)
|
||||
set(WEBP_ROOT_DIR ${LIBDIR}/webp)
|
||||
set(WEBP_LIBRARIES ${LIBDIR}/webp/lib/webp.lib ${LIBDIR}/webp/lib/webpdemux.lib ${LIBDIR}/webp/lib/webpmux.lib)
|
||||
if(EXISTS ${LIBDIR}/webp/lib/libsharpyuv.lib) # webp 1.3.x+
|
||||
set(WEBP_LIBRARIES
|
||||
${LIBDIR}/webp/lib/libwebp.lib
|
||||
${LIBDIR}/webp/lib/libwebpdemux.lib
|
||||
${LIBDIR}/webp/lib/libwebpmux.lib
|
||||
${LIBDIR}/webp/lib/libsharpyuv.lib
|
||||
)
|
||||
else()
|
||||
set(WEBP_LIBRARIES
|
||||
${ |