Commit Graph

597 Commits

Author SHA1 Message Date
Anthony Roberts
ace957a124 Windows: Guard VsDevCmd env var check to ARM64 only
This is a "quick fix" guard check to unbreak things - I'll put a proper checking mechanism in later that checks if it's undefined etc

Pull Request: https://projects.blender.org/blender/blender/pulls/134512
2025-02-13 17:42:49 +01:00
Anthony Roberts
bf53ee96e5 Windows ARM64: 4.4 Library Updates
Updates the prebuilt libs to the versions used in 4.4

Also adds a check to ensure users are using at least the version of VS2022, that was used to compile the libraries

Pull Request: https://projects.blender.org/blender/blender/pulls/134405
2025-02-13 16:51:19 +01:00
Jonas Holzman
567669d3ff Build: Remove unused PCRE dependency
OpenCollada used to rely on PCRE (a Perl Regexp library). Since
switching to Aras' OpenCollada fork (#122270), the library is no
longer needed, but is still required as a dependency.

This patch cleans this up by completely removing it from our build
system and linux system package installation script. This also lets
us remove it from our pre-compiled library platform repos, making the
process of recompiling our libraries from scratch easier as it wasn't
compiled by our dependency builder anymore.

Pull Request: https://projects.blender.org/blender/blender/pulls/134310
2025-02-10 01:22:56 +01:00
Ray Molenkamp
227750926d CMake: Windows add opencolorio to PLATFORM_ENV_BUILD_DIRS
required to run oiiotool during the tests.
2025-02-09 10:33:20 -07:00
Brecht Van Lommel
f9c4ad1477 Build: Auto clear CMake cache variables for 4.4 library update
And remove some old checks that are no longer relevant.

Pull Request: https://projects.blender.org/blender/blender/pulls/134244
2025-02-07 21:23:58 +01:00
Ray Molenkamp
1540817576 For VFX platform 2025 and more.
Boost (removed!)
Cython 3.0.11
Expat 2.6.4
GMP 6.3.0
MaterialX 1.39.2
Nanobind 2.1.0 (new, for OpenVDB)
NumPy 1.26.4
OpenColorIO 2.4.1
OpenEXR 3.3.2
OpenImageIO 3.0.3.1
OpenVDB 12.0.0
OSL 1.14.3-beta
Python 3.11.11
Robinmap 1.3.0
TBB 2021.13.0
TIFF 4.7.0
USD 25.02
libxml2 2.13.5
zlib 1.3.1

Co-authored-by: Brecht Van Lommel <brecht@blender.org>
Co-authored-by: Jonas Holzman <jonas@holzman.fr>
Co-authored-by: Sebastian Parborg <sebastian@blender.org>

Ref #128577

Pull Request: https://projects.blender.org/blender/blender/pulls/134178
2025-02-06 14:57:02 +01:00
Xavier Hallade
bdb093f58d Build: upgrade DPC++/Level-Zero to 6.0.0-rc1/1.19.2 releases
including a backport of device image compression:
https://github.com/intel/llvm/pull/15124 that can be enabled by adding
`--offload-compress` compiler option.
2025-02-03 20:58:00 +01:00
Ankit Meel
301e298040 Build: Remove macOS mold and lld linkers support
The mold linker doesn't support macOS anymore. The sold linker
gets no new releases since the Xcode 15+ linker is at par with sold.

https://github.com/bluewhalesystems/sold/issues/50#issuecomment-2076249631
https://github.com/rui314/mold/issues/189#issuecomment-1495288926

Pull Request: https://projects.blender.org/blender/blender/pulls/133634
2025-01-30 18:21:38 +01:00
Aras Pranckevicius
73f8e4c3c6 Build: echo currently compiled file names when using clang-cl on Windows
MSVC does this by default, and is a good way to see build progress
indication, when using msbuild. clang-cl also got that option back
in 2018, but it is off by default.

Pull Request: https://projects.blender.org/blender/blender/pulls/133810
2025-01-30 13:43:29 +01:00
Lukas Stockner
c997e61414 Cycles: Bump minimum OSL version to 1.13.4
That version has a bunch of API changes, so by dropping support for older
versions we can remove old compatibility code.
Also, that version is required for OptiX support, so building a fully-featured
Cycles wasn't possible with older OSL anyways.

Pull Request: https://projects.blender.org/blender/blender/pulls/133746
2025-01-29 21:17:21 +01:00
Ray Molenkamp
98addc0191 Windows: Minor clang-cl changes
- WITH_WINDOWS_EXTERNAL_MANIFEST is now required even for ninja
builds, this previously was not the case. so just apply it
across all build flavours on windows.

- fmsc-version=1922 is no longer needed, was required back when
support for clang on windows landed, is fine without it now.

- /MP gives better build performance when building from the IDE
makes no difference for a ninja build which wasn't struggling in
that department anyhow.
2025-01-22 13:18:57 -07:00
Brecht Van Lommel
c749f6c376 Cleanup: Remove unnecessary usage of Boost in the build system
* Some libraries like Alembic and OpenColorIO for a long time removed
  header dependencies on Boost.
* No need to have BOOST_LIBRARIES anymore, only BOOST_PYTHON_LIBRARIES
  is a direct dependency through USD headers.
* OpenVDB is no longer a static library, no need to link its dependencies.

Pull Request: https://projects.blender.org/blender/blender/pulls/133424
2025-01-22 10:02:22 +01:00
Brecht Van Lommel
820f261371 Refactor: Replace Boost Locale for translation
Use code adapted from boost::locale to implement locale name parsing
and .mo file reading ourselves.

Together with #132142 this removes the last direct Blender dependency
on Boost.

Pull Request: https://projects.blender.org/blender/blender/pulls/133347
2025-01-22 09:00:32 +01:00
Brecht Van Lommel
cd7e5f0357 Build: Link to fewer Boost libraries
There were still a bunch of indirect dependencies from when static
linking was used. No need to link Blender against them.

Pull Request: https://projects.blender.org/blender/blender/pulls/132914
2025-01-13 10:40:18 +01:00
Sebastian Parborg
bb53214661 Audaspace: Enforce minimal pipewire library version
While I implemented pipewire support I forgot that some of the functions I use is not available in older pipewire versions.

This adds proper library version sanity checks for pipewire.

Pull Request: https://projects.blender.org/blender/blender/pulls/131610
2025-01-06 18:19:08 +01:00
Campbell Barton
77041084cd Cleanup: quiet uninitialised variable warnings in CMake 2025-01-06 17:57:11 +11:00
Campbell Barton
c27bf6bef8 Cleanup: CMake indentation 2025-01-06 12:48:51 +11:00
Campbell Barton
33e38c605f Cleanup: correct indentation for CMake files, strip trailing space 2025-01-03 13:23:38 +11:00
Campbell Barton
5fbd22ea67 CMake: mark non WITH_* variables as advanced
Also correct case for Tiff_DIR variable which wasn't being
marked as advanced.
2025-01-02 15:03:52 +11:00
Sebastian Parborg
2ec719447e Cmake: Add Pipewire support
Pull Request: https://projects.blender.org/blender/blender/pulls/126091
2024-12-03 16:26:01 +01:00
Ray Molenkamp
205fba598d CMake: Windows: Fix grammar mistake in last commit
Spotted by the eagle eyed @ThomasDinges
2024-11-21 14:29:28 -07:00
Ray Molenkamp
aed5906544 CMake: Windows: Update MSVC 17.6 Blacklist message
Given 17.7 has been out for quite while, it doesn't make a
whole lot of sense to still tell people to downgrade their
compiler.
2024-11-21 12:17:01 -07:00
Ray Molenkamp
2dd0946e97 CMake: Windows: Revert flag change that snuck into previous commit
that one should not have been committed.
2024-11-19 19:41:55 -07:00
Ray Molenkamp
536937b4d4 CMake: Windows: Fix CMP0177 policy warnings
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.
2024-11-19 18:53:41 -07:00
Brecht Van Lommel
b74dfa8cfc Build: Changes for make deps to work on Linux arm64 again
This is not an officially supported platform, but it was working before
so might as well keep it up to date.

* Tweak logic for various BLENDER_PLATFORM_ARM checks
* Use linux_arm64 name for folders, matching Windows and macOS
* CUDA is enabled, SYCL and HIP are not
* Tested to work on Rocky Linux 8
2024-09-24 15:54:47 +02:00
Sahar A. Kashi
26ed4d3892 Cycles: Linux Support for HIP-RT
This change switches Cycles to an opensource HIP-RT library which
implements hardware ray-tracing. This library is now used on
both Windows and Linux. While there should be no noticeable changes
on Windows, on Linux this adds support for hardware ray-tracing on
AMD GPUs.

The majority of the change is typical platform code to add new
library to the dependency builder, and a change in the way how
ahead-of-time (AoT) kernels are compiled. There are changes in
Cycles itself, but they are rather straightforward: some APIs
changed in the opensource version of the library.

There are a couple of extra files which are needed for this to
work: hiprt02003_6.1_amd.hipfb and oro_compiled_kernels.hipfb.
There are some assumptions in the HIP-RT library about how they
are available. Currently they follow the same rule as AoT
kernels for oneAPI:
- On Windows they are next to blender.exe
- On Linux they are in the lib/ folder

Performance comparison on Ubuntu 22.04.5:
```
GPU: AMD Radeon PRO W7800
Driver: amdgpu-install_6.1.60103-1_all.deb
                       main         hip-rt
attic                  0.1414s      0.0932s
barbershop_interior    0.1563s      0.1258s
bistro                 0.2134s      0.1597s
bmw27                  0.0119s      0.0099s
classroom              0.1006s      0.0803s
fishy_cat              0.0248s      0.0178s
junkshop               0.0916s      0.0713s
koro                   0.0589s      0.0720s
monster                0.0435s      0.0385s
pabellon               0.0543s      0.0391s
sponza                 0.0223s      0.0180s
spring                 0.1026s      1.5145s
victor                 0.1901s      0.1239s
wdas_cloud             0.1153s      0.1125s
```

Co-authored-by: Brecht Van Lommel <brecht@blender.org>
Co-authored-by: Ray Molenkamp <github@lazydodo.com>
Co-authored-by: Sergey Sharybin <sergey@blender.org>

Pull Request: https://projects.blender.org/blender/blender/pulls/121050
2024-09-24 14:35:24 +02:00
Campbell Barton
0fc27c8d81 Cleanup: spelling in comments 2024-09-20 13:14:57 +10:00
Lukas Tönne
d918c22fcc Revert "CMake: suppress warnings building with mold on Linux"
This reverts commit 0a0551cf26.

This commit broke building on linux with mold. It seems to never
generate the necessary file when something other than the `blender`
binary is the first thing being built.
2024-09-17 10:48:16 +02:00
Campbell Barton
0a0551cf26 CMake: suppress warnings building with mold on Linux
Support manipulating symbols_unix.map using symbols_unix.map.cmake
script.

Currently this removes symbols that generate noisy warnings with the
mold linker.
2024-09-17 14:42:31 +10:00
Campbell Barton
c6afb0e270 Core: remove sdlew/WITH_SDL_DYNLOAD & disable SDL by default
Disable dynamic SDL loading as well as disable SDL for release builds.

This was only used for audio output which can already use OpenAL
if there are back-ends not natively supported by Blender.

- Remove extern/sdlew/
- Remove the WITH_SDL_DYNLOAD build option.
- Remove `bpy.app.sdl.available`.

Ref !127554
2024-09-13 22:44:35 +10:00
Aras Pranckevicius
41cdac536e Cleanup: remove "64 bit compiler detected" cmake message
On Windows, if compiler is 32 bit there already is a fatal error. If it
is 64 bit (normal case, and any case when build can actually work), it
feels like "64 bit compiler detected" status message does not indicate
anything useful.

Pull Request: https://projects.blender.org/blender/blender/pulls/127484
2024-09-12 14:50:13 +02:00
Campbell Barton
08d5eb8f9c Cleanup: cmake formatting 2024-08-21 23:20:34 +10:00
Anthony Roberts
b4c9986447 Windows: Enable external manifest by default on ARM64
This also fixes tests not having external manifests when the option is enabled, and properly detects clang-cl in the libdir setup.

Pull Request: https://projects.blender.org/blender/blender/pulls/126563
2024-08-21 15:01:04 +02:00
Campbell Barton
6e823d3f6f CMake: library path reference for PLATFORM_ENV_BUILD unix/macos (#2)
Correct fix from [0].

The previous fix seemed to work but on further testing the environment
wasn't properly expanded. Using "$$" prefix resolves the problem.

[0]: b0ec4bba70
2024-08-16 17:13:05 +10:00
Campbell Barton
bd4e535009 CMake: fail with an error if wayland-scanner can't be found 2024-08-15 21:50:46 +10:00
Campbell Barton
b0ec4bba70 CMake: library path reference for PLATFORM_ENV_BUILD on unix & macos
The value used for the the library path was being evaluated by CMake
instead of forwarding the value to the shell expression (as intended).

This meant any build-time binaries that depended on the environments
library-path would failed to run.
2024-08-15 21:50:46 +10:00
Anthony Roberts
9576576039 Windows: Enable clang-cl for ARM64
This gets Windows ARM64 to compile with clang-cl, which gives up to 40% performance improvements in certain scenes rendered with cycles, compared to MSVC.

This is all tested using LLVM 18.1.8 and a VS2022 `vcvarsall` window.

Subsequent PRs with various lib version updates, etc to go in at a later point.

Pull Request: https://projects.blender.org/blender/blender/pulls/124182
2024-08-12 16:50:07 +02:00
Jesse Yurkovich
ec4fc2d34a CMake: Modernize the optional TBB dependency
This continues the cmake modernization effort and introduces support for
allowing our optional dependencies to integrate properly. TBB is added
here as it's proven troublesome to maintain correctly.

Currently the only Blender project which uses the TBB headers directly
is `blenlib`.  However, all downstream projects which require blenlib as
their dependency, and wish to properly make use of its threading
facilities, needed to define various TBB items in their CMake files. Not
only is this unnecessary and arcane, but several projects didn't do this
and ended up not using threading as well as producing ODR violations
along the way[1].

This PR makes TBB a modern dependency and exposes it PUBLIC'ly from
`blenlib`.  All downstream projects which depend on blenlib will now
receive everything they require from TBB automatically. This includes
the `WITH_TBB` define, the headers, and the library itself.

[1] blender/blender@05241f47f5

Pull Request: https://projects.blender.org/blender/blender/pulls/124916
2024-07-19 23:30:56 +02:00
Ben-7
be6d82a485 Cmake: Improve finding openmp with clang-cl compiler on windows
When having several clang versions installed cmake would default
to the last llvm directory in the registry when finding the openmp
libraries. Two problems with that are :

1- The registry entry may not exist
2- Even if it exists it may not point to the right folder for the
   Current compiler.

This PR changes the behaviour to look relative to the clang binary
to find the openmp libraries.

Pull Request: https://projects.blender.org/blender/blender/pulls/125101
2024-07-19 20:03:47 +02:00
Bastien Montagne
2afcc9246f Fix (unreported) CMake choosing system wayland paths over pre-built ones.
`find_path` searches for `HINTS` before default system paths, while
`PATHS` are searched last. See also
https://cmake.org/cmake/help/latest/command/find_path.html
2024-06-26 12:17:40 +02:00
Brecht Van Lommel
3b4d03968b Build: Fix various issue for 4.2 macOS library update
* Auto patch MaterialX cmake config for stripping version from dylib
* Add x265 library
* Fix harvest of OIDN cmake config

Ref #123348
2024-06-21 17:17:21 +02:00
Brecht Van Lommel
cddcef6500 Build: Support building with older ffmpeg precompiled libraries
For more convenient bisecting
2024-06-17 14:13:19 +02:00
Campbell Barton
8ab246ddde Build: fix linking FFMPEG & x265 on Linux 2024-06-15 14:15:53 +10:00
Brecht Van Lommel
87dae7d800 Build: Clean up oneAPI cmake messages
* Always define root directories in LIBDIR even when not needed,
  to silence some warnings.
* Only show warnings about not finding libs when oneAPI is enabled.
* Prefix message for context.
2024-06-12 19:21:43 +02:00
Ray Molenkamp
f510722a20 deps: change opencollada to maintained branch
the branch @aras_p maintains has either updated or removed
all problematic dependencies

Pull Request: https://projects.blender.org/blender/blender/pulls/122270
2024-06-06 08:32:33 -06:00
Xavier Hallade
d8b3f852b9 Build: Upgrade DPC++ compiler to 5.2 release 2024-06-04 18:25:57 +02:00
Sergey Sharybin
a7793a871b Libs: Enable threads support for FFTW library
It originally came from the Compositor work about optimizing Glare
node (#121653), but it might be used in more places later as well.

This PR only contains changes to the build system, the library
itself needs to be re-compiled.

Ref #118455

Pull Request: https://projects.blender.org/blender/blender/pulls/121816
2024-05-24 10:08:14 +02:00
Ray Molenkamp
a602e4fa40 CMake: Fix ASAN builds on windows
When building with asan enabled on windows tools such as
msgfmt will run before the install phase which normally
copies the required asan dlls next to the binaries preventing
msgfmt from stating and causing a build error.

This change adds the MSVC path to the PLATFORM_ENV_BUILD_DIRS
so when we run the various tools the asan shared libs can
be found.
2024-05-07 12:19:20 -06:00
Campbell Barton
0ceefd6358 Cleanup: cmake syntax 2024-04-19 15:50:26 +10:00
Ray molenkamp
39c901407e MSVC: Add cmake option for external manifests
This PR adds a cmake option `WITH_WINDOWS_EXTERNAL_MANIFEST`
which is off by default which addresses the following 2 problems:

The CI env occasionally fails to link the manifest into blender.exe
with mt.exe getting file in use error. The solutions mentioned online
vary wildly between, just rebuild, turn off your AV, use this magic
switch. None of them actually point to a root cause we can address.

When building blender with clang and the visual studio generator
it also somehow doesn't embed the manifest.

If the bots stay problematic this option can be turned on for the CI
environment, and will be automatically turned on when it detects clang
and the visual studio generator being used.

Pull Request: https://projects.blender.org/blender/blender/pulls/111683
2024-04-18 16:57:04 +02:00