Commit: 847579b422507917c4252ecc5c777bf5e0fc6f09 Author: Patrick Mours Date: Tue Apr 20 14:00:05 2021 +0200 Branches: master https://developer.blender.org/rB847579b422507917c4252ecc5c777bf5e0fc6f09
Add support for building on Linux aarch64 Differential Revision: https://developer.blender.org/D10958 =================================================================== M build_files/build_environment/CMakeLists.txt M build_files/build_environment/cmake/boost.cmake M build_files/build_environment/cmake/embree.cmake M build_files/build_environment/cmake/gmp.cmake M build_files/build_environment/cmake/harvest.cmake M build_files/build_environment/cmake/llvm.cmake M build_files/build_environment/cmake/opencolorio.cmake M build_files/build_environment/cmake/options.cmake M build_files/build_environment/cmake/png.cmake M build_files/build_environment/cmake/sse2neon.cmake M build_files/build_environment/cmake/ssl.cmake M build_files/build_environment/cmake/ssl.conf M build_files/build_environment/cmake/tbb.cmake M build_files/build_environment/cmake/versions.cmake M build_files/build_environment/cmake/x264.cmake M build_files/build_environment/install_deps.sh M build_files/build_environment/patches/cmakelists_tbb.txt M build_files/build_environment/patches/tbb.diff M build_files/build_environment/patches/theora.diff M build_files/build_environment/patches/usd.diff M build_files/cmake/Modules/FindEmbree.cmake M intern/cycles/util/util_simd.h M intern/cycles/util/util_sseb.h M intern/cycles/util/util_ssef.h M intern/cycles/util/util_ssei.h M intern/cycles/util/util_system.cpp =================================================================== diff --git a/build_files/build_environment/CMakeLists.txt b/build_files/build_environment/CMakeLists.txt index a3d694b4bc3..fb79eee62be 100644 --- a/build_files/build_environment/CMakeLists.txt +++ b/build_files/build_environment/CMakeLists.txt @@ -113,7 +113,7 @@ include(cmake/expat.cmake) include(cmake/yamlcpp.cmake) include(cmake/opencolorio.cmake) -if(APPLE AND ("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "arm64")) +if(BLENDER_PLATFORM_ARM) include(cmake/sse2neon.cmake) endif() diff --git a/build_files/build_environment/cmake/boost.cmake b/build_files/build_environment/cmake/boost.cmake index 8b36af7dc41..5170a3a123e 100644 --- a/build_files/build_environment/cmake/boost.cmake +++ b/build_files/build_environment/cmake/boost.cmake @@ -18,6 +18,12 @@ set(BOOST_ADDRESS_MODEL 64) +if(BLENDER_PLATFORM_ARM) + set(BOOST_ARCHITECTURE arm) +else() + set(BOOST_ARCHITECTURE x86) +endif() + if(WIN32) set(BOOST_TOOLSET toolset=msvc-14.1) set(BOOST_COMPILER_STRING -vc141) @@ -29,7 +35,6 @@ if(WIN32) if(BUILD_MODE STREQUAL Release) set(BOOST_HARVEST_CMD ${BOOST_HARVEST_CMD} && ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/boost/include/boost-${BOOST_VERSION_NODOTS_SHORT}/ ${HARVEST_TARGET}/boost/include/) endif() - elseif(APPLE) set(BOOST_CONFIGURE_COMMAND ./bootstrap.sh) set(BOOST_BUILD_COMMAND ./b2) @@ -93,7 +98,7 @@ ExternalProject_Add(external_boost UPDATE_COMMAND "" PATCH_COMMAND ${BOOST_PATCH_COMMAND} CONFIGURE_COMMAND ${BOOST_CONFIGURE_COMMAND} - BUILD_COMMAND ${BOOST_BUILD_COMMAND} ${BOOST_BUILD_OPTIONS} -j${MAKE_THREADS} architecture=x86 address-model=${BOOST_ADDRESS_MODEL} link=static threading=multi ${BOOST_OPTIONS} --prefix=${LIBDIR}/boost install + BUILD_COMMAND ${BOOST_BUILD_COMMAND} ${BOOST_BUILD_OPTIONS} -j${MAKE_THREADS} architecture=${BOOST_ARCHITECTURE} address-model=${BOOST_ADDRESS_MODEL} link=static threading=multi ${BOOST_OPTIONS} --prefix=${LIBDIR}/boost install BUILD_IN_SOURCE 1 INSTALL_COMMAND "${BOOST_HARVEST_CMD}" ) diff --git a/build_files/build_environment/cmake/embree.cmake b/build_files/build_environment/cmake/embree.cmake index 4830630def0..cd693d766dc 100644 --- a/build_files/build_environment/cmake/embree.cmake +++ b/build_files/build_environment/cmake/embree.cmake @@ -47,7 +47,7 @@ else() set(EMBREE_BUILD_DIR) endif() -if(APPLE AND ("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "arm64")) +if(BLENDER_PLATFORM_ARM) ExternalProject_Add(external_embree GIT_REPOSITORY ${EMBREE_ARM_GIT} GIT_TAG "blender-arm" diff --git a/build_files/build_environment/cmake/gmp.cmake b/build_files/build_environment/cmake/gmp.cmake index 323630a63aa..6ca81678a32 100644 --- a/build_files/build_environment/cmake/gmp.cmake +++ b/build_files/build_environment/cmake/gmp.cmake @@ -25,19 +25,12 @@ else() set(GMP_OPTIONS --enable-static --disable-shared ) endif() -if(APPLE) - if("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "arm64") - set(GMP_OPTIONS - ${GMP_OPTIONS} - --disable-assembly - ) - else() - set(GMP_OPTIONS - ${GMP_OPTIONS} - --with-pic - ) - endif() -elseif(UNIX) +if(APPLE AND NOT BLENDER_PLATFORM_ARM) + set(GMP_OPTIONS + ${GMP_OPTIONS} + --with-pic + ) +elseif(UNIX AND NOT APPLE) set(GMP_OPTIONS ${GMP_OPTIONS} --with-pic @@ -45,6 +38,13 @@ elseif(UNIX) ) endif() +if(BLENDER_PLATFORM_ARM) + set(GMP_OPTIONS + ${GMP_OPTIONS} + --disable-assembly + ) +endif() + ExternalProject_Add(external_gmp URL file://${PACKAGE_DIR}/${GMP_FILE} DOWNLOAD_DIR ${DOWNLOAD_DIR} diff --git a/build_files/build_environment/cmake/harvest.cmake b/build_files/build_environment/cmake/harvest.cmake index 23d0dcbab7b..fc7e652a028 100644 --- a/build_files/build_environment/cmake/harvest.cmake +++ b/build_files/build_environment/cmake/harvest.cmake @@ -109,9 +109,9 @@ harvest(llvm/lib llvm/lib "libclang*.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() +if(BLENDER_PLATFORM_ARM) + harvest(sse2neon sse2neon "*.h") endif() harvest(ogg/lib ffmpeg/lib "*.a") harvest(openal/include openal/include "*.h") diff --git a/build_files/build_environment/cmake/llvm.cmake b/build_files/build_environment/cmake/llvm.cmake index f067267a416..cbb986410aa 100644 --- a/build_files/build_environment/cmake/llvm.cmake +++ b/build_files/build_environment/cmake/llvm.cmake @@ -16,7 +16,7 @@ # # ***** END GPL LICENSE BLOCK ***** -if(APPLE AND "${CMAKE_OSX_ARCHITECTURES}" STREQUAL "arm64") +if(BLENDER_PLATFORM_ARM) set(LLVM_TARGETS AArch64$<SEMICOLON>ARM) else() set(LLVM_TARGETS X86) diff --git a/build_files/build_environment/cmake/opencolorio.cmake b/build_files/build_environment/cmake/opencolorio.cmake index bd03be5ebff..28c93973cf5 100644 --- a/build_files/build_environment/cmake/opencolorio.cmake +++ b/build_files/build_environment/cmake/opencolorio.cmake @@ -36,7 +36,7 @@ set(OPENCOLORIO_EXTRA_ARGS -Dyaml-cpp_ROOT=${LIBDIR}/yamlcpp ) -if(APPLE AND NOT("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "x86_64")) +if(BLENDER_PLATFORM_ARM) set(OPENCOLORIO_EXTRA_ARGS ${OPENCOLORIO_EXTRA_ARGS} -DOCIO_USE_SSE=OFF diff --git a/build_files/build_environment/cmake/options.cmake b/build_files/build_environment/cmake/options.cmake index 486b3d1a802..8930bd70fab 100644 --- a/build_files/build_environment/cmake/options.cmake +++ b/build_files/build_environment/cmake/options.cmake @@ -137,6 +137,10 @@ else() endif() set(OSX_SYSROOT ${XCODE_DEV_PATH}/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk) + if("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "arm64") + set(BLENDER_PLATFORM_ARM ON) + endif() + set(PLATFORM_CFLAGS "-isysroot ${OSX_SYSROOT} -mmacosx-version-min=${OSX_DEPLOYMENT_TARGET} -arch ${CMAKE_OSX_ARCHITECTURES}") set(PLATFORM_CXXFLAGS "-isysroot ${OSX_SYSROOT} -mmacosx-version-min=${OSX_DEPLOYMENT_TARGET} -std=c++11 -stdlib=libc++ -arch ${CMAKE_OSX_ARCHITECTURES}") set(PLATFORM_LDFLAGS "-isysroot ${OSX_SYSROOT} -mmacosx-version-min=${OSX_DEPLOYMENT_TARGET} -arch ${CMAKE_OSX_ARCHITECTURES}") @@ -151,6 +155,10 @@ else() -DCMAKE_OSX_SYSROOT:PATH=${OSX_SYSROOT} ) else() + if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "aarch64") + set(BLENDER_PLATFORM_ARM ON) + endif() + set(PLATFORM_CFLAGS "-fPIC") set(PLATFORM_CXXFLAGS "-std=c++11 -fPIC") set(PLATFORM_LDFLAGS) diff --git a/build_files/build_environment/cmake/png.cmake b/build_files/build_environment/cmake/png.cmake index d9248b61c98..458d3a1fd98 100644 --- a/build_files/build_environment/cmake/png.cmake +++ b/build_files/build_environment/cmake/png.cmake @@ -22,8 +22,8 @@ set(PNG_EXTRA_ARGS -DPNG_STATIC=ON ) -if(APPLE AND ("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "arm64")) - set(PNG_EXTRA_ARGS ${PNG_EXTRA_ARGS} -DPNG_HARDWARE_OPTIMIZATIONS=ON -DPNG_ARM_NEON=on -DCMAKE_SYSTEM_PROCESSOR="aarch64") +if(BLENDER_PLATFORM_ARM) + set(PNG_EXTRA_ARGS ${PNG_EXTRA_ARGS} -DPNG_HARDWARE_OPTIMIZATIONS=ON -DPNG_ARM_NEON=ON -DCMAKE_SYSTEM_PROCESSOR="aarch64") endif() ExternalProject_Add(external_png diff --git a/build_files/build_environment/cmake/sse2neon.cmake b/build_files/build_environment/cmake/sse2neon.cmake index dca2d94f913..d7987fdfd2f 100644 --- a/build_files/build_environment/cmake/sse2neon.cmake +++ b/build_files/build_environment/cmake/sse2neon.cmake @@ -16,15 +16,13 @@ # # ***** 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() +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 +) diff --git a/build_files/build_environment/cmake/ssl.cmake b/build_files/build_environment/cmake/ssl.cmake index 4426cc876c6..615b88167ec 100644 --- a/build_files/build_environment/cmake/ssl.cmake +++ b/build_files/build_environment/cmake/ssl.cmake @@ -22,7 +22,9 @@ set(SSL_PATCH_CMD echo .) if(APPLE) set(SSL_OS_COMPILER "blender-darwin-${CMAKE_OSX_ARCHITECTURES}") else() - if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + if(BLENDER_PLATFORM_ARM) + set(SSL_OS_COMPILER "blender-linux-aarch64") + elseif("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") set(SSL_EXTRA_ARGS enable-ec_nistp_64_gcc_128) set(SSL_OS_COMPILER "blender-linux-x86_64") else() diff --git a/build_files/build_environment/cmake/ssl.conf b/build_files/build_environment/cmake/ssl.conf index 8a9c9dcab4c..fa59bcf2825 100644 --- a/build_files/build_environment/cmake/ssl.conf +++ b/build_files/build_environment/cmake/ssl.conf @@ -8,6 +8,11 @@ my %targets = ( inherit_from => [ "linux-x86_64" ], cflags => add("-fPIC"), }, + "blender-linux-aarch64" => { + inherit_from => [ "linux-aarch64" ], + cxxflags => add("-fPIC"), + cflags => add("-fPIC"), + }, "blender-darwin-x86_64" => { inherit_from => [ "darwin64-x86_64-cc" ], cflags => add("-fPIC"), diff --git a/build_files/build_environment/cmake/tbb.cmake b/build_files/build_environment/cmake/tbb.cmake index b006898e6fd..44307cd2afb 100644 --- a/build_files/build_environment/cmake/tbb.cmake +++ b/build_files/build_environment/cmake/tbb.cmake @@ -21,6 +21,7 @@ if(WIN32) -DTBB_BUILD_TBBMALLOC=On -DTBB_BUILD_TBBMALLOC_PROXY=On -DTBB_BUILD_STATIC=Off + -DTBB_BUILD_TESTS=Off ) set(TBB_LIBRARY tbb) set(TBB_STATIC_LIBRAR @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs