[Bf-blender-cvs] [1b7811d30ad] cycles_oneapi: deps_builder: intel graphics compiler
Ray Molenkamp
noreply at git.blender.org
Mon May 23 20:55:15 CEST 2022
Commit: 1b7811d30ad4b4920556266711548b4151f6bbb4
Author: Ray Molenkamp
Date: Mon May 23 12:55:10 2022 -0600
Branches: cycles_oneapi
https://developer.blender.org/rB1b7811d30ad4b4920556266711548b4151f6bbb4
deps_builder: intel graphics compiler
building for linux only, with extra caveat
the flex version on centos 7 is NOT sufficient
and will cause a build error. It needs to be
upgraded to atleast 2.6.4
===================================================================
M build_files/build_environment/CMakeLists.txt
M build_files/build_environment/cmake/download.cmake
A build_files/build_environment/cmake/igc.cmake
A build_files/build_environment/cmake/macros.cmake
M build_files/build_environment/cmake/versions.cmake
A build_files/build_environment/patches/igc_opencl_clang.diff
===================================================================
diff --git a/build_files/build_environment/CMakeLists.txt b/build_files/build_environment/CMakeLists.txt
index 3e33b86f513..500362e1217 100644
--- a/build_files/build_environment/CMakeLists.txt
+++ b/build_files/build_environment/CMakeLists.txt
@@ -33,6 +33,7 @@ include(cmake/versions.cmake)
include(cmake/options.cmake)
include(cmake/boost_build_options.cmake)
include(cmake/download.cmake)
+include(cmake/macros.cmake)
if(ENABLE_MINGW64)
include(cmake/setup_mingw64.cmake)
@@ -100,6 +101,9 @@ if(NOT APPLE)
include(cmake/dpcpp.cmake)
include(cmake/dpcpp_deps.cmake)
endif()
+ if(NOT WIN32)
+ include(cmake/igc.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 891f292993e..1b749107511 100644
--- a/build_files/build_environment/cmake/download.cmake
+++ b/build_files/build_environment/cmake/download.cmake
@@ -107,3 +107,11 @@ download_source(OPENCLHEADERS)
download_source(ICDLOADER)
download_source(MP11)
download_source(SPIRV_HEADERS)
+download_source(IGC)
+download_source(IGC_LLVM)
+download_source(IGC_OPENCL_CLANG)
+download_source(IGC_VCINTRINSICS)
+download_source(IGC_SPIRV_HEADERS)
+download_source(IGC_SPIRV_TOOLS)
+download_source(IGC_SPIRV_TRANSLATOR)
+
diff --git a/build_files/build_environment/cmake/igc.cmake b/build_files/build_environment/cmake/igc.cmake
new file mode 100644
index 00000000000..cbdad0f2e5a
--- /dev/null
+++ b/build_files/build_environment/cmake/igc.cmake
@@ -0,0 +1,79 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+# CAUTION: igc requires flex 2.6.4 this is not by default available on centos 7
+
+unpack_only(igc_llvm)
+unpack_only(igc_opencl_clang)
+unpack_only(igc_vcintrinsics)
+unpack_only(igc_spirv_headers)
+unpack_only(igc_spirv_tools)
+unpack_only(igc_spirv_translator)
+
+if(WIN32)
+ set(IGC_GENERATOR "Ninja")
+ set(IGC_TARGET Windows64)
+else()
+ set(IGC_GENERATOR "Unix Makefiles")
+ set(IGC_TARGET Linux64)
+endif()
+
+set(IGC_EXTRA_ARGS
+ -DIGC_OPTION__ARCHITECTURE_TARGET=${IGC_TARGET}
+ -DIGC_OPTION__ARCHITECTURE_HOST=${IGC_TARGET}
+)
+
+ExternalProject_Add(external_igc
+ URL file://${PACKAGE_DIR}/${IGC_FILE}
+ DOWNLOAD_DIR ${DOWNLOAD_DIR}
+ URL_HASH ${IGC_HASH_TYPE}=${IGC_HASH}
+ CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/igc ${DEFAULT_CMAKE_FLAGS} ${IGC_EXTRA_ARGS}
+
+ #
+ # The patch logic is.... fragile... the patches live inside external_igc but
+ # are applied to projects outside its base folder, leading into the situation
+ # you have to remove all external igc_ folders if you rebuild igc or it'll try
+ # to reapply all patches... and fail...
+ #
+ # Ideally we apply all patches while we unpack the deps, but due to the dependency
+ # order we can't access igc source tree yet.
+ #
+ # Only "neat" solution i see is copying all patches to our patch folder.
+ #
+ # igc is pretty set in its way where sub projects ought to live, for some it offers
+ # hooks to supply alternatives folders, other are just hardocded with no way to configure
+ # we symlink everything here, since it's less work than trying to convince the cmake
+ # scripts to accept alternative locations.
+ #
+ PATCH_COMMAND ${CMAKE_COMMAND} -E create_symlink ${BUILD_DIR}/igc_llvm/src/external_igc_llvm/ ${BUILD_DIR}/igc/src/llvm-project &&
+ ${CMAKE_COMMAND} -E create_symlink ${BUILD_DIR}/igc_opencl_clang/src/external_igc_opencl_clang/ ${BUILD_DIR}/igc/src/llvm-project/llvm/projects/opencl-clang &&
+ ${CMAKE_COMMAND} -E create_symlink ${BUILD_DIR}/igc_spirv_translator/src/external_igc_spirv_translator/ ${BUILD_DIR}/igc/src/llvm-project/llvm/projects/llvm-spirv &&
+ ${CMAKE_COMMAND} -E create_symlink ${BUILD_DIR}/igc_spirv_tools/src/external_igc_spirv_tools/ ${BUILD_DIR}/igc/src/SPIRV-Tools &&
+ ${CMAKE_COMMAND} -E create_symlink ${BUILD_DIR}/igc_spirv_headers/src/external_igc_spirv_headers/ ${BUILD_DIR}/igc/src/SPIRV-Headers &&
+ ${CMAKE_COMMAND} -E create_symlink ${BUILD_DIR}/igc_vcintrinsics/src/external_igc_vcintrinsics/ ${BUILD_DIR}/igc/src/vc-intrinsics &&
+ PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/igc_opencl_clang/src/external_igc_opencl_clang/ < ${PATCH_DIR}/igc_opencl_clang.diff &&
+ PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/igc/src/llvm-project/ < ${BUILD_DIR}/igc_opencl_clang/src/external_igc_opencl_clang/patches/clang/0001-OpenCL-3.0-support.patch &&
+ PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/igc/src/llvm-project/ < ${BUILD_DIR}/igc_opencl_clang/src/external_igc_opencl_clang/patches/clang/0002-Remove-__IMAGE_SUPPORT__-macro-for-SPIR.patch &&
+ PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/igc/src/llvm-project/ < ${BUILD_DIR}/igc_opencl_clang/src/external_igc_opencl_clang/patches/clang/0003-Avoid-calling-ParseCommandLineOptions-in-BackendUtil.patch &&
+ PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/igc/src/llvm-project/ < ${BUILD_DIR}/igc_opencl_clang/src/external_igc_opencl_clang/patches/clang/0004-OpenCL-support-cl_ext_float_atomics.patch &&
+ PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/igc/src/llvm-project/ < ${BUILD_DIR}/igc_opencl_clang/src/external_igc_opencl_clang/patches/clang/0005-OpenCL-Add-cl_khr_integer_dot_product.patch &&
+ PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/igc/src/llvm-project/ < ${BUILD_DIR}/igc_opencl_clang/src/external_igc_opencl_clang/patches/llvm/0001-Memory-leak-fix-for-Managed-Static-Mutex.patch &&
+ PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/igc/src/llvm-project/ < ${BUILD_DIR}/igc_opencl_clang/src/external_igc_opencl_clang/patches/llvm/0002-Remove-repo-name-in-LLVM-IR.patch &&
+ PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/igc/src/llvm-project/llvm/projects/llvm-spirv < ${BUILD_DIR}/igc_opencl_clang/src/external_igc_opencl_clang/patches/spirv/0001-update-SPIR-V-headers-for-SPV_INTEL_split_barrier.patch &&
+ PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/igc/src/llvm-project/llvm/projects/llvm-spirv < ${BUILD_DIR}/igc_opencl_clang/src/external_igc_opencl_clang/patches/spirv/0002-Add-support-for-split-barriers-extension-SPV_INTEL_s.patch &&
+ PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/igc/src/llvm-project/llvm/projects/llvm-spirv < ${BUILD_DIR}/igc_opencl_clang/src/external_igc_opencl_clang/patches/spirv/0003-Support-cl_bf16_conversions.patch
+ PREFIX ${BUILD_DIR}/igc
+ INSTALL_DIR ${LIBDIR}/igc
+ CMAKE_GENERATOR ${IGC_GENERATOR}
+)
+
+add_dependencies(
+ external_igc
+ external_igc_vcintrinsics
+ external_igc_llvm
+ external_igc_opencl_clang
+ external_igc_vcintrinsics
+ external_igc_spirv_headers
+ external_igc_spirv_tools
+ external_igc_spirv_translator
+)
+
diff --git a/build_files/build_environment/cmake/macros.cmake b/build_files/build_environment/cmake/macros.cmake
new file mode 100644
index 00000000000..82fc151a038
--- /dev/null
+++ b/build_files/build_environment/cmake/macros.cmake
@@ -0,0 +1,18 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+# shorthand to only unpack a certain dependency
+macro(unpack_only name)
+ string(TOUPPER ${name} UPPER_NAME)
+ set(TARGET_FILE ${${UPPER_NAME}_FILE})
+ set(TARGET_HASH_TYPE ${${UPPER_NAME}_HASH_TYPE})
+ set(TARGET_HASH ${${UPPER_NAME}_HASH})
+ ExternalProject_Add(external_${name}
+ URL file://${PACKAGE_DIR}/${TARGET_FILE}
+ URL_HASH ${TARGET_HASH_TYPE}=${TARGET_HASH}
+ DOWNLOAD_DIR ${DOWNLOAD_DIR}
+ PREFIX ${BUILD_DIR}/${name}
+ CONFIGURE_COMMAND echo .
+ BUILD_COMMAND echo .
+ INSTALL_COMMAND echo .
+ )
+endmacro()
diff --git a/build_files/build_environment/cmake/versions.cmake b/build_files/build_environment/cmake/versions.cmake
index 39b58d47f9f..3026e00e002 100644
--- a/build_files/build_environment/cmake/versions.cmake
+++ b/build_files/build_environment/cmake/versions.cmake
@@ -559,3 +559,55 @@ set(SPIRV_HEADERS_FILE SPIR-V-Headers-${SPIRV_HEADERS_VERSION}.tar.gz)
### DPCPP DEPS END ###
######################
+##########################################
+### Intel Graphics Compiler DEPS BEGIN ###
+##########################################
+# The following deps are build time requirements for the intel graphics
+# compiler, the versions used are taken from the following location
+# https://github.com/intel/intel-graphics-compiler/releases
+
+set(IGC_VERSION 1.0.11222)
+set(IGC_URI https://github.com/intel/intel-graphics-compiler/archive/refs/tags/igc-${IGC_VERSION}.tar.gz)
+set(IGC_HASH d92f0608dcbb52690855685f9447282e5c09c0ba98ae35fabf114fcf8b1e9fcf)
+set(IGC_HASH_TYPE SHA256)
+set(IGC_FILE igc-${IGC_VERSION}.tar.gz)
+
+set(IGC_LLVM_VERSION llvmorg-11.1.0)
+set(IGC_LLVM_URI https://github.com/llvm/llvm-project/archive/refs/tags/${IGC_LLVM_VERSION}.tar.gz)
+set(IGC_LLVM_HASH 53a0719f3f4b0388013cfffd7b10c7d5682eece1929a9553c722348d1f866e79)
+set(IGC_LLVM_HASH_TYPE SHA256)
+set(IGC_LLVM_FILE ${IGC_LLVM_VERSION}.tar.gz)
+
+set(IGC_OPENCL_CLANG_VERSION bbdd1587f577397a105c900be114b56755d1f7dc)
+set(IGC_OPENCL_CLANG_URI https://github.com/intel/opencl-clang/archive/${IGC_OPENCL_CLANG_VERSION}.tar.gz)
+set(IGC_OPENCL_CLANG_HASH d08315f1b0d8a6fef33de2b3e6aa7356534c324910634962c72523d970773efc)
+set(IGC_OPENCL_CLANG_HASH_TYPE SHA256)
+set(IGC_OPENCL_CLANG_FILE opencl-clang-${IGC_OPENCL_CLANG_VERSION}.tar.gz)
+
+set(IGC_VCINTRINSICS_VERSION v0.4.0)
+set(IGC_VCINTRINSICS_URI https://github.com/intel/vc-intrinsics/archive/refs/tags/${IGC_VCINTRINSICS_VERSION}.tar.gz)
+set(IGC_VCINTRINSICS_HASH c8b92682ad5031cf9d5b82a40e7d5c0e763cd9278660adbcaa69aab988e4b589)
+set(IGC_VCINTRINSICS_HASH_TYPE SHA256)
+set(IGC_VCINTRINSICS_FILE vc-intrinsics-${IGC_VCINTRINSICS_VERSION}.tar.gz)
+
+set(IGC_SPIRV_HEADERS_VERSION sdk-1.3.204.1)
+set(IGC_SPIRV_HEADERS_URI https://github.com/KhronosGroup/SPIRV-Headers/archive/refs/tags/${IGC_SPIRV_HEADERS_VERSION}.tar.gz)
+set(IGC_SPIRV_HEADERS_HASH 262864053968c217d45b24b89044a7736a32361894743dd6cfe788df258c746c)
+set(IGC_SPIRV_HEADERS_HASH_TYPE SHA256)
+set(IGC_SPIRV_HEADERS_FILE SPIR-V-Headers-${IGC_SPIRV_HEADERS_VERSION}.tar.gz)
+
+set(IGC_SPIRV_TOOLS_VERSION sdk-1.3.204.1)
+set(IGC_SPIRV_TOOLS_URI https://github.com/KhronosGroup/SPIRV-Tools/archive/refs/tags/${IGC_SPIRV_TOOLS_VERSION}.tar.gz)
+set(IGC_SPIRV_TOOLS_H
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list