From 886486615b35ee7bc6e48d2a4299f1254939f73b Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 1 Feb 2021 22:34:16 +0100 Subject: [PATCH] macOS: use precompiled libraries for arm64 build Standard wiki build instructions for building Blender on macOS can now be used on Macs with ARM processors. This contains all libraries except for Embree and OpenImageDenoise, so Cycles performance does not yet have full performance and features in this build. An x86-64 build is likely to still render faster than arm64 until Embree is added. Uses the new lib/darwin_arm64 folder. For simplicity and to keep download size under control, both for end users and builders, we are not planning to ship universal binaries. So this is a separate folder from lib/darwin. Ref T78710 Differential Revision: https://developer.blender.org/D10276 --- GNUmakefile | 11 ++++++++--- build_files/cmake/platform/platform_apple.cmake | 6 +++++- build_files/utils/make_update.py | 8 +++++++- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/GNUmakefile b/GNUmakefile index 532f9cb9bde..98463891407 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -183,8 +183,13 @@ endif ifndef DEPS_INSTALL_DIR DEPS_INSTALL_DIR:=$(shell dirname "$(BLENDER_DIR)")/lib/$(OS_NCASE) - ifneq ($(OS_NCASE),darwin) - # Add processor type to directory name + # Add processor type to directory name, except for darwin x86_64 + # which by convention does not have it. + ifeq ($(OS_NCASE),darwin) + ifneq ($(CPU),x86_64) + DEPS_INSTALL_DIR:=$(DEPS_INSTALL_DIR)_$(CPU) + endif + else DEPS_INSTALL_DIR:=$(DEPS_INSTALL_DIR)_$(CPU) endif endif @@ -198,7 +203,7 @@ endif # in libraries, or python 2 for running make update to get it. ifeq ($(OS_NCASE),darwin) ifeq (, $(shell command -v $(PYTHON))) - PYTHON:=../lib/darwin/python/bin/python3.7m + PYTHON:=$(DEPS_INSTALL_DIR)/python/bin/python3.7m ifeq (, $(shell command -v $(PYTHON))) PYTHON:=python endif diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake index 09a9a6052d2..8a7792bd886 100644 --- a/build_files/cmake/platform/platform_apple.cmake +++ b/build_files/cmake/platform/platform_apple.cmake @@ -72,7 +72,11 @@ if(WITH_JACK) endif() if(NOT DEFINED LIBDIR) - set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin) + if("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "x86_64") + set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin) + else() + set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin_${CMAKE_OSX_ARCHITECTURES}) + endif() else() message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}") endif() diff --git a/build_files/utils/make_update.py b/build_files/utils/make_update.py index 53f6b3d447f..2b8c7af98fb 100755 --- a/build_files/utils/make_update.py +++ b/build_files/utils/make_update.py @@ -8,6 +8,7 @@ import argparse import os +import platform import shutil import sys @@ -49,7 +50,12 @@ def svn_update(args, release_version): # Checkout precompiled libraries if sys.platform == 'darwin': - lib_platform = "darwin" + if platform.machine() == 'x86_64': + lib_platform = "darwin" + elif platform.machine() == 'arm64': + lib_platform = "darwin_arm64" + else: + lib_platform = None elif sys.platform == 'win32': # Windows checkout is usually handled by bat scripts since python3 to run # this script is bundled as part of the precompiled libraries. However it