diff options
Diffstat (limited to 'build_files/build_environment')
-rw-r--r-- | build_files/build_environment/CMakeLists.txt | 12 | ||||
-rw-r--r-- | build_files/build_environment/cmake/embree.cmake | 30 | ||||
-rw-r--r-- | build_files/build_environment/cmake/harvest.cmake | 13 | ||||
-rw-r--r-- | build_files/build_environment/cmake/ispc.cmake | 16 | ||||
-rw-r--r-- | build_files/build_environment/cmake/llvm.cmake | 2 | ||||
-rw-r--r-- | build_files/build_environment/cmake/openimagedenoise.cmake | 1 | ||||
-rw-r--r-- | build_files/build_environment/cmake/sse2neon.cmake | 30 | ||||
-rw-r--r-- | build_files/build_environment/cmake/versions.cmake | 51 | ||||
-rw-r--r-- | build_files/build_environment/patches/oidn.diff | 40 |
9 files changed, 156 insertions, 39 deletions
diff --git a/build_files/build_environment/CMakeLists.txt b/build_files/build_environment/CMakeLists.txt index 10dbc41bef4..b2f16508bb5 100644 --- a/build_files/build_environment/CMakeLists.txt +++ b/build_files/build_environment/CMakeLists.txt @@ -100,11 +100,9 @@ include(cmake/haru.cmake) # Boost needs to be included after python.cmake due to the PYTHON_BINARY variable being needed. include(cmake/boost.cmake) include(cmake/pugixml.cmake) -if((NOT APPLE) OR ("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "x86_64")) - include(cmake/ispc.cmake) - include(cmake/openimagedenoise.cmake) - include(cmake/embree.cmake) -endif() +include(cmake/ispc.cmake) +include(cmake/openimagedenoise.cmake) +include(cmake/embree.cmake) if(NOT APPLE) include(cmake/xr_openxr.cmake) endif() @@ -114,6 +112,10 @@ include(cmake/expat.cmake) include(cmake/yamlcpp.cmake) include(cmake/opencolorio.cmake) +if(APPLE AND ("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "arm64")) + include(cmake/sse2neon.cmake) +endif() + if(WITH_WEBP) include(cmake/webp.cmake) endif() diff --git a/build_files/build_environment/cmake/embree.cmake b/build_files/build_environment/cmake/embree.cmake index 66a86cd5dbd..86b8256f98f 100644 --- a/build_files/build_environment/cmake/embree.cmake +++ b/build_files/build_environment/cmake/embree.cmake @@ -29,6 +29,7 @@ set(EMBREE_EXTRA_ARGS -DEMBREE_MAX_ISA=AVX2 -DEMBREE_TASKING_SYSTEM=TBB -DEMBREE_TBB_ROOT=${LIBDIR}/tbb + -DTBB_ROOT=${LIBDIR}/tbb -DTBB_STATIC_LIB=${TBB_STATIC_LIBRARY} ) @@ -46,15 +47,26 @@ else() set(EMBREE_BUILD_DIR) endif() -ExternalProject_Add(external_embree - URL ${EMBREE_URI} - DOWNLOAD_DIR ${DOWNLOAD_DIR} - URL_HASH MD5=${EMBREE_HASH} - PREFIX ${BUILD_DIR}/embree - PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/embree/src/external_embree < ${PATCH_DIR}/embree.diff - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/embree ${DEFAULT_CMAKE_FLAGS} ${EMBREE_EXTRA_ARGS} - INSTALL_DIR ${LIBDIR}/embree -) +if(APPLE AND ("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "arm64")) + ExternalProject_Add(external_embree + GIT_REPOSITORY ${EMBREE_ARM_GIT} + GIT_TAG "blender-arm" + DOWNLOAD_DIR ${DOWNLOAD_DIR} + PREFIX ${BUILD_DIR}/embree + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/embree ${DEFAULT_CMAKE_FLAGS} ${EMBREE_EXTRA_ARGS} + INSTALL_DIR ${LIBDIR}/embree + ) +else() + ExternalProject_Add(external_embree + URL ${EMBREE_URI} + DOWNLOAD_DIR ${DOWNLOAD_DIR} + URL_HASH MD5=${EMBREE_HASH} + PREFIX ${BUILD_DIR}/embree + PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/embree/src/external_embree < ${PATCH_DIR}/embree.diff + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/embree ${DEFAULT_CMAKE_FLAGS} ${EMBREE_EXTRA_ARGS} + INSTALL_DIR ${LIBDIR}/embree + ) +endif() add_dependencies( external_embree diff --git a/build_files/build_environment/cmake/harvest.cmake b/build_files/build_environment/cmake/harvest.cmake index 308cb77144c..93e6fbbf393 100644 --- a/build_files/build_environment/cmake/harvest.cmake +++ b/build_files/build_environment/cmake/harvest.cmake @@ -109,6 +109,9 @@ harvest(llvm/lib llvm/lib "libLLVM*.a") if(APPLE) harvest(openmp/lib openmp/lib "*") harvest(openmp/include openmp/include "*.h") + if("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "arm64") + harvest(sse2neon sse2neon "*.h") + endif() endif() harvest(ogg/lib ffmpeg/lib "*.a") harvest(openal/include openal/include "*.h") @@ -139,12 +142,10 @@ harvest(openimageio/bin openimageio/bin "maketx") harvest(openimageio/bin openimageio/bin "oiiotool") harvest(openimageio/include openimageio/include "*") harvest(openimageio/lib openimageio/lib "*.a") -if((NOT APPLE) OR ("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "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(openimagedenoise/include openimagedenoise/include "*") +harvest(openimagedenoise/lib openimagedenoise/lib "*.a") +harvest(embree/include embree/include "*.h") +harvest(embree/lib embree/lib "*.a") harvest(openjpeg/include/openjpeg-2.3 openjpeg/include "*.h") harvest(openjpeg/lib openjpeg/lib "*.a") harvest(opensubdiv/include opensubdiv/include "*.h") diff --git a/build_files/build_environment/cmake/ispc.cmake b/build_files/build_environment/cmake/ispc.cmake index 56c3cecae17..440f6e5bace 100644 --- a/build_files/build_environment/cmake/ispc.cmake +++ b/build_files/build_environment/cmake/ispc.cmake @@ -21,27 +21,31 @@ if(WIN32) -DFLEX_EXECUTABLE=${LIBDIR}/flexbison/win_flex.exe -DBISON_EXECUTABLE=${LIBDIR}/flexbison/win_bison.exe -DM4_EXECUTABLE=${DOWNLOAD_DIR}/mingw/mingw64/msys/1.0/bin/m4.exe + -DARM_ENABLED=Off ) elseif(APPLE) # Use bison installed via Homebrew. # The one which comes which Xcode toolset is too old. if("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "arm64") - set(HOMEBREW_LOCATION "/opt/homebrew") + set(ISPC_EXTRA_ARGS_APPLE + -DBISON_EXECUTABLE=/opt/homebrew/opt/bison/bin/bison + -DARM_ENABLED=On + ) else() - set(HOMEBREW_LOCATION "/usr/local") + set(ISPC_EXTRA_ARGS_APPLE + -DBISON_EXECUTABLE=/usr/local/opt/bison/bin/bison + -DARM_ENABLED=Off + ) endif() - set(ISPC_EXTRA_ARGS_APPLE - -DBISON_EXECUTABLE=${HOMEBREW_LOCATION}/opt/bison/bin/bison - ) elseif(UNIX) set(ISPC_EXTRA_ARGS_UNIX -DCMAKE_C_COMPILER=${LIBDIR}/clang/bin/clang -DCMAKE_CXX_COMPILER=${LIBDIR}/clang/bin/clang++ + -DARM_ENABLED=Off ) endif() set(ISPC_EXTRA_ARGS - -DARM_ENABLED=Off -DISPC_NO_DUMPS=On -DISPC_INCLUDE_EXAMPLES=Off -DISPC_INCLUDE_TESTS=Off diff --git a/build_files/build_environment/cmake/llvm.cmake b/build_files/build_environment/cmake/llvm.cmake index 8c9a6076068..a4c7ccd9e27 100644 --- a/build_files/build_environment/cmake/llvm.cmake +++ b/build_files/build_environment/cmake/llvm.cmake @@ -17,7 +17,7 @@ # ***** END GPL LICENSE BLOCK ***** if(APPLE AND "${CMAKE_OSX_ARCHITECTURES}" STREQUAL "arm64") - set(LLVM_TARGETS AArch64) + set(LLVM_TARGETS AArch64$<SEMICOLON>ARM) else() set(LLVM_TARGETS X86) endif() diff --git a/build_files/build_environment/cmake/openimagedenoise.cmake b/build_files/build_environment/cmake/openimagedenoise.cmake index 65f12199952..7947fc31470 100644 --- a/build_files/build_environment/cmake/openimagedenoise.cmake +++ b/build_files/build_environment/cmake/openimagedenoise.cmake @@ -45,6 +45,7 @@ ExternalProject_Add(external_openimagedenoise DOWNLOAD_DIR ${DOWNLOAD_DIR} URL_HASH MD5=${OIDN_HASH} PREFIX ${BUILD_DIR}/openimagedenoise + PATCH_COMMAND ${PATCH_CMD} -p 1 -N -d ${BUILD_DIR}/openimagedenoise/src/external_openimagedenoise < ${PATCH_DIR}/oidn.diff CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/openimagedenoise ${DEFAULT_CMAKE_FLAGS} ${OIDN_EXTRA_ARGS} INSTALL_DIR ${LIBDIR}/openimagedenoise ) diff --git a/build_files/build_environment/cmake/sse2neon.cmake b/build_files/build_environment/cmake/sse2neon.cmake new file mode 100644 index 00000000000..dca2d94f913 --- /dev/null +++ b/build_files/build_environment/cmake/sse2neon.cmake @@ -0,0 +1,30 @@ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ***** END GPL LICENSE BLOCK ***** + +if(APPLE AND ("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "arm64")) + ExternalProject_Add(external_sse2neon + GIT_REPOSITORY ${SSE2NEON_GIT} + GIT_TAG ${SSE2NEON_GIT_HASH} + DOWNLOAD_DIR ${DOWNLOAD_DIR} + PREFIX ${BUILD_DIR}/sse2neon + CONFIGURE_COMMAND echo sse2neon - Nothing to configure + BUILD_COMMAND echo sse2neon - nothing to build + INSTALL_COMMAND mkdir -p ${LIBDIR}/sse2neon && cp ${BUILD_DIR}/sse2neon/src/external_sse2neon/sse2neon.h ${LIBDIR}/sse2neon + INSTALL_DIR ${LIBDIR}/sse2neon + ) +endif() diff --git a/build_files/build_environment/cmake/versions.cmake b/build_files/build_environment/cmake/versions.cmake index 4a879c793a1..361c9fd9843 100644 --- a/build_files/build_environment/cmake/versions.cmake +++ b/build_files/build_environment/cmake/versions.cmake @@ -113,18 +113,35 @@ set(OPENCOLORIO_VERSION 2.0.0) set(OPENCOLORIO_URI https://github.com/AcademySoftwareFoundation/OpenColorIO/archive/v${OPENCOLORIO_VERSION}.tar.gz) set(OPENCOLORIO_HASH 1a2e3478b6cd9a1549f24e1b2205e3f0) -set(LLVM_VERSION 9.0.1) -set(LLVM_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz) -set(LLVM_HASH 31eb9ce73dd2a0f8dcab8319fb03f8fc) +if(APPLE AND ("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "arm64")) + # Newer version required by ISPC with arm support. + set(LLVM_VERSION 11.0.1) + set(LLVM_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz) + set(LLVM_HASH 6ec7ae9fd43da9b87cda15b3ab9cc7af) -set(CLANG_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/clang-${LLVM_VERSION}.src.tar.xz) -set(CLANG_HASH 13468e4a44940efef1b75e8641752f90) + set(CLANG_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/clang-${LLVM_VERSION}.src.tar.xz) + set(CLANG_HASH b4cb0b74b1f3292a89c9720f3e1e2934) -set(CLANG_TOOLS_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/clang-tools-extra-${LLVM_VERSION}.src.tar.xz) -set(CLANG_TOOLS_HASH c76293870b564c6a7968622b475b7646) + set(CLANG_TOOLS_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/clang-tools-extra-${LLVM_VERSION}.src.tar.xz) + set(CLANG_TOOLS_HASH 1e577a85948a0f07483b7c405e59a0ca) -set(OPENMP_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/openmp-${LLVM_VERSION}.src.tar.xz) -set(OPENMP_HASH 6eade16057edbdecb3c4eef9daa2bfcf) + set(OPENMP_VERSION 9.0.1) + set(OPENMP_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${OPENMP_VERSION}/openmp-${OPENMP_VERSION}.src.tar.xz) + set(OPENMP_HASH 6eade16057edbdecb3c4eef9daa2bfcf) +else() + set(LLVM_VERSION 9.0.1) + set(LLVM_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz) + set(LLVM_HASH 31eb9ce73dd2a0f8dcab8319fb03f8fc) + + set(CLANG_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/clang-${LLVM_VERSION}.src.tar.xz) + set(CLANG_HASH 13468e4a44940efef1b75e8641752f90) + + set(CLANG_TOOLS_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/clang-tools-extra-${LLVM_VERSION}.src.tar.xz) + set(CLANG_TOOLS_HASH c76293870b564c6a7968622b475b7646) + + set(OPENMP_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/openmp-${LLVM_VERSION}.src.tar.xz) + set(OPENMP_HASH 6eade16057edbdecb3c4eef9daa2bfcf) +endif() set(OPENIMAGEIO_VERSION 2.1.15.0) set(OPENIMAGEIO_URI https://github.com/OpenImageIO/oiio/archive/Release-${OPENIMAGEIO_VERSION}.tar.gz) @@ -296,6 +313,7 @@ set(SQLITE_HASH fb558c49ee21a837713c4f1e7e413309aabdd9c7) set(EMBREE_VERSION 3.10.0) set(EMBREE_URI https://github.com/embree/embree/archive/v${EMBREE_VERSION}.zip) set(EMBREE_HASH 4bbe29e7eaa46417efc75fc5f1e8eb87) +set(EMBREE_ARM_GIT https://github.com/brechtvl/embree.git) set(USD_VERSION 21.02) set(USD_URI https://github.com/PixarAnimationStudios/USD/archive/v${USD_VERSION}.tar.gz) @@ -321,9 +339,15 @@ set(XR_OPENXR_SDK_VERSION 1.0.14) set(XR_OPENXR_SDK_URI https://github.com/KhronosGroup/OpenXR-SDK/archive/release-${XR_OPENXR_SDK_VERSION}.tar.gz) set(XR_OPENXR_SDK_HASH 0df6b2fd6045423451a77ff6bc3e1a75) -set(ISPC_VERSION v1.14.1) -set(ISPC_URI https://github.com/ispc/ispc/archive/${ISPC_VERSION}.tar.gz) -set(ISPC_HASH 968fbc8dfd16a60ba4e32d2e0e03ea7a) +if(APPLE AND ("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "arm64")) + # Unreleased version with macOS arm support. + set(ISPC_URI https://github.com/ispc/ispc/archive/f5949c055eb9eeb93696978a3da4bfb3a6a30b35.zip) + set(ISPC_HASH d382fea18d01dbd0cd05d9e1ede36d7d) +else() + set(ISPC_VERSION v1.14.1) + set(ISPC_URI https://github.com/ispc/ispc/archive/${ISPC_VERSION}.tar.gz) + set(ISPC_HASH 968fbc8dfd16a60ba4e32d2e0e03ea7a) +endif() set(GMP_VERSION 6.2.0) set(GMP_URI https://gmplib.org/download/gmp/gmp-${GMP_VERSION}.tar.xz) @@ -336,3 +360,6 @@ set(POTRACE_HASH 5f0bd87ddd9a620b0c4e65652ef93d69) set(HARU_VERSION 2_3_0) set(HARU_URI https://github.com/libharu/libharu/archive/RELEASE_${HARU_VERSION}.tar.gz) set(HARU_HASH 4f916aa49c3069b3a10850013c507460) + +set(SSE2NEON_GIT https://github.com/DLTcollab/sse2neon.git) +set(SSE2NEON_GIT_HASH fe5ff00bb8d19b327714a3c290f3e2ce81ba3525) diff --git a/build_files/build_environment/patches/oidn.diff b/build_files/build_environment/patches/oidn.diff new file mode 100644 index 00000000000..10d21d7764b --- /dev/null +++ b/build_files/build_environment/patches/oidn.diff @@ -0,0 +1,40 @@ +diff -Naur oidn-1.3.0/cmake/FindTBB.cmake external_openimagedenoise/cmake/FindTBB.cmake +--- oidn-1.3.0/cmake/FindTBB.cmake 2021-02-04 16:20:26 -0700 ++++ external_openimagedenoise/cmake/FindTBB.cmake 2021-02-12 09:35:53 -0700 +@@ -332,20 +332,22 @@ + ${TBB_ROOT}/lib/${TBB_ARCH}/${TBB_VCVER} + ${TBB_ROOT}/lib + ) +- + # On Windows, also search the DLL so that the client may install it. + file(GLOB DLL_NAMES + ${TBB_ROOT}/bin/${TBB_ARCH}/${TBB_VCVER}/${LIB_NAME}.dll + ${TBB_ROOT}/bin/${LIB_NAME}.dll ++ ${TBB_ROOT}/lib/${LIB_NAME}.dll + ${TBB_ROOT}/redist/${TBB_ARCH}/${TBB_VCVER}/${LIB_NAME}.dll + ${TBB_ROOT}/redist/${TBB_ARCH}/${TBB_VCVER}/${LIB_NAME_GLOB1}.dll + ${TBB_ROOT}/redist/${TBB_ARCH}/${TBB_VCVER}/${LIB_NAME_GLOB2}.dll + ${TBB_ROOT}/../redist/${TBB_ARCH}/tbb/${TBB_VCVER}/${LIB_NAME}.dll + ${TBB_ROOT}/../redist/${TBB_ARCH}_win/tbb/${TBB_VCVER}/${LIB_NAME}.dll + ) +- list(GET DLL_NAMES 0 DLL_NAME) +- get_filename_component(${BIN_DIR_VAR} "${DLL_NAME}" DIRECTORY) +- set(${DLL_VAR} "${DLL_NAME}" CACHE PATH "${COMPONENT_NAME} ${BUILD_CONFIG} dll path") ++ if (DLL_NAMES) ++ list(GET DLL_NAMES 0 DLL_NAME) ++ get_filename_component(${BIN_DIR_VAR} "${DLL_NAME}" DIRECTORY) ++ set(${DLL_VAR} "${DLL_NAME}" CACHE PATH "${COMPONENT_NAME} ${BUILD_CONFIG} dll path") ++ endif() + elseif(APPLE) + set(LIB_PATHS ${TBB_ROOT}/lib) + else() +--- external_openimagedenoise/cmake/oidn_ispc.cmake 2021-02-15 17:29:34.000000000 +0100 ++++ external_openimagedenoise/cmake/oidn_ispc.cmake2 2021-02-15 17:29:28.000000000 +0100 +@@ -98,7 +98,7 @@ + elseif(OIDN_ARCH STREQUAL "ARM64") + set(ISPC_ARCHITECTURE "aarch64") + if(APPLE) +- set(ISPC_TARGET_OS "--target-os=ios") ++ set(ISPC_TARGET_OS "--target-os=macos") + endif() + endif() |