forked from blender/blender

Enabling all `make deps` dependencies with the exception of Embree and OIDN. After that, Blender can be compiled on an Apple Silicon Mac just like on any Intel based Mac. There are still compiler warnings that need to be investigated and there are probably a couple of bug still to be discovered and to be fixed. Most patches to the dependencies are simple and are about disabling SSE and setting the proper architecture to compiile for. Notable exception is Python, where I back ported a yet to be accepted PR for upstream Python: https://github.com/python/cpython/pull/21249 Cross compiling or buliding a Universal Binary is not supported yet. The minimum macOS target version for x86_64 remains at 10.13, the target for arm64 is 11.00. Differential Revision: https://developer.blender.org/D8236
131 lines
5.0 KiB
Diff
131 lines
5.0 KiB
Diff
diff -Naur src/blosc/CMakeLists.txt external_blosc/blosc/CMakeLists.txt
|
|
--- src/blosc/CMakeLists.txt 2016-02-03 10:26:28 -0700
|
|
+++ external_blosc/blosc/CMakeLists.txt 2017-03-03 09:03:31 -0700
|
|
@@ -61,6 +61,8 @@
|
|
set(SOURCES ${SOURCES} win32/pthread.c)
|
|
else(NOT Threads_FOUND)
|
|
set(LIBS ${LIBS} ${CMAKE_THREAD_LIBS_INIT})
|
|
+ set(LIBS ${LIBS} ${PTHREAD_LIBS})
|
|
+ include_directories( ${PTHREAD_INCLUDE_DIR} )
|
|
endif(NOT Threads_FOUND)
|
|
else(WIN32)
|
|
find_package(Threads REQUIRED)
|
|
diff -Naur src/CMakeLists.txt external_blosc/CMakeLists.txt
|
|
--- src/CMakeLists.txt 2016-02-03 10:26:28 -0700
|
|
+++ external_blosc/CMakeLists.txt 2017-03-03 09:03:31 -0700
|
|
@@ -17,8 +17,8 @@
|
|
# do not include support for the Snappy library
|
|
# DEACTIVATE_ZLIB: default OFF
|
|
# do not include support for the Zlib library
|
|
-# PREFER_EXTERNAL_COMPLIBS: default ON
|
|
-# when found, use the installed compression libs instead of included sources
|
|
+# PREFER_EXTERNAL_ZLIB: default ON
|
|
+# when found, use the installed zlib instead of included sources
|
|
# TEST_INCLUDE_BENCH_SINGLE_1: default ON
|
|
# add a test that runs the benchmark program passing "single" with 1 thread
|
|
# as first parameter
|
|
@@ -80,29 +80,23 @@
|
|
"Do not include support for the SNAPPY library." OFF)
|
|
option(DEACTIVATE_ZLIB
|
|
"Do not include support for the ZLIB library." OFF)
|
|
-option(PREFER_EXTERNAL_COMPLIBS
|
|
- "When found, use the installed compression libs instead of included sources." ON)
|
|
+option(PREFER_EXTERNAL_ZLIB
|
|
+ "When found, use the installed zlib instead of included sources." ON)
|
|
|
|
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
|
|
|
-if(NOT PREFER_EXTERNAL_COMPLIBS)
|
|
+if(NOT PREFER_EXTERNAL_ZLIB)
|
|
message(STATUS "Finding external libraries disabled. Using internal sources.")
|
|
-endif(NOT PREFER_EXTERNAL_COMPLIBS)
|
|
+endif(NOT PREFER_EXTERNAL_ZLIB)
|
|
|
|
|
|
if(NOT DEACTIVATE_LZ4)
|
|
- if(PREFER_EXTERNAL_COMPLIBS)
|
|
- find_package(LZ4)
|
|
- endif(PREFER_EXTERNAL_COMPLIBS)
|
|
# HAVE_LZ4 will be set to true because even if the library is
|
|
# not found, we will use the included sources for it
|
|
set(HAVE_LZ4 TRUE)
|
|
endif(NOT DEACTIVATE_LZ4)
|
|
|
|
if(NOT DEACTIVATE_SNAPPY)
|
|
- if(PREFER_EXTERNAL_COMPLIBS)
|
|
- find_package(Snappy)
|
|
- endif(PREFER_EXTERNAL_COMPLIBS)
|
|
# HAVE_SNAPPY will be set to true because even if the library is not found,
|
|
# we will use the included sources for it
|
|
set(HAVE_SNAPPY TRUE)
|
|
@@ -110,13 +104,13 @@
|
|
|
|
if(NOT DEACTIVATE_ZLIB)
|
|
# import the ZLIB_ROOT environment variable to help finding the zlib library
|
|
- if(PREFER_EXTERNAL_COMPLIBS)
|
|
+ if(PREFER_EXTERNAL_ZLIB)
|
|
set(ZLIB_ROOT $ENV{ZLIB_ROOT})
|
|
find_package( ZLIB )
|
|
if (NOT ZLIB_FOUND )
|
|
message(STATUS "No zlib found. Using internal sources.")
|
|
endif (NOT ZLIB_FOUND )
|
|
- endif(PREFER_EXTERNAL_COMPLIBS)
|
|
+ endif(PREFER_EXTERNAL_ZLIB)
|
|
# HAVE_ZLIB will be set to true because even if the library is not found,
|
|
# we will use the included sources for it
|
|
set(HAVE_ZLIB TRUE)
|
|
diff -Naur external_blosc.orig/blosc/blosc.c external_blosc/blosc/blosc.c
|
|
--- external_blosc.orig/blosc/blosc.c 2018-07-30 04:56:38 -0600
|
|
+++ external_blosc/blosc/blosc.c 2018-08-11 15:27:26 -0600
|
|
@@ -41,12 +41,7 @@
|
|
#include <inttypes.h>
|
|
#endif /* _WIN32 */
|
|
|
|
-#if defined(_WIN32)
|
|
- #include "win32/pthread.h"
|
|
- #include "win32/pthread.c"
|
|
-#else
|
|
- #include <pthread.h>
|
|
-#endif
|
|
+#include <pthread.h>
|
|
|
|
|
|
/* Some useful units */
|
|
diff --git a/blosc/shuffle.c b/blosc/shuffle.c
|
|
index 84b5095..23053b4 100644
|
|
--- a/blosc/shuffle.c
|
|
+++ b/blosc/shuffle.c
|
|
@@ -490,12 +490,12 @@ void unshuffle(size_t bytesoftype, size_t blocksize,
|
|
#else /* no __SSE2__ available */
|
|
|
|
void shuffle(size_t bytesoftype, size_t blocksize,
|
|
- uint8_t* _src, uint8_t* _dest) {
|
|
+ const uint8_t* _src, uint8_t* _dest) {
|
|
_shuffle(bytesoftype, blocksize, _src, _dest);
|
|
}
|
|
|
|
void unshuffle(size_t bytesoftype, size_t blocksize,
|
|
- uint8_t* _src, uint8_t* _dest) {
|
|
+ const uint8_t* _src, uint8_t* _dest) {
|
|
_unshuffle(bytesoftype, blocksize, _src, _dest);
|
|
}
|
|
--- a/cmake/FindSSE.cmake
|
|
+++ b/cmake/FindSSE.cmake
|
|
@@ -49,6 +49,17 @@
|
|
set(AVX_FOUND false CACHE BOOL "AVX available on host")
|
|
ENDIF (AVX_TRUE)
|
|
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Darwin")
|
|
+ execute_process(COMMAND uname -m OUTPUT_VARIABLE ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
+ message(STATUS "Detected architecture ${ARCHITECTURE}")
|
|
+ IF("${ARCHITECTURE}" STREQUAL "arm64")
|
|
+ set(SSE2_FOUND false CACHE BOOL "SSE2 available on host")
|
|
+ set(SSE3_FOUND false CACHE BOOL "SSE3 available on host")
|
|
+ set(SSSE3_FOUND false CACHE BOOL "SSSE3 available on host")
|
|
+ set(SSE4_1_FOUND false CACHE BOOL "SSE4.1 available on host")
|
|
+ set(AVX_FOUND false CACHE BOOL "AVX available on host")
|
|
+ return()
|
|
+ ENDIF()
|
|
+
|
|
EXEC_PROGRAM("/usr/sbin/sysctl -n machdep.cpu.features" OUTPUT_VARIABLE
|
|
CPUINFO)
|
|
|