[Bf-blender-cvs] [9b9cbabd96f] mac_arm64: macOS: Port to arm64.
Stefan Werner
noreply at git.blender.org
Sat Jul 11 00:35:29 CEST 2020
Commit: 9b9cbabd96f5f3c8911c3670cd8ddd6789619c1a
Author: Stefan Werner
Date: Sat Jul 11 00:33:39 2020 +0200
Branches: mac_arm64
https://developer.blender.org/rB9b9cbabd96f5f3c8911c3670cd8ddd6789619c1a
macOS: Port to arm64.
Untested and not fully featured.
Missing are:
* several Python modules, notably ctypes and numpy
* Embree
* OpenImageDeniose
* Audaspace (depends on numpy)
To build it, configure with the following flags:
OSX_ARCHITECTURES=arm64
CMAKE_OSX_ARCHITECTURES=arm64
WITH_CYCLES_EMBREE=OFF
WITH_CPU_SSE=OFF
WITH_AUDASPACE=OFF
===================================================================
M CMakeLists.txt
M build_files/build_environment/CMakeLists.txt
M build_files/build_environment/cmake/clang.cmake
M build_files/build_environment/cmake/harvest.cmake
M build_files/build_environment/cmake/opencolorio.cmake
M build_files/build_environment/cmake/openmp.cmake
M build_files/build_environment/cmake/options.cmake
M build_files/build_environment/cmake/png.cmake
M build_files/build_environment/cmake/python.cmake
M build_files/build_environment/cmake/sqlite.cmake
M build_files/build_environment/cmake/ssl.cmake
M build_files/build_environment/cmake/ssl.conf
M build_files/build_environment/cmake/theora.cmake
M build_files/build_environment/cmake/vpx.cmake
M build_files/build_environment/cmake/x264.cmake
M build_files/build_environment/patches/blosc.diff
M build_files/build_environment/patches/opencollada.diff
A build_files/build_environment/patches/openmp.diff
A build_files/build_environment/patches/png.diff
M build_files/build_environment/patches/python_linux.diff
A build_files/build_environment/patches/sqlite.diff
A build_files/build_environment/patches/theora.diff
M build_files/build_environment/patches/usd.diff
M build_files/cmake/platform/platform_apple.cmake
===================================================================
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e03ebb578fa..3b6ad316c9d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -900,7 +900,7 @@ if(MSVC)
# endianess-detection and auto-setting is counterproductive
# so we just set endianness according CMAKE_OSX_ARCHITECTURES
-elseif(CMAKE_OSX_ARCHITECTURES MATCHES i386 OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
+elseif(CMAKE_OSX_ARCHITECTURES MATCHES i386 OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64 OR CMAKE_OSX_ARCHITECTURES MATCHES arm64)
add_definitions(-D__LITTLE_ENDIAN__)
elseif(CMAKE_OSX_ARCHITECTURES MATCHES ppc OR CMAKE_OSX_ARCHITECTURES MATCHES ppc64)
add_definitions(-D__BIG_ENDIAN__)
diff --git a/build_files/build_environment/CMakeLists.txt b/build_files/build_environment/CMakeLists.txt
index 7e7c5d58d71..667125bc173 100644
--- a/build_files/build_environment/CMakeLists.txt
+++ b/build_files/build_environment/CMakeLists.txt
@@ -85,18 +85,23 @@ include(cmake/osl.cmake)
include(cmake/tbb.cmake)
include(cmake/openvdb.cmake)
include(cmake/python.cmake)
-include(cmake/python_site_packages.cmake)
-include(cmake/package_python.cmake)
-include(cmake/numpy.cmake)
+# Temporarily disabled until we get a full python building on macOS/arm64
+if((NOT APPLE) OR ("${OSX_ARCHITECTURES}" EQUAL "x86_64"))
+ include(cmake/python_site_packages.cmake)
+ include(cmake/package_python.cmake)
+ include(cmake/numpy.cmake)
+endif()
include(cmake/usd.cmake)
if(UNIX)
# Rely on PugiXML compiled with OpenImageIO
else()
include(cmake/pugixml.cmake)
endif()
-include(cmake/ispc.cmake)
-include(cmake/openimagedenoise.cmake)
-include(cmake/embree.cmake)
+if((NOT APPLE) OR ("${OSX_ARCHITECTURES}" EQUAL "x86_64"))
+ include(cmake/ispc.cmake)
+ include(cmake/openimagedenoise.cmake)
+ include(cmake/embree.cmake)
+endif()
if(NOT APPLE)
include(cmake/xr_openxr.cmake)
endif()
diff --git a/build_files/build_environment/cmake/clang.cmake b/build_files/build_environment/cmake/clang.cmake
index f7dfd434d4a..8b928f968fd 100644
--- a/build_files/build_environment/cmake/clang.cmake
+++ b/build_files/build_environment/cmake/clang.cmake
@@ -30,6 +30,11 @@ else()
set(CLANG_GENERATOR "Unix Makefiles")
endif()
+if(APPLE)
+ set(CLANG_EXTRA_ARGS ${CLANG_EXTRA_ARGS}
+ -DLIBXML2_LIBRARY=${LIBDIR}/xml2/lib/libxml2.a
+ )
+endif()
ExternalProject_Add(external_clang
URL ${CLANG_URI}
diff --git a/build_files/build_environment/cmake/harvest.cmake b/build_files/build_environment/cmake/harvest.cmake
index 33b7f9db192..5e9641181a3 100644
--- a/build_files/build_environment/cmake/harvest.cmake
+++ b/build_files/build_environment/cmake/harvest.cmake
@@ -132,8 +132,12 @@ harvest(openimageio/bin openimageio/bin "maketx")
harvest(openimageio/bin openimageio/bin "oiiotool")
harvest(openimageio/include openimageio/include "*")
harvest(openimageio/lib openimageio/lib "*.a")
-harvest(openimagedenoise/include openimagedenoise/include "*")
-harvest(openimagedenoise/lib openimagedenoise/lib "*.a")
+if((NOT APPLE) OR ("${OSX_ARCHITECTURES}" EQUAL "x86_64"))
+ harvest(openimagedenoise/include openimagedenoise/include "*")
+ harvest(openimagedenoise/lib openimagedenoise/lib "*.a")
+ harvest(embree/include embree/include "*.h")
+ harvest(embree/lib embree/lib "*.a")
+endif()
harvest(openjpeg/include/openjpeg-2.3 openjpeg/include "*.h")
harvest(openjpeg/lib openjpeg/lib "*.a")
harvest(opensubdiv/include opensubdiv/include "*.h")
@@ -168,8 +172,6 @@ harvest(vpx/lib ffmpeg/lib "*.a")
harvest(webp/lib ffmpeg/lib "*.a")
harvest(x264/lib ffmpeg/lib "*.a")
harvest(xvidcore/lib ffmpeg/lib "*.a")
-harvest(embree/include embree/include "*.h")
-harvest(embree/lib embree/lib "*.a")
harvest(usd/include usd/include "*.h")
harvest(usd/lib/usd usd/lib/usd "*")
harvest(usd/plugin usd/plugin "*")
diff --git a/build_files/build_environment/cmake/opencolorio.cmake b/build_files/build_environment/cmake/opencolorio.cmake
index 502e9a6c03b..e5f1c12077c 100644
--- a/build_files/build_environment/cmake/opencolorio.cmake
+++ b/build_files/build_environment/cmake/opencolorio.cmake
@@ -30,6 +30,13 @@ set(OPENCOLORIO_EXTRA_ARGS
-DOCIO_STATIC_JNIGLUE=OFF
)
+if(APPLE AND NOT("${OSX_ARCHITECTURES}" EQUAL "x86_64"))
+ set(OPENCOLORIO_EXTRA_ARGS
+ ${OPENCOLORIO_EXTRA_ARGS}
+ -DOCIO_USE_SSE=OFF
+ )
+endif()
+
if(WIN32)
set(OCIO_PATCH opencolorio_win.diff)
set(OPENCOLORIO_EXTRA_ARGS
diff --git a/build_files/build_environment/cmake/openmp.cmake b/build_files/build_environment/cmake/openmp.cmake
index 05b590e4926..ec0756a6693 100644
--- a/build_files/build_environment/cmake/openmp.cmake
+++ b/build_files/build_environment/cmake/openmp.cmake
@@ -22,6 +22,7 @@ ExternalProject_Add(external_openmp
DOWNLOAD_DIR ${DOWNLOAD_DIR}
URL_HASH MD5=${OPENMP_HASH}
PREFIX ${BUILD_DIR}/openmp
+ PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/openmp/src/external_openmp < ${PATCH_DIR}/openmp.diff
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/openmp ${DEFAULT_CMAKE_FLAGS}
INSTALL_COMMAND cd ${BUILD_DIR}/openmp/src/external_openmp-build && install_name_tool -id @executable_path/../Resources/lib/libomp.dylib runtime/src/libomp.dylib && make install
INSTALL_DIR ${LIBDIR}/openmp
diff --git a/build_files/build_environment/cmake/options.cmake b/build_files/build_environment/cmake/options.cmake
index 39334af0bcf..2a7b67d5184 100644
--- a/build_files/build_environment/cmake/options.cmake
+++ b/build_files/build_environment/cmake/options.cmake
@@ -117,14 +117,26 @@ else()
COMMAND xcodebuild -version -sdk macosx SDKVersion
OUTPUT_VARIABLE MACOSX_SDK_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
- set(OSX_ARCHITECTURES x86_64)
- set(OSX_DEPLOYMENT_TARGET 10.13)
+ if(NOT DEFINED OSX_ARCHITECTURES)
+ execute_process(COMMAND uname -m OUTPUT_VARIABLE ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE)
+ message(STATUS "Detected native architecture ${ARCHITECTURE}.")
+ set(OSX_ARCHITECTURES "${ARCHITECTURE}")
+ endif()
+ if(${OSX_ARCHITECTURES} EQUAL "x86_64")
+ set(OSX_DEPLOYMENT_TARGET 10.13)
+ else()
+ set(OSX_DEPLOYMENT_TARGET 11.00)
+ endif()
set(OSX_SYSROOT ${XCODE_DEV_PATH}/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk)
- set(PLATFORM_CFLAGS "-isysroot ${OSX_SYSROOT} -mmacosx-version-min=${OSX_DEPLOYMENT_TARGET}")
- set(PLATFORM_CXXFLAGS "-isysroot ${OSX_SYSROOT} -mmacosx-version-min=${OSX_DEPLOYMENT_TARGET} -std=c++11 -stdlib=libc++")
- set(PLATFORM_LDFLAGS "-isysroot ${OSX_SYSROOT} -mmacosx-version-min=${OSX_DEPLOYMENT_TARGET}")
- set(PLATFORM_BUILD_TARGET --build=x86_64-apple-darwin17.0.0) # OS X 10.13
+ set(PLATFORM_CFLAGS "-isysroot ${OSX_SYSROOT} -mmacosx-version-min=${OSX_DEPLOYMENT_TARGET} -arch ${OSX_ARCHITECTURES}")
+ set(PLATFORM_CXXFLAGS "-isysroot ${OSX_SYSROOT} -mmacosx-version-min=${OSX_DEPLOYMENT_TARGET} -std=c++11 -stdlib=libc++ -arch ${OSX_ARCHITECTURES}")
+ set(PLATFORM_LDFLAGS "-isysroot ${OSX_SYSROOT} -mmacosx-version-min=${OSX_DEPLOYMENT_TARGET} -arch ${OSX_ARCHITECTURES}")
+ if(${OSX_ARCHITECTURES} EQUAL "x86_64")
+ set(PLATFORM_BUILD_TARGET --build=x86_64-apple-darwin17.0.0) # OS X 10.13
+ else()
+ set(PLATFORM_BUILD_TARGET --build=aarch64-apple-darwin20.0.0) # macOS 11.00
+ endif()
set(PLATFORM_CMAKE_FLAGS
-DCMAKE_OSX_ARCHITECTURES:STRING=${OSX_ARCHITECTURES}
-DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${OSX_DEPLOYMENT_TARGET}
diff --git a/build_files/build_environment/cmake/png.cmake b/build_files/build_environment/cmake/png.cmake
index 8dd3c25b88b..78648ce47d2 100644
--- a/build_files/build_environment/cmake/png.cmake
+++ b/build_files/build_environment/cmake/png.cmake
@@ -22,11 +22,16 @@ set(PNG_EXTRA_ARGS
-DPNG_STATIC=ON
)
+if(APPLE AND ("${OSX_ARCHITECTURES}" STREQUAL "arm64"))
+ set(PNG_EXTRA_ARGS ${PNG_EXTRA_ARGS} -DPNG_HARDWARE_OPTIMIZATIONS=ON -DPNG_ARM_NEON=on)
+endif()
+
ExternalProject_Add(external_png
URL ${PNG_URI}
DOWNLOAD_DIR ${DOWNLOAD_DIR}
URL_HASH SHA256=${PNG_HASH}
PREFIX ${BUILD_DIR}/png
+ PATCH_COMMAND ${PATCH_CMD} -p 0 -N -d ${BUILD_DIR}/png/src/external_png < ${PATCH_DIR}/png.diff
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/png ${DEFAULT_CMAKE_FLAGS} ${PNG_EXTRA_ARGS}
INSTALL_DIR ${LIBDIR}/png
)
diff --git a/build_files/build_environment/cmake/python.cmake b/build_files/build_environment/cmake/python.cmake
index 681b20577d6..8b6a77916a7 100644
--- a/build_files/build_environment/cmake/python.cmake
+++ b/build_files/build_environment/cmake/python.cmake
@@ -69,6 +69,9 @@ else()
export ac_cv_header_libintl_h=no &&
export ac_cv_lib_intl_textdomain=no
)
+ if("${OSX_ARCHITECTURES}" STREQUAL "arm64")
+ set(PYTHON_FUNC_CONFIGS ${PYTHON_FUNC_CONFIGS} && export PYTHON_DECIMAL_WITH_MACHINE=ansi64)
+ endif()
set(PYTHON_CONFIGURE_ENV ${CONFIGURE_ENV} && ${PYTHON_FUNC_CONFIGS})
set(PYTHON_BINARY ${BUILD_DIR}/python/src/external_python/python.exe)
else()
diff --git a/build_files/build_environment/cmake/sqlite.cmake b/build_files/build_environment/cmake/sqlite.cmake
index 9fa2fa7c708..f4a124b9f26 100644
--- a/build_files/build_environment/cmake/sqlite.cmake
+++ b/build_files/build_environment/cmake/sqlite.cmake
@@ -51,7 +51,7 @@ ExternalProject_Add(external_sqlite
DOWNLOAD_DIR ${DOWNLOAD_DIR}
URL_HASH SHA1=${SQLITE_HASH}
PREFIX ${BUILD_DIR}/sqlite
- PATCH_COMMAND ${SQLITE_PATCH_CMD}
+ PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/sqlite/src/external_sqlite < ${PATCH_DIR}/sqlite.diff
CONFIGURE_COMMAND ${SQLITE_CONFIGURE_ENV} && cd ${BUILD_DIR}/sqlite/src/external_sqlite/ && ${CONFIGURE_COMMAND} --prefix=${LIBDIR}/sqlite ${SQLITE_CONFIGURATION_ARGS}
BUILD_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/sqlite/src/external_sqlite/ && make -j${MAKE_THREADS}
INSTALL_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/sqlite/src/external_sqlite/ && make install
diff --git a/build_files/build_environment/cmake/ssl.cmake b/build_files/build_environment/cmake/ssl.cmake
index 6d81c6c9a26..ec0db94bc43 100644
--- a/build_files/build_environment/cmake/ssl.cmake
+++ b/build_files/build_environment/cmake/ssl.cmake
@@ -20,7 +20,11 @@ set(SSL_CONFIGURE_COMMAND ./Configure)
set(SSL_PATCH_CMD echo .)
if(APPLE)
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list