The build commands for `ninja clean` on Windows were wrong - one had
the cmake executable duplicated and one was not using the correct
environment variable and also had missing quotes for paths that
contained spaces. Tested working on with `make ninja clean` and
`make ninja clean release`.
Pull Request: https://projects.blender.org/blender/blender/pulls/128802
The deps builder currently uses `check/enable_language(CUDA)` but given
it's just a coordinator for external builds, doesn't actually build any
cuda code.
The problem there is, for enable_language(CUDA) to work, the CUDA Visual
studio integration needs to be installed which they refuse to install
when only the VS buildtools are installed, they somehow require the
full IDE to be available. Cmake will try to compile some code and fail.
(this worked previously since i had a full VS install on my build
machine, but that should not be used due to ms not providing a back
catalog of older versions of VS community)
This change, changes things over to use the FindCUDAToolkit module (not
to be confused with the deprecated FindCUDA module), which just locates
the libraries, includes and nvcc but doesn't compile anything.
which neatly sidesteps the issue. None of our downstream deps rely on
the VS integration either, so we are in the clear..... for now..
Pull Request: https://projects.blender.org/blender/blender/pulls/130913
Windows build_deps tweaks:
- Support VS2022 for building x64 dependencies (this is not used yet,
but for local tests might be useful).
- Put artifacts and staging of windows deps builder under git ignore
Pull Request: https://projects.blender.org/blender/blender/pulls/130342
Suppress unused warnings using the "vulture" utility.
- Include public definitions in the modules `__all__`.
- Mark arguments & variables as unused with a "_" prefix.
Bump shaderc to latest release. The latest release
contains fixes that we applied locally to improve
compilation performance and also many fixes
that improve platform compatibility.
Pull Request: https://projects.blender.org/blender/blender/pulls/129971
In Blender 4.4 we are planning to use `VK_KHR_dynamic_rendering_local_read`
This is a fairly new extension and not included in the headers we are using at this moment.
This PR will update the headers to the latest version.
Pull Request: https://projects.blender.org/blender/blender/pulls/128995
Support importing scripts without running their logic to
allow basic validation (see #130746).
Parts of !131037 were used.
Co-authored-by: Bastien Montagne <bastien@blender.org>
Remove assert statement from make_update.py, making it ready for any
architecture.
Add riscv 32, 64 and 128 bit cpu architecture with little/big endian
to Blender's BLI_build_config.h and Libmv's build_config.h
Tested (to compile) on riscv64 little endian machine.
Pull Request: https://projects.blender.org/blender/blender/pulls/130920
The HIP compiler version was not being detected on first run in a fresh
build folder since HIP requires perl, and perl wasn't installed yet due
to the compiler detection running before the installs into the build
folder.
this change re-orders the compiler detection and environment preparation
so perl is available when we detect the hip compiler version.
Buildbot uses Python 3.9, so it needs to be supported.
Arguably, the system-wide Python 3.6 needs to be supported to, but
it is a bit more tricky change, and is not a stopper for now.
Pull Request: https://projects.blender.org/blender/blender/pulls/130664
CMake 3.31+ have begun emitting warnings when you feed install()
paths that are not normalized (ie have, '.' or '..' in them) easiest
fix is just not use them.
This cleans up the windows sections of the build system, the other
platform devs will have to take a look on their respective platforms.
Multiple of our libraries would pull in system libraries that we have static versions of.
These where libxml2 and libz and also libzstd.
I also noticed that the script that was supposed to check on this was not really usable to check for these kinds of things so I updated it.
Now you can run it with `python3.11 tools/check_blender_release/check_release.py -- ../build_linux_release/bin/` and it will check all binaries and libraries that we ship for any system libraries that we don't expect to be linked.
The libraries I'm aware of that pulled in system libs were:
boost
mesa
osl
llvm
(The removed cmake flags for osl was because these were unused and cmake printed warnings)
Pull Request: https://projects.blender.org/blender/blender/pulls/130236
This implements the proposal from #124512. For that it contains the following
changes:
* Remove the global override of `new`/`delete` when `WITH_CXX_GUARDEDALLOC` was
enabled.
* Always use `MEM_CXX_CLASS_ALLOC_FUNCS` where it is currently used. This used
to be guarded by `WITH_CXX_GUARDEDALLOC` in some but not all cases. This means
that a few classes which didn't use our guarded allocator by default before,
are now using it.
Pull Request: https://projects.blender.org/blender/blender/pulls/130181
It should be possible to build all other deps when hipcc
is not present on the system, however the hiprt build
errored out during the configuration phase.
This change skips HIPRT when hipcc is not available
This change makes it so only kernels of the same vendor are compiled in
parallel. For example for the release builds it will be:
1. All CUDA kernels
2. All OptiX kernels
3. All HIP kernels
4. All OneAPI kernels
This potentially leads to a lower CPU utilization, but it makes it much
easier to manage memory usage and tweak per-vendor concurrency.
The goal of this change is to solve occasional out-of-memory during the
GPU kernels compilation step on the CI/CD farm.
This change also includes tweaks to the prallel jobs for HIP-RT and
oneAPI. The tweak is based on measuring apparent memory usage peak on
Linux when doing single-thread compilation, and giving some safe margin
from the available memory on the buildbot.
Pull Request: https://projects.blender.org/blender/blender/pulls/129945
Update Harfbuzz from version 5.1.0 to 10.0.1.
The current version of Harfbuzz (5.1.0) fails to build on Clang 16.0 and
above, breaking dependency builds on macOS 15.0 (which bumped the
Apple Clang version to 16.0). This is due to a new Clang warning flag
(`cast-function-type-strict`) which Harfbuzz implicitly enables and
treat as an error via a header pragma, which in turn prevents it from
being disabled via a simple `-Wno-error` flag.
Since Harfbuzz was only added as a preliminary dependency, and isn't
used anywhere in the Blender codebase yet, it was decided on the chat
that the simplest course of action would be to just bump it to its
latest version, as the problematic warning flag has been disabled in
version 6.0
Pull Request: https://projects.blender.org/blender/blender/pulls/128922
The OpenImageIO JPEG library path build argument has changed in recent
OIIO version from `JPEG_LIBRARY` / `JPEG_INCLUDE_DIR` to `JPEG_ROOT` and
`libjpeg-turbo_ROOT` (similarly to the `OpenJPEG_ROOT` argument).
Before this commit, OIIO library builds on macOS would either error out
or wrongly link to the system jpeg-turbo library instead.
Pull Request: https://projects.blender.org/blender/blender/pulls/128961
This generates a `license.md` file with all the relevant information about
the different libraries and their respecive licenses.
This should replace: THIRD-PARTY-LICENSES.txt
Important files:
* `make_license.py` (main script called by `make license`.
* `licenses.json` (file to add the definition of new licenses).
* `licenses/*/*.txt` (individual license files.
The `license.md` groups the libraries per license, list their
corresponding copyright information and include the complete license.
Code includes contributions from:
* Campbell Barton (multi-line parser for versions.cmake).
* Thomas Dinges (Windows support for `make license`).
Part of: !129018
This is being added straight to 4.2, prior to the `make license` command
which will use this to generate a more complete license file.
Licenses information and ambiguities worked with Dalai Felinto.
Part of !129018.
A typo in `blender_test_set_envvars` cmake function made it impossible
for calling CMake code to specify custom environment variables.
Noticed that because trying to enable `WITH_UI_TESTS` option was
running my system Blender 4.0 instead of current build...
NOTE: This also revealed another issue (missing file in our Weston
library), will be fixed soon by Linux library maintainer.
This commit adds the `-headerpad_max_install_names` to the macOS
`make deps` dependencies build linker flags.
This fixes dependency install errors where the Xcode `install_name_tool`
couldn't properly set certain rpath paths when they were exceeding a
certain length. With this flag ensuring that the maximum amount of
padding is reserved for eventual path changes.
Pull Request: https://projects.blender.org/blender/blender/pulls/128959
Bump autopep8 as there has been various improvements & bug-fixes.
Also update pycodestyle 2.8 -> 2.12.1.
autopep8 imported a module "toml" which has been superseded by
Python's own "tomllib". The "toml" module has been removed.
Ref !127553