Commit Graph

2612 Commits

Author SHA1 Message Date
Ankit Meel
c68338ee89 CMake/macOS/OpenMP: copy the library near tests.
For multi-config generators, tests are in `bin/tests/<config>` folder.
and OpenMP cannot be found at `@executable_path/../Resources/lib`.
So create that folder and put the library there to be used by tests.

It is not ideal to copy the library around. When minimum CMake version
is changed to 3.12, FindOpenMP by CMake can be used for this whole
block of code. Then a nice rpath based solution can be used.
2020-10-10 19:31:03 +05:30
Ankit Meel
c735aca42e CMake/macOS/OpenMP: allow use of LLVM-Clang with OpenMP.
The "Apple" part is guaranteed by the platform file.
"Clang" is enough to differentiate it from other compilers.

Came across this due to the custom built LLVM toolchain I'm using.
2020-10-10 16:28:42 +05:30
Ankit Meel
50ffcf12b2 Cleanup: CMake/macOS: remove boost from OIIO libs.
Introduced by me in {rB1f6b7387ad0177c1dec9bb83b7}.
2020-10-09 20:39:58 +05:30
Bastien Montagne
e340f943f5 Fix (unreported) install_deps: broken compilation of OIDN.
When OIDN version was bumped recently the required dependency to build
it (ISPC) was not updated accordingly.
2020-10-09 17:07:16 +02:00
Andreas Bergmeier
9aef0283a0 install_deps: Do not request elevated rights when creating directory in owned directory.
This only creates elevated directory when necessary.

Reviewed By: mont29

Differential Revision: https://developer.blender.org/D1596
2020-10-09 17:05:03 +02:00
Ankit Meel
1f6b7387ad CMake/macOS: Remove _LIBPATH, avoid link_directories.
After tests were bundled in a single executable and cycles and libmv
created their own tests, the warnings on macOS have gone over 800.
The reason is setting `*_LIBRARIES` to names of the libraries
and later using `link_directories` to link them properly.

https://cmake.org/cmake/help/latest/command/link_directories.html

> Note This command is rarely necessary and should be avoided where
> there are other choices. Prefer to pass full absolute paths to
> libraries where possible, since this ensures the correct library
> will always be linked. The find_library() command provides the
> full path, which can generally be used directly in calls to
> target_link_libraries().

Warnings like the following popup for every target/executable,
for every library it links to.
```
ld: warning: directory not found for option
'-L/Users/me/blender-build/blender/../lib/darwin/jpeg/lib/Debug'
```

The patch completes a step towards removing `link_directories` as
mentioned in TODO at several places.
The patch uses absolute paths to link libraries and removes
all `*_LIBPATH`s except `PYTHON_LIBPATH` from
`platform_apple.cmake` file. (The corner case where it's used seems
like dead code. Python is no longer shipped with that file structure.)

Also, unused code for LLVM-3.4 has been removed.
Also, guards to avoid searching libraries in system directories have
been added.

`APPLE` platform now no longer needs `setup_libdirs`,
`cycles_link_directories`, and `link_directories`.
The number of warnings now is less than 100, most of them being
deprecation ones in dependencies.

This patch depended on {rBb746179d0add}, {rB2fdbe4d05011},
{rB402a4cadba49} and {rBd7f482f88ecb}.

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D8855
2020-10-09 19:41:58 +05:30
Andreas Bergmeier
2a39b6d4d1 Cleanup: spelling
Ref D9138
2020-10-09 18:08:38 +11:00
Patrick Mours
3df90de6c2 Cycles: Add NanoVDB support for rendering volumes
NanoVDB is a platform-independent sparse volume data structure that makes it possible to
use OpenVDB volumes on the GPU. This patch uses it for volume rendering in Cycles,
replacing the previous usage of dense 3D textures.

Since it has a big impact on memory usage and performance and changes the OpenVDB
branch used for the rest of Blender as well, this is not enabled by default yet, which will
happen only after 2.82 was branched off. To enable it, build both dependencies and Blender
itself with the "WITH_NANOVDB" CMake option.

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D8794
2020-10-05 15:03:30 +02:00
Campbell Barton
3e101759b1 Cleanup: remove arguments to ENDIF in CMake files
This is an old convention that hasn't been used
by Blender or CMake distributed Find* files for a long time.
2020-10-05 16:26:06 +11:00
Campbell Barton
4053fa9fcb Fix invalid version check in 'project_source_info'
Own error in 870fcb3857
2020-10-02 13:46:41 +10:00
Campbell Barton
41d2d6da0c Cleanup: pep8 (indentation, spacing, long lines) 2020-10-02 11:59:16 +10:00
Campbell Barton
bab9de2a52 Cleanup: pep8, blank lines 2020-10-02 11:59:16 +10:00
Campbell Barton
28ebe827e6 Cleanup: trailing space 2020-10-02 11:59:16 +10:00
Ankit Meel
d5353eea5b Cleanup: CMake/FFmpeg: Fix typo in message/comment
Code added in the last commit {rB2fdbe4d0501114c716fd12bc}.
2020-09-29 00:40:31 +05:30
Ankit Meel
2fdbe4d050 CMake/Find packages: add FindFFmpeg.cmake module.
The behaviour is a bit different from other find modules:
`FFMPEG_FIND_COMPONENTS` should contain the
list of required libraries before calling `find_package(FFmpeg)`.
If not set, a default set of most common libraries is searched for:
`avcodec avdevice avfilter avformat avutil`
http://ffmpeg.org/download.html

Ref D8855

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D8918
2020-09-29 00:33:13 +05:30
Ankit Meel
8fb806ab15 Revert "Generate Xcode scheme files during configuration."
This reverts commit 5eb5978043.

The change was problematic:
*Advanced users may prefer managing schemes manually and adding only
a few that they need, instead of one for every library/executable
Blender builds.

*If CMake creates schema files, it overwrites the changes a developer
made every time CMake is run. If Xcode creates scheme files, it keeps
settings/ environment variables intact.

If someone runs CMake very frequently, pass
`-DCMAKE_XCODE_GENERATE_SCHEME=ON` to `cmake` while configuring.
2020-09-26 23:17:10 +05:30
Ankit Meel
8d34e81449 Cleanup: CMake config: set options in alphabetical older
No functional change.
2020-09-26 23:17:10 +05:30
Ankit Meel
fdf77341cd CMake: Remove duplicate WITH_GMP options.
I didn't realize there were more duplicates while committing
{rBf1fee433be92}.

Original was added in {rB83f8223543f58c3b0881a03b6e9ddffff91}.
Duplicate was added in the merge {rB9e09b5c418c0a436e3c84ccf}.

Ref D8822
2020-09-26 23:13:07 +05:30
Dalai Felinto
538d9bb41d Fixup for license changes
There was still a cmake file that was explicitly referring to the GPL3 license.

This was failing only on Windows.
2020-09-24 15:51:47 +02:00
Ankit Meel
f1fee433be GMP/CMake: Remove duplicate GMP search logic.
Original was added in rB83f8223543f58c3b0881a03b6e9ddffff91.
Duplicate was added in the merge rB9e09b5c418c0a436e3c84ccf.

Reviewed By: sergey

Differential Revision: https://developer.blender.org/D8822
2020-09-24 15:20:07 +05:30
Ray Molenkamp
b21e2cfd03 CMake: Enable WITH_POTRACE by default
All platforms have landed the libs, this can be on
by default now.
2020-09-22 08:03:50 -06:00
Sergey Sharybin
6836a40287 Make deps: Enable fPIC for Linux
Similar to D8823.
2020-09-21 12:53:24 +02:00
Ray Molenkamp
104df2453a deps: fix build issue on windows.
Windows does not build libxml2 so the dependency recently
added for mac caused a cmake error.
2020-09-18 13:52:06 -06:00
Brecht Van Lommel
7b988188dc Fix T79929: crashes with Cycles denoising on older Macs
This was a bug in OpenImageDenoise, upgrade to latest 1.2.3 which has the fix.
This in turn required a newer ispc version.

Differential Revision: https://developer.blender.org/D8892
2020-09-18 18:11:32 +02:00
Brecht Van Lommel
007e90e8c0 Fix T78793, T79707: Cycles crash on macOS with older CPUs
Embree static libraries need additional linking flags to avoid SSE and
AVX symbols getting mixed up.
2020-09-18 18:10:49 +02:00
Ankit Meel
402a4cadba CMake/LLVM: Add INCLUDE_DIRS to find package.
Ref {D8855}

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D8919
2020-09-18 19:14:01 +05:30
Ankit Meel
b746179d0a CMake/OpenSubdiv: Rename INCLUDE_DIR -> INCLUDE_DIRS.
Ref {D8855}

Unix and Apple platform files use find_package(OpenSubdiv) which sets
`OPENSUBDIV_INCLUDE_DIR` as an advanced variable, as well as
`OPENSUBDIV_INCLUDE_DIRS` which should be used usually.
Windows sets `OPENSUBDIV_INCLUDE_DIR` which is used by the rest
of the code.

This patch renames it to `_DIRS` everywhere, for it to be like other
similar variables.

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D8917
2020-09-18 19:12:26 +05:30
Sebastián Barschkis
08a3f01ddc macOS: Added potrace in platform apple cmake
Ref T80818

Reviewed By: brecht

Maniphest Tasks: T80818

Differential Revision: https://developer.blender.org/D8922
2020-09-17 17:32:39 +02:00
Ankit Meel
f37c83a12b CMake/Potrace: Fix capitalization, silence warning.
The `find_package()` callers expect the library name as `Potrace`, not
`POTRACE`.

Reviewed By: LazyDodo

Differential Revision: https://developer.blender.org/D8923
2020-09-17 19:45:20 +05:30
Brecht Van Lommel
532ac1163c Tests: bundle tests for some modules in their own executables
The ffmpeg, guardedalloc and blenlib are quite isolated and putting them in
their own executable separate from blender_test is faster for development than
linking the entire blender_tests executable.

For Cycles, this also bundles all the unit tests into one executable.

Ref T79958

Differential Revision: https://developer.blender.org/D8714
2020-09-17 12:29:19 +02:00
Brecht Van Lommel
f9fcb25d52 CMake: clean up setting of platform specific linker flags
Set flags directly on the target, and use common function for all cases.
This refactoring helps with the next commit for test executables.

Ref D8714
2020-09-17 12:29:19 +02:00
Sergey Sharybin
157cd6c6e8 Make deps: Compile own nasm for Linux
This solves annoyance that the official RPM repository of nasm requires
newer version of rpm tool compared to what is shipped by default with
centOS 7.

Differential Revision: https://developer.blender.org/D8905
2020-09-17 11:02:27 +02:00
Bastien Montagne
c5c22d1ce1 Install_deps: update to add pugixml and potrace new deps.
Also fixed OpenVDB maximum version, it appears that even 7.1 is not
compatible with 7.0?

Re T80818 and D8628.
2020-09-16 11:23:58 +02:00
Ankit Meel
a4c5811e21 ASan/macOS: fix incomplete C/CXX compiler flags.
While testing for {rB40dcf686f04f}, compiler flags got mixed up and
non-working ASan configuration was committed.

Platform file, which is `include`d after the `CMAKE_C_FLAGS_DEBUG` etc.,
are set, overwrites those flags instead of appending to them. To fix this,
`PLATFORM_CFLAGS` is used to pass the `-fsanitize=*` flags to the C/C++
compiler.

Tested on fresh build using both Xcode and Ninja, with & without ccache.

Also silence a clang warning for multi-config generators:
the object size sanitizer has no effect at -O0, but is explicitly
enabled: -fsanitize=object-size [-Winvalid-command-line-argument]

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D8879
2020-09-16 02:18:59 +05:30
Ankit
84032fd110 GMP/macOS: silence "PIE disabled" linker warning.
The change builds GMP with `--with-pic` flag on non-arm architecture.

The warning:
ld: warning: PIE disabled. Absolute addressing
(perhaps -mdynamic-no-pic) not allowed in code signed PIE, but used in
___gmpn_divexact_1 from lib/darwin/gmp/lib/libgmp.a(dive_1.o). To fix
this warning, don't compile with -mdynamic-no-pic or link with
-Wl,-no_pie

Reviewed By: sebbas

Differential Revision: https://developer.blender.org/D8823
2020-09-16 02:05:51 +05:30
Ray Molenkamp
2eec6ec793 Deps: Add potrace as a new library dependency
For work the GP team plans to land soon (T79877) potrace was taken
on as an additional optional dependency.

This diff adds building the library to the deps builder and takes
care of the integration into the build-system with the `WITH_POTRACE`
cmake switch.

Differential Revision: https://developer.blender.org/D8662

Reviewed by: brecht, sergey
2020-09-15 13:16:37 -06:00
Campbell Barton
dd25d47e8a Cleanup: add missing headers to CMake, formatting 2020-09-15 22:53:44 +10:00
Sebastián Barschkis
177759d818 Make deps: Updated required list of dependencies for macOS
It was possible to drop `nasm` from the list of required macOS dependencies. However, `pkg-config` had to be added - it was required before but probably no one noticed this.

In order to build `external_clang` successfully, `external_xml2` had to be added to the clang dependencies (`c-index-test` was failing).

Note: On Linux `make deps` still seems to require `nasm` installed via apt.

Reviewed By: sergey

Differential Revision: https://developer.blender.org/D8870
2020-09-14 17:38:06 +02:00
Tyler Alden Gubala
07d7028dd0 CMake: various fixes for building Python module
* Don't link against Mesa OpenGL software emulation libraries from the
  lib folder, they are not intended to be used for building, only install.
* Don't use static OpenMP library by default, it's usually not built to
  work in shared libraries.
* Disable jemalloc on all platforms, the reason it fails is not specific
  to Linux.

Differential Revision: https://developer.blender.org/D8827
2020-09-10 19:40:54 +02:00
Campbell Barton
38b1450848 Cleanup: tabs to spaces 2020-09-08 09:26:35 +10:00
Ankit
5eb5978043 Generate Xcode scheme files during configuration.
Every time CMake is re-run, Xcode shows a popup asking if
user wants to manage schemes automatically or manually.
Building Blender wiki page recommends managing schemes automatically.

This change sets the default behavior to "automatically" and generates
the .xcscheme files while CMake is running, instead of hogging Xcode
later on. With tests enabled, the number of schemes is 203.

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D8820
2020-09-08 00:26:27 +05:30
Campbell Barton
870fcb3857 Cleanup: change Python version checks to include newer versions 2020-09-07 22:58:16 +10:00
Ray Molenkamp
c7b00ef625 MSVC: Fix cmake warnings with MSVC updates
CMake caches the location of the CRT runtime in the
MSVC_REDIST_DIR variable, and uses it to copy the required
dll's during the install phase.

This variable is only initialized when it does not exist.
Leading to issues when compiler updates are installed and
the compiler version slightly changes, cmake still looks
in the old location for the runtime and warns about the
files not existing.

This change fixes the issue by checking if the redist dir
exists and if not unsets it so InstallRequiredSystemLibraries
can have another go at figuring out where they live.
2020-09-03 12:39:49 -06:00
Stefan Werner
c8b84a13a5 Make deps: Disabled assembly for GMP on Apple/arm64.
This appears to be a configuration for which GMP has no assembly,
yet the default configure script tries to build it.
2020-09-03 10:11:59 +02:00
Sybren A. Stüvel
23767937ef USD: remove library initialisation hack
Remove the hack for library initialisation; this is no longer necessary
as the required information can be passed to the USD library after its
static initialisers have run.

This new approach is compatible with both the patched and original USD
library. This means that platform maintainers don't need to rebuild the
USD library until the next upgrade.

Manifest Task: https://developer.blender.org/T80320
2020-09-01 17:29:01 +02:00
Sybren A. Stüvel
07899ddd22 Fix double include of gmp.cmake
This fixes `make deps` complaining about the `extern_gmp` project being
defined twice.
2020-09-01 12:39:58 +02:00
Sergey Sharybin
c2df6658ee CMake: Fix linking errors with gmp library
gmpxx library (C++ version of gmp) uses symbols from libgmp, which means
the libgmp is to be passed to the linker after libgmpxx.
2020-09-01 11:31:47 +02:00
Ray Molenkamp
7056f180d3 cleanup: Fix GMP spacing in cmake configurations
It now follows the spacing around it.
2020-08-31 09:42:58 -06:00
Sybren A. Stüvel
f5866f484f Remove patch for HDF5 library
Delete `hdf5.diff`, because it's no longer used. Since Blender 2.90 the
optional support for HDF5 has been dropped, but this file accidentally
wasn't deleted.

See 0102b9d47e and 0c38436227.

No functional changes.
2020-08-31 17:32:28 +02:00
Howard Trickey
7844486e47 Change cmake configs for full and release to enable WITH_GMP. 2020-08-28 11:49:10 -04:00