Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'build_files/build_environment/cmake/dpcpp.cmake')
-rw-r--r--build_files/build_environment/cmake/dpcpp.cmake109
1 files changed, 109 insertions, 0 deletions
diff --git a/build_files/build_environment/cmake/dpcpp.cmake b/build_files/build_environment/cmake/dpcpp.cmake
new file mode 100644
index 00000000000..3c3fe201073
--- /dev/null
+++ b/build_files/build_environment/cmake/dpcpp.cmake
@@ -0,0 +1,109 @@
+# 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/${LIBPREFIX}ze_loader${SHAREDLIBEXT}
+ -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
+ -DCMAKE_INSTALL_RPATH=\$ORIGIN
+ -DPython3_ROOT_DIR=${LIBDIR}/python/
+ -DPython3_EXECUTABLE=${PYTHON_BINARY}
+ -DPYTHON_EXECUTABLE=${PYTHON_BINARY}
+ -DLLDB_ENABLE_CURSES=OFF
+ -DLLVM_ENABLE_TERMINFO=OFF
+)
+
+if(WIN32)
+ list(APPEND DPCPP_EXTRA_ARGS -DPython3_FIND_REGISTRY=NEVER)
+endif()
+
+ExternalProject_Add(external_dpcpp
+ URL file://${PACKAGE_DIR}/${DPCPP_FILE}
+ DOWNLOAD_DIR ${DOWNLOAD_DIR}
+ URL_HASH ${DPCPP_HASH_TYPE}=${DPCPP_HASH}
+ PREFIX ${BUILD_DIR}/dpcpp
+ 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
+ INSTALL_COMMAND ${CMAKE_COMMAND} --build . -- deploy-sycl-toolchain
+ PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/dpcpp/src/external_dpcpp < ${PATCH_DIR}/dpcpp.diff
+ INSTALL_DIR ${LIBDIR}/dpcpp
+)
+
+add_dependencies(
+ external_dpcpp
+ external_python
+ external_python_site_packages
+ external_vcintrinsics
+ external_openclheaders
+ external_icdloader
+ external_mp11
+ external_level-zero
+ external_spirvheaders
+)
+
+if(BUILD_MODE STREQUAL Release AND WIN32)
+ ExternalProject_Add_Step(external_dpcpp after_install
+ COMMAND ${CMAKE_COMMAND} -E rm -f ${LIBDIR}/dpcpp/bin/clang-cl.exe
+ COMMAND ${CMAKE_COMMAND} -E rm -f ${LIBDIR}/dpcpp/bin/clang-cpp.exe
+ COMMAND ${CMAKE_COMMAND} -E rm -f ${LIBDIR}/dpcpp/bin/clang.exe
+ COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/dpcpp ${HARVEST_TARGET}/dpcpp
+ )
+endif()