This adds support for building both dependencies and Blender on Linux with an ARM CPU (aarch64). With the exception of OIDN, everything builds. So apart from CPU denoising, the resulting Blender build is feature complete (including Cycles rendering on both CPU and GPU).
I focused on the "make deps" workflow, since with the resulting precompiled libraries one can build Blender on Linux systems that have older packages than the ones Blender requires (e.g. Ubuntu 18.04). So the "install_deps.sh" workflow may not fully work on aarch64 still.
Prominent changes:
- Updated OpenSSL version to 1.1.1i, since that is the first one to include aarch64 support from https://github.com/openssl/openssl/pull/13218
- Updated the TBB CMake script from https://github.com/wjakob/tbb/blob/master/CMakeLists.txt, since the previous one always set the "-mrtm" compiler flag, which does not exist on aarch64
- Updated TBB patch to fix building on aarch64
- Added USD patch for aarch64 support from https://github.com/PixarAnimationStudios/USD/pull/1453
- Enabled SSE2Neon and ARM Embree on non-Apple platforms when building for aarch64
- Fixed several build errors in Cycles when building with Neon instructions enabled
Fixed a "-Werror=sign-conversion" error that occured in blenkernel/intern/object_dupli.cc due to casting from int->unsigned long long (size_t)- Fixed empty CPU name displayed in the Cycles render device option (there is no CPUID on ARM, so have resolved to using "/proc/cpuinfo" on Linux, which is not a perfect solution, but simple)
All except for the following tests complete successfully (and these are already covered in https://developer.blender.org/T78710, the node_denoise one I assume is related to missing OIDN):
- ffmpeg
- compositor_matte_test (node_cryptomatte)
- compositor_filter_test (node_denoise)
- physics_ocean