summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>2025-05-06 03:03:59 +0300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2025-05-08 10:28:18 +0100
commit251fd55c27372d34d3d088815297d443856c4080 (patch)
tree11c2a97c1e0c30472c7697a3b86296fce12a7b42
parent3d7381f5b5c3301775dae38f6833dbb5c36b7770 (diff)
downloadpoky-251fd55c27372d34d3d088815297d443856c4080.tar.gz
clang: split SPIRV-LLVM-Translator to its own recipe
The translator is not a part of the same source tree. As such it has tendency to break on clang upgrades. Split it to its own recipe in order to ease handling of clang. This also makes it use SPIR-V headers provided by the spirv-headers recipe instead of vendoring them in. (From OE-Core rev: 4178fe97371bce0bd63b19f57b872ccefd1ec45c) Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/conf/distro/include/maintainers.inc1
-rw-r--r--meta/recipes-devtools/clang/clang/spirv-internal-build.patch30
-rw-r--r--meta/recipes-devtools/clang/clang/spirv-shared-library.patch25
-rw-r--r--meta/recipes-devtools/clang/clang_git.bb22
-rw-r--r--meta/recipes-devtools/clang/common.inc13
-rw-r--r--meta/recipes-graphics/spir/spirv-llvm-translator_20.1.2.bb36
6 files changed, 41 insertions, 86 deletions
diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
index b67433d4d2..7d4a8e2417 100644
--- a/meta/conf/distro/include/maintainers.inc
+++ b/meta/conf/distro/include/maintainers.inc
@@ -792,6 +792,7 @@ RECIPE_MAINTAINER:pn-socat = "Hongxu Jia <hongxu.jia@windriver.com>"
792RECIPE_MAINTAINER:pn-speex = "Michael Opdenacker <michael@opdenacker.org>" 792RECIPE_MAINTAINER:pn-speex = "Michael Opdenacker <michael@opdenacker.org>"
793RECIPE_MAINTAINER:pn-speexdsp = "Michael Opdenacker <michael@opdenacker.org>" 793RECIPE_MAINTAINER:pn-speexdsp = "Michael Opdenacker <michael@opdenacker.org>"
794RECIPE_MAINTAINER:pn-spirv-headers = "Jose Quaresma <quaresma.jose@gmail.com>" 794RECIPE_MAINTAINER:pn-spirv-headers = "Jose Quaresma <quaresma.jose@gmail.com>"
795RECIPE_MAINTAINER:pn-spirv-llvm-translator = "Khem Raj <raj.khem@gmail.com>"
795RECIPE_MAINTAINER:pn-spirv-tools = "Jose Quaresma <quaresma.jose@gmail.com>" 796RECIPE_MAINTAINER:pn-spirv-tools = "Jose Quaresma <quaresma.jose@gmail.com>"
796RECIPE_MAINTAINER:pn-sqlite3 = "Anuj Mittal <anuj.mittal@intel.com>" 797RECIPE_MAINTAINER:pn-sqlite3 = "Anuj Mittal <anuj.mittal@intel.com>"
797RECIPE_MAINTAINER:pn-squashfs-tools = "Robert Yang <liezhi.yang@windriver.com>" 798RECIPE_MAINTAINER:pn-squashfs-tools = "Robert Yang <liezhi.yang@windriver.com>"
diff --git a/meta/recipes-devtools/clang/clang/spirv-internal-build.patch b/meta/recipes-devtools/clang/clang/spirv-internal-build.patch
deleted file mode 100644
index 555d40f4fb..0000000000
--- a/meta/recipes-devtools/clang/clang/spirv-internal-build.patch
+++ /dev/null
@@ -1,30 +0,0 @@
1From e94e529aefb28b65165e978daa2bfd89867ee8d0 Mon Sep 17 00:00:00 2001
2From: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
3Date: Fri, 21 Mar 2025 17:17:52 +0200
4Subject: [PATCH] SPIRV-LLVM-Translator: fix handling of built-in SPIRV targer
5
6If the SPIRV-LLVM-Translator is being built together with the LLVM, set
7the defines declaring whether SPIRV target is also included into the
8LLVM library or not. Otherwise llvm-spirv execution fails because
9spirv-ext option is registered twice.
10
11Upstream-Status: Pending [will be submitted upstream after internal clearance]
12Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
13
14Index: llvm-project-20.1.0.src/llvm/projects/SPIRV-LLVM-Translator/CMakeLists.txt
15===================================================================
16--- llvm-project-20.1.0.src.orig/llvm/projects/SPIRV-LLVM-Translator/CMakeLists.txt
17+++ llvm-project-20.1.0.src/llvm/projects/SPIRV-LLVM-Translator/CMakeLists.txt
18@@ -116,6 +116,12 @@ if(LLVM_SPIRV_BUILD_EXTERNAL)
19 set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
20 set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
21 endif()
22+else()
23+ is_llvm_target_library("SPIRV" spirv_present_result INCLUDED_TARGETS)
24+ if(spirv_present_result)
25+ set(SPIRV_BACKEND_FOUND TRUE)
26+ add_compile_definitions(LLVM_SPIRV_BACKEND_TARGET_PRESENT)
27+ endif()
28 endif()
29
30 set(LLVM_SPIRV_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include)
diff --git a/meta/recipes-devtools/clang/clang/spirv-shared-library.patch b/meta/recipes-devtools/clang/clang/spirv-shared-library.patch
deleted file mode 100644
index edc595d576..0000000000
--- a/meta/recipes-devtools/clang/clang/spirv-shared-library.patch
+++ /dev/null
@@ -1,25 +0,0 @@
1From e94e529aefb28b65165e978daa2bfd89867ee8d0 Mon Sep 17 00:00:00 2001
2From: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
3Date: Thu, 9 Apr 2025 15:20:32 +0200
4Subject: [PATCH] SPIRV-LLVM-Translator: build shared library
5
6By default SPIRV-LLVM-Translator builds only a static version of the library.
7Unfortunately this might result in linking erros when uninative is in play, if
8libLLVMSPIRV uses symbols which are provided only by the uninative libc and are
9not provided by the host libc.
10
11Upstream-Status: Inappropriate [OE-Specific]
12Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
13
14Index: llvm-project-20.1.1.src/llvm/projects/SPIRV-LLVM-Translator/lib/SPIRV/CMakeLists.txt
15===================================================================
16--- llvm-project-20.1.1.src.orig/llvm/projects/SPIRV-LLVM-Translator/lib/SPIRV/CMakeLists.txt
17+++ llvm-project-20.1.1.src/llvm/projects/SPIRV-LLVM-Translator/lib/SPIRV/CMakeLists.txt
18@@ -42,6 +42,7 @@ set(SRC_LIST
19 )
20 add_llvm_library(LLVMSPIRVLib
21 ${SRC_LIST}
22+ SHARED
23 LINK_COMPONENTS
24 Analysis
25 BitWriter
diff --git a/meta/recipes-devtools/clang/clang_git.bb b/meta/recipes-devtools/clang/clang_git.bb
index 67cd5151df..ba037e5978 100644
--- a/meta/recipes-devtools/clang/clang_git.bb
+++ b/meta/recipes-devtools/clang/clang_git.bb
@@ -155,7 +155,6 @@ EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \
155 -DCMAKE_BUILD_TYPE=Release \ 155 -DCMAKE_BUILD_TYPE=Release \
156 -DCMAKE_CXX_FLAGS_RELEASE='${CXXFLAGS} -DNDEBUG -g0' \ 156 -DCMAKE_CXX_FLAGS_RELEASE='${CXXFLAGS} -DNDEBUG -g0' \
157 -DCMAKE_C_FLAGS_RELEASE='${CFLAGS} -DNDEBUG -g0' \ 157 -DCMAKE_C_FLAGS_RELEASE='${CFLAGS} -DNDEBUG -g0' \
158 -DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR=${S}/llvm/projects/SPIRV-LLVM-Translator/SPIRV-Headers \
159 -DLLVM_ENABLE_PROJECTS='${LLVM_PROJECTS}' \ 158 -DLLVM_ENABLE_PROJECTS='${LLVM_PROJECTS}' \
160 -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR} \ 159 -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR} \
161 -DLLVM_VERSION_SUFFIX='${VER_SUFFIX}' \ 160 -DLLVM_VERSION_SUFFIX='${VER_SUFFIX}' \
@@ -171,7 +170,6 @@ EXTRA_OECMAKE:append:class-nativesdk = "\
171 -DCROSS_TOOLCHAIN_FLAGS_NATIVE='-DLLDB_PYTHON_RELATIVE_PATH=${PYTHON_SITEPACKAGES_DIR} \ 170 -DCROSS_TOOLCHAIN_FLAGS_NATIVE='-DLLDB_PYTHON_RELATIVE_PATH=${PYTHON_SITEPACKAGES_DIR} \
172 -DLLDB_PYTHON_EXE_RELATIVE_PATH=${PYTHON_PN} \ 171 -DLLDB_PYTHON_EXE_RELATIVE_PATH=${PYTHON_PN} \
173 -DLLDB_PYTHON_EXT_SUFFIX=${SOLIBSDEV} \ 172 -DLLDB_PYTHON_EXT_SUFFIX=${SOLIBSDEV} \
174 -DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR=${S}/llvm/projects/SPIRV-LLVM-Translator/SPIRV-Headers \
175 -DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain-native.cmake' \ 173 -DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain-native.cmake' \
176 -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ranlib \ 174 -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ranlib \
177 -DCMAKE_AR=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ar \ 175 -DCMAKE_AR=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ar \
@@ -187,8 +185,6 @@ EXTRA_OECMAKE:append:class-nativesdk = "\
187 -DPYTHON_EXECUTABLE='${PYTHON}' \ 185 -DPYTHON_EXECUTABLE='${PYTHON}' \
188" 186"
189EXTRA_OECMAKE:append:class-target = "\ 187EXTRA_OECMAKE:append:class-target = "\
190 -DCROSS_TOOLCHAIN_FLAGS_NATIVE='-DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR=${S}/llvm/projects/SPIRV-LLVM-Translator/SPIRV-Headers \
191' \
192 -DLLVM_NATIVE_TOOL_DIR=${STAGING_BINDIR_NATIVE} \ 188 -DLLVM_NATIVE_TOOL_DIR=${STAGING_BINDIR_NATIVE} \
193 -DLLVM_HEADERS_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-min-tblgen \ 189 -DLLVM_HEADERS_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-min-tblgen \
194 -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ranlib \ 190 -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ranlib \
@@ -310,11 +306,11 @@ do_install:append:class-nativesdk () {
310 fi 306 fi
311} 307}
312 308
313PROVIDES:append:class-native = " llvm-native libclc-native spirv-llvm-translator-native" 309PROVIDES:append:class-native = " llvm-native libclc-native"
314PROVIDES:append:class-target = " llvm libclc spirv-llvm-translator" 310PROVIDES:append:class-target = " llvm libclc"
315PROVIDES:append:class-nativesdk = " nativesdk-llvm nativesdk-libclc nativesdk-spirv-llvm-translator" 311PROVIDES:append:class-nativesdk = " nativesdk-llvm nativesdk-libclc"
316 312
317PACKAGES =+ "${PN}-libllvm ${PN}-lldb-python ${PN}-libclang-cpp ${PN}-tidy ${PN}-format ${PN}-tools ${PN}-clc ${PN}-spirv \ 313PACKAGES =+ "${PN}-libllvm ${PN}-lldb-python ${PN}-libclang-cpp ${PN}-tidy ${PN}-format ${PN}-tools ${PN}-clc \
318 libclang lldb lldb-server liblldb llvm-linker-tools" 314 libclang lldb lldb-server liblldb llvm-linker-tools"
319 315
320 316
@@ -334,7 +330,6 @@ RDEPENDS:${PN}-tools += "\
334 perl-module-term-ansicolor \ 330 perl-module-term-ansicolor \
335" 331"
336 332
337RPROVIDES:${PN}-spirv = "${MLPREFIX}spirv-llvm-translator"
338RPROVIDES:${PN}-clc = "${MLPREFIX}libclc" 333RPROVIDES:${PN}-clc = "${MLPREFIX}libclc"
339 334
340RRECOMMENDS:${PN}-tidy += "${PN}-tools" 335RRECOMMENDS:${PN}-tidy += "${PN}-tools"
@@ -405,11 +400,6 @@ FILES:${PN} += "\
405 400
406FILES:${PN}-clc += "${datadir}/clc" 401FILES:${PN}-clc += "${datadir}/clc"
407 402
408FILES:${PN}-spirv = " \
409 ${bindir}/llvm-spirv \
410 ${libdir}/libLLVMSPIRV.so.* \
411"
412
413FILES:lldb = "\ 403FILES:lldb = "\
414 ${bindir}/lldb \ 404 ${bindir}/lldb \
415 ${bindir}/lldb-argdumper \ 405 ${bindir}/lldb-argdumper \
@@ -456,10 +446,6 @@ INSANE_SKIP:${PN}-lldb-python += "dev-so dev-deps"
456INSANE_SKIP:${MLPREFIX}liblldb = "dev-so" 446INSANE_SKIP:${MLPREFIX}liblldb = "dev-so"
457INSANE_SKIP:${PN}-libllvm = "dev-so" 447INSANE_SKIP:${PN}-libllvm = "dev-so"
458 448
459# SPIRV-LLVM-Translator provides only static libraries, they are included into
460# the clang-spirv package.
461INSANE_SKIP:${PN}-spirv += "dev-so"
462
463#Avoid SSTATE_SCAN_COMMAND running sed over llvm-config. 449#Avoid SSTATE_SCAN_COMMAND running sed over llvm-config.
464SSTATE_SCAN_FILES:remove = "*-config" 450SSTATE_SCAN_FILES:remove = "*-config"
465 451
diff --git a/meta/recipes-devtools/clang/common.inc b/meta/recipes-devtools/clang/common.inc
index f733566bc8..a7b508039f 100644
--- a/meta/recipes-devtools/clang/common.inc
+++ b/meta/recipes-devtools/clang/common.inc
@@ -17,21 +17,8 @@ BASEURI ?= "${LLVM_HTTP}/llvm-project/releases/download/llvmorg-${PV}/llvm-proje
17SOURCEDIR ?= "llvm-project-${PV}.src" 17SOURCEDIR ?= "llvm-project-${PV}.src"
18SRC_URI[sha256sum] = "b6183c41281ee3f23da7fda790c6d4f5877aed103d1e759763b1008bdd0e2c50" 18SRC_URI[sha256sum] = "b6183c41281ee3f23da7fda790c6d4f5877aed103d1e759763b1008bdd0e2c50"
19 19
20SRCREV_spirv = "6dd8f2a1681a27f16c53d932d2765920f312aeb2"
21SRCREV_spirvheaders = "09913f088a1197aba4aefd300a876b2ebbaa3391"
22SRCREV_FORMAT .= "spirv_spirvheaders"
23# pattern: llvm_branch_200, currently there are no minor releases, so, no llvm_branch_201
24SPIRV_BRANCH = "llvm_release_${@oe.utils.trim_version('${PV}', 1).replace('.', '')}0"
25SPIRVURI = " \
26 git://github.com/KhronosGroup/SPIRV-LLVM-Translator;protocol=https;name=spirv;branch=${SPIRV_BRANCH};destsuffix=llvm-project-${PV}.src/llvm/projects/SPIRV-LLVM-Translator \
27 git://github.com/KhronosGroup/SPIRV-Headers;protocol=https;destsuffix=llvm-project-${PV}.src/llvm/projects/SPIRV-LLVM-Translator/SPIRV-Headers;name=spirvheaders;branch=main \
28 file://spirv-internal-build.patch \
29 file://spirv-shared-library.patch \
30"
31
32SRC_URI = "\ 20SRC_URI = "\
33 ${BASEURI} \ 21 ${BASEURI} \
34 ${SPIRVURI} \
35 file://0001-libcxxabi-Find-libunwind-headers-when-LIBCXXABI_LIBU.patch \ 22 file://0001-libcxxabi-Find-libunwind-headers-when-LIBCXXABI_LIBU.patch \
36 file://0002-compiler-rt-support-a-new-embedded-linux-target.patch \ 23 file://0002-compiler-rt-support-a-new-embedded-linux-target.patch \
37 file://0003-compiler-rt-Simplify-cross-compilation.-Don-t-use-na.patch \ 24 file://0003-compiler-rt-Simplify-cross-compilation.-Don-t-use-na.patch \
diff --git a/meta/recipes-graphics/spir/spirv-llvm-translator_20.1.2.bb b/meta/recipes-graphics/spir/spirv-llvm-translator_20.1.2.bb
new file mode 100644
index 0000000000..bc2bebcda8
--- /dev/null
+++ b/meta/recipes-graphics/spir/spirv-llvm-translator_20.1.2.bb
@@ -0,0 +1,36 @@
1HOMEPAGE = "https://github.com/KhronosGroup/SPIRV-LLVM-Translator"
2SUMMARY = "LLVM/SPIR-V Bi-Directional Translator, a library and tool for translation between LLVM IR and SPIR-V."
3
4LICENSE = "NCSA"
5LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=47e311aa9caedd1b3abf098bd7814d1d"
6
7# pattern: llvm_branch_200, currently there are no minor releases, so, no llvm_branch_201
8SPIRV_BRANCH = "llvm_release_${@oe.utils.trim_version('${PV}', 1).replace('.', '')}0"
9SRC_URI = " \
10 git://github.com/KhronosGroup/SPIRV-LLVM-Translator;protocol=https;name=spirv;branch=${SPIRV_BRANCH} \
11"
12
13SRCREV_spirv = "6dd8f2a1681a27f16c53d932d2765920f312aeb2"
14
15UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
16
17S = "${WORKDIR}/git"
18
19DEPENDS = "clang spirv-tools spirv-headers"
20
21inherit cmake pkgconfig python3native
22
23# Specify any options you want to pass to cmake using EXTRA_OECMAKE:
24# for CMAKE_SHARED_LIBS=OFF see https://github.com/KhronosGroup/SPIRV-LLVM-Translator/issues/1868
25EXTRA_OECMAKE = "\
26 -DBUILD_SHARED_LIBS=ON \
27 -DCMAKE_BUILD_TYPE=Release \
28 -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
29 -DCMAKE_SKIP_RPATH=ON \
30 -DLLVM_EXTERNAL_LIT=lit \
31 -DLLVM_INCLUDE_TESTS=ON \
32 -Wno-dev \
33 -DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR=${STAGING_INCDIR}/.. \
34"
35
36BBCLASSEXTEND = "native nativesdk"