[Bf-blender-cvs] [e489da57b18] cycles_oneapi: deps_builder: dpcpp cleanup

Ray Molenkamp noreply at git.blender.org
Sun May 22 21:02:11 CEST 2022


Commit: e489da57b18282e317db78a22143bc8a06e4d03e
Author: Ray Molenkamp
Date:   Sun May 22 13:01:30 2022 -0600
Branches: cycles_oneapi
https://developer.blender.org/rBe489da57b18282e317db78a22143bc8a06e4d03e

deps_builder: dpcpp cleanup

This should take care of all the stray dep downloads
dpcpp did. Tested on windows only

===================================================================

M	build_files/build_environment/CMakeLists.txt
M	build_files/build_environment/cmake/download.cmake
M	build_files/build_environment/cmake/dpcpp.cmake
A	build_files/build_environment/cmake/dpcpp_deps.cmake
M	build_files/build_environment/cmake/versions.cmake
A	build_files/build_environment/patches/dpcpp.diff

===================================================================

diff --git a/build_files/build_environment/CMakeLists.txt b/build_files/build_environment/CMakeLists.txt
index 91b3e134cb9..3e33b86f513 100644
--- a/build_files/build_environment/CMakeLists.txt
+++ b/build_files/build_environment/CMakeLists.txt
@@ -96,7 +96,10 @@ include(cmake/fmt.cmake)
 include(cmake/robinmap.cmake)
 if(NOT APPLE)
   include(cmake/xr_openxr.cmake)
-  include(cmake/dpcpp.cmake)
+  if(NOT WIN32 OR BUILD_MODE STREQUAL Release)
+    include(cmake/dpcpp.cmake)
+    include(cmake/dpcpp_deps.cmake)
+  endif()
 endif()
 
 # OpenColorIO and dependencies.
diff --git a/build_files/build_environment/cmake/download.cmake b/build_files/build_environment/cmake/download.cmake
index ec2b36416d9..891f292993e 100644
--- a/build_files/build_environment/cmake/download.cmake
+++ b/build_files/build_environment/cmake/download.cmake
@@ -102,3 +102,8 @@ download_source(IMATH)
 download_source(PYSTRING)
 download_source(LEVEL_ZERO)
 download_source(DPCPP)
+download_source(VCINTRINSICS)
+download_source(OPENCLHEADERS)
+download_source(ICDLOADER)
+download_source(MP11)
+download_source(SPIRV_HEADERS)
diff --git a/build_files/build_environment/cmake/dpcpp.cmake b/build_files/build_environment/cmake/dpcpp.cmake
index 0417c4271f7..38987dd8709 100644
--- a/build_files/build_environment/cmake/dpcpp.cmake
+++ b/build_files/build_environment/cmake/dpcpp.cmake
@@ -1,6 +1,64 @@
 # SPDX-License-Identifier: GPL-2.0-or-later
 
+
+if(WIN32)
+  set(LLVM_GENERATOR "Ninja")
+else()
+  set(LLVM_GENERATOR "Unix Makefiles")
+endif()
+
+set(DPCPP_CONFIGURE_ARGS
+  # When external deps dpcpp needs are not found it will automatically
+  # download the during the configure stage using FetchContent. Given
+  # we need to keep an archive of all source used during build for compliance
+  # reasons it CANNOT download anything we do not know about. By setting
+  # this property to ON, all downloads are disabled, and we will have to
+  # provide the missing deps some other way, a build error beats a compliance
+  # violation
+  --cmake-opt FETCHCONTENT_FULLY_DISCONNECTED=ON
+)
+set(DPCPP_SOURCE_ROOT ${BUILD_DIR}/dpcpp/src/external_dpcpp/)
 set(DPCPP_EXTRA_ARGS
+  # When external deps dpcpp needs are not found it will automatically
+  # download the during the configure stage using FetchContent. Given
+  # we need to keep an archive of all source used during build for compliance
+  # reasons it CANNOT download anything we do not know about. By setting
+  # this property to ON, all downloads are disabled, and we will have to
+  # provide the missing deps some other way, a build or configure error
+  # beats a compliance violation
+  -DFETCHCONTENT_FULLY_DISCONNECTED=ON
+  -DLLVMGenXIntrinsics_SOURCE_DIR=${BUILD_DIR}/vcintrinsics/src/external_vcintrinsics/
+  -DOpenCL_HEADERS=file://${PACKAGE_DIR}/${OPENCLHEADERS_FILE}
+  -DOpenCL_LIBRARY_SRC=file://${PACKAGE_DIR}/${ICDLOADER_FILE}
+  -DBOOST_MP11_SOURCE_DIR=${BUILD_DIR}/mp11/src/external_mp11/
+  -DLEVEL_ZERO_LIBRARY=${LIBDIR}/level-zero/lib/ze_loader${LIBEXT}
+  -DLEVEL_ZERO_INCLUDE_DIR=${LIBDIR}/level-zero/include
+  -DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR=${BUILD_DIR}/spirvheaders/src/external_spirvheaders/
+  # Below here is copied from an invocation of buildbot/config.py
+  -DLLVM_ENABLE_ASSERTIONS=ON
+  -DLLVM_TARGETS_TO_BUILD=X86
+  -DLLVM_EXTERNAL_PROJECTS=sycl^^llvm-spirv^^opencl^^libdevice^^xpti^^xptifw
+  -DLLVM_EXTERNAL_SYCL_SOURCE_DIR=${DPCPP_SOURCE_ROOT}/sycl
+  -DLLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR=${DPCPP_SOURCE_ROOT}/llvm-spirv
+  -DLLVM_EXTERNAL_XPTI_SOURCE_DIR=${DPCPP_SOURCE_ROOT}/xpti
+  -DXPTI_SOURCE_DIR=${DPCPP_SOURCE_ROOT}/xpti
+  -DLLVM_EXTERNAL_XPTIFW_SOURCE_DIR=${DPCPP_SOURCE_ROOT}/xptifw
+  -DLLVM_EXTERNAL_LIBDEVICE_SOURCE_DIR=${DPCPP_SOURCE_ROOT}/libdevice
+  -DLLVM_ENABLE_PROJECTS=clang^^sycl^^llvm-spirv^^opencl^^libdevice^^xpti^^xptifw
+  -DLIBCLC_TARGETS_TO_BUILD=
+  -DLIBCLC_GENERATE_REMANGLED_VARIANTS=OFF
+  -DSYCL_BUILD_PI_HIP_PLATFORM=AMD
+  -DLLVM_BUILD_TOOLS=ON
+  -DSYCL_ENABLE_WERROR=OFF
+  -DSYCL_INCLUDE_TESTS=ON
+  -DLLVM_ENABLE_DOXYGEN=OFF
+  -DLLVM_ENABLE_SPHINX=OFF
+  -DBUILD_SHARED_LIBS=OFF
+  -DSYCL_ENABLE_XPTI_TRACING=ON
+  -DLLVM_ENABLE_LLD=OFF
+  -DXPTI_ENABLE_WERROR=OFF
+  -DSYCL_CLANG_EXTRA_FLAGS=
+  -DSYCL_ENABLE_PLUGINS=level_zero^^opencl
 )
 
 ExternalProject_Add(external_dpcpp
@@ -8,8 +66,13 @@ ExternalProject_Add(external_dpcpp
   DOWNLOAD_DIR ${DOWNLOAD_DIR}
   URL_HASH ${DPCPP_HASH_TYPE}=${DPCPP_HASH}
   PREFIX ${BUILD_DIR}/dpcpp
-  CONFIGURE_COMMAND ${PYTHON_BINARY} ${BUILD_DIR}/dpcpp/src/external_dpcpp/buildbot/configure.py
-  BUILD_COMMAND ${PYTHON_BINARY} ${BUILD_DIR}/dpcpp/src/external_dpcpp/buildbot/compile.py
+  CMAKE_GENERATOR ${LLVM_GENERATOR}
+  SOURCE_SUBDIR llvm
+  LIST_SEPARATOR ^^
+  CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/dpcpp ${DEFAULT_CMAKE_FLAGS} ${DPCPP_EXTRA_ARGS}
+  #CONFIGURE_COMMAND ${PYTHON_BINARY} ${BUILD_DIR}/dpcpp/src/external_dpcpp/buildbot/configure.py ${DPCPP_CONFIGURE_ARGS}
+  #BUILD_COMMAND echo "." #${PYTHON_BINARY} ${BUILD_DIR}/dpcpp/src/external_dpcpp/buildbot/compile.py
+  PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/dpcpp/src/external_dpcpp < ${PATCH_DIR}/dpcpp.diff
   INSTALL_COMMAND echo "."
   INSTALL_DIR ${LIBDIR}/dpcpp
 )
@@ -18,4 +81,10 @@ add_dependencies(
   external_dpcpp
   external_python
   external_python_site_packages
+  external_vcintrinsics
+  external_openclheaders
+  external_icdloader
+  external_mp11
+  external_level-zero
+  external_spirvheaders
 )
diff --git a/build_files/build_environment/cmake/dpcpp_deps.cmake b/build_files/build_environment/cmake/dpcpp_deps.cmake
new file mode 100644
index 00000000000..17cb9de3bf7
--- /dev/null
+++ b/build_files/build_environment/cmake/dpcpp_deps.cmake
@@ -0,0 +1,62 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+# These are build time requirements for dpcpp
+# We only have to unpack these dpcpp will build
+# them.
+
+ExternalProject_Add(external_vcintrinsics
+  URL file://${PACKAGE_DIR}/${VCINTRINSICS_FILE}
+  URL_HASH ${VCINTRINSICS_HASH_TYPE}=${VCINTRINSICS_HASH}
+  DOWNLOAD_DIR ${DOWNLOAD_DIR}
+  PREFIX ${BUILD_DIR}/vcintrinsics
+  CONFIGURE_COMMAND echo .
+  BUILD_COMMAND echo .
+  INSTALL_COMMAND echo .
+)
+
+# opencl headers do not have to be unpacked, dpcpp will do it
+# but it wouldn't hurt to do it anyway as an opertunity to validate
+# the hash is correct.
+ExternalProject_Add(external_openclheaders
+  URL file://${PACKAGE_DIR}/${OPENCLHEADERS_FILE}
+  URL_HASH ${OPENCLHEADERS_HASH_TYPE}=${OPENCLHEADERS_HASH}
+  DOWNLOAD_DIR ${DOWNLOAD_DIR}
+  PREFIX ${BUILD_DIR}/openclheaders
+  CONFIGURE_COMMAND echo .
+  BUILD_COMMAND echo .
+  INSTALL_COMMAND echo .
+)
+
+# icdloader does not have to be unpacked, dpcpp will do it
+# but it wouldn't hurt to do it anyway as an opertunity to validate
+# the hash is correct.
+ExternalProject_Add(external_icdloader
+  URL file://${PACKAGE_DIR}/${ICDLOADER_FILE}
+  URL_HASH ${ICDLOADER_HASH_TYPE}=${ICDLOADER_HASH}
+  DOWNLOAD_DIR ${DOWNLOAD_DIR}
+  PREFIX ${BUILD_DIR}/icdloader
+  CONFIGURE_COMMAND echo .
+  BUILD_COMMAND echo .
+  INSTALL_COMMAND echo .
+)
+
+ExternalProject_Add(external_mp11
+  URL file://${PACKAGE_DIR}/${MP11_FILE}
+  URL_HASH ${MP11_HASH_TYPE}=${MP11_HASH}
+  DOWNLOAD_DIR ${DOWNLOAD_DIR}
+  PREFIX ${BUILD_DIR}/mp11
+  CONFIGURE_COMMAND echo .
+  BUILD_COMMAND echo .
+  INSTALL_COMMAND echo .
+)
+
+ExternalProject_Add(external_spirvheaders
+  URL file://${PACKAGE_DIR}/${SPIRV_HEADERS_FILE}
+  URL_HASH ${SPIRV_HEADERS_HASH_TYPE}=${SPIRV_HEADERS_HASH}
+  DOWNLOAD_DIR ${DOWNLOAD_DIR}
+  PREFIX ${BUILD_DIR}/spirvheaders
+  CONFIGURE_COMMAND echo .
+  BUILD_COMMAND echo .
+  INSTALL_COMMAND echo .
+)
+
diff --git a/build_files/build_environment/cmake/versions.cmake b/build_files/build_environment/cmake/versions.cmake
index ff7af378997..39b58d47f9f 100644
--- a/build_files/build_environment/cmake/versions.cmake
+++ b/build_files/build_environment/cmake/versions.cmake
@@ -509,4 +509,53 @@ set(DPCPP_HASH b1a0f28cdebc37099dad8794f55c0e0ee634431c1b7cdc1b2e96c50b9a8b049d)
 set(DPCPP_HASH_TYPE SHA256)
 set(DPCPP_FILE DPCPP-${DPCPP_VERSION}.tar.gz)
 
+########################
+### DPCPP DEPS BEGIN ###
+########################
+# The following deps are build time requirements for dpcpp, when possible
+# the source in the dpcpp source tree for the version chosen is documented
+# by each dep, these will only have to be downloaded and unpacked, dpcpp
+# will take care of building them, unpack is being done in dpcpp_deps.cmake
+
+# Source llvm/lib/SYCLLowerIR/CMakeLists.txt
+set(VCINTRINSICS_VERSION 8b6e209fe1269a2c6470b36dfbaa0e051d2a100f)
+set(VCINTRINSICS_URI https://github.com/intel/vc-intrinsics/archive/${VCINTRINSICS_VERSION}.tar.gz)
+set(VCINTRINSICS_HASH 19fb13ac32f7138c6ab9f015ba1025a42a4775ef845ff4af4df6d4ff4f4bbb29)
+set(VCINTRINSICS_HASH_TYPE SHA256)
+set(VCINTRINSICS_FILE vc-intrinsics-${VCINTRINSICS_VERSION}.tar.gz)
+
+# Source opencl/CMakeLists.txt
+set(OPENCLHEADERS_VERSION dcd5bede6859d26833cd85f0d6bbcee7382dc9b3)
+set(OPENCLHEADERS_URI https://github.com/KhronosGroup/OpenCL-Headers/archive/${OPENCLHEADERS_VERSION}.tar.gz)
+set(OPENCLHEADERS_HASH ca8090359654e94f2c41e946b7e9d826253d795ae809ce7c83a7d3c859624693)
+set(OPENCLHEADERS_HASH_TYPE SHA256)
+set(OPENCLHEADERS_FILE opencl_headers-${OPENCLHEADERS_VERSION}.tar.gz)
+
+# Source opencl/CMakeLists.txt
+set(ICDLOADER_VERSION aec3952654832211636fc4af613710f80e203b0a)
+set(ICDLOADER_URI https://github.com/KhronosGroup/OpenCL-ICD-Loader/archive/${ICDLOADER_VERSION}.tar.gz)
+set(ICDLOADER_HASH e1880551d67bd8dc31d13de63b94bbfd6b1f315b6145dad1ffcd159b89bda93c)
+set(ICDLOADER_HASH_TYPE SHA256)
+set(ICDLOADER_FILE icdloader-${ICDLOADER_VERSION}.tar.gz)
+
+# Source sycl/cmake/modules/AddBoostMp11Headers.cmake
+# Using external MP11 here, getting AddBoostMp11Headers.cmake to recognize
+# our copy in boost directly was more trouble than it was worth.
+set(MP11_VERSION 7bc4e1ae9b36ec8ee635c3629b59ec525bbe82b9)
+set(MP11_URI https://github.com/boostorg/mp11/archive/${MP11_VERSION}.tar.gz)
+set(MP11_HASH 071ee2bd3952ec89882edb3af25dd1816f6b61723f66e42eea32f4d02ceef426)
+set(MP11_HASH_TYPE SHA256)
+set(MP11_FILE mp11-${MP11_VERSION}.tar.gz)
+
+# Source llvm-spirv/CMakeLists.

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list