diff options
| author | Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> | 2025-05-06 03:03:59 +0300 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2025-05-08 10:28:18 +0100 |
| commit | 251fd55c27372d34d3d088815297d443856c4080 (patch) | |
| tree | 11c2a97c1e0c30472c7697a3b86296fce12a7b42 /meta/recipes-devtools/clang | |
| parent | 3d7381f5b5c3301775dae38f6833dbb5c36b7770 (diff) | |
| download | poky-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>
Diffstat (limited to 'meta/recipes-devtools/clang')
| -rw-r--r-- | meta/recipes-devtools/clang/clang/spirv-internal-build.patch | 30 | ||||
| -rw-r--r-- | meta/recipes-devtools/clang/clang/spirv-shared-library.patch | 25 | ||||
| -rw-r--r-- | meta/recipes-devtools/clang/clang_git.bb | 22 | ||||
| -rw-r--r-- | meta/recipes-devtools/clang/common.inc | 13 |
4 files changed, 4 insertions, 86 deletions
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 @@ | |||
| 1 | From e94e529aefb28b65165e978daa2bfd89867ee8d0 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> | ||
| 3 | Date: Fri, 21 Mar 2025 17:17:52 +0200 | ||
| 4 | Subject: [PATCH] SPIRV-LLVM-Translator: fix handling of built-in SPIRV targer | ||
| 5 | |||
| 6 | If the SPIRV-LLVM-Translator is being built together with the LLVM, set | ||
| 7 | the defines declaring whether SPIRV target is also included into the | ||
| 8 | LLVM library or not. Otherwise llvm-spirv execution fails because | ||
| 9 | spirv-ext option is registered twice. | ||
| 10 | |||
| 11 | Upstream-Status: Pending [will be submitted upstream after internal clearance] | ||
| 12 | Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> | ||
| 13 | |||
| 14 | Index: 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 @@ | |||
| 1 | From e94e529aefb28b65165e978daa2bfd89867ee8d0 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> | ||
| 3 | Date: Thu, 9 Apr 2025 15:20:32 +0200 | ||
| 4 | Subject: [PATCH] SPIRV-LLVM-Translator: build shared library | ||
| 5 | |||
| 6 | By default SPIRV-LLVM-Translator builds only a static version of the library. | ||
| 7 | Unfortunately this might result in linking erros when uninative is in play, if | ||
| 8 | libLLVMSPIRV uses symbols which are provided only by the uninative libc and are | ||
| 9 | not provided by the host libc. | ||
| 10 | |||
| 11 | Upstream-Status: Inappropriate [OE-Specific] | ||
| 12 | Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> | ||
| 13 | |||
| 14 | Index: 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 | " |
| 189 | EXTRA_OECMAKE:append:class-target = "\ | 187 | EXTRA_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 | ||
| 313 | PROVIDES:append:class-native = " llvm-native libclc-native spirv-llvm-translator-native" | 309 | PROVIDES:append:class-native = " llvm-native libclc-native" |
| 314 | PROVIDES:append:class-target = " llvm libclc spirv-llvm-translator" | 310 | PROVIDES:append:class-target = " llvm libclc" |
| 315 | PROVIDES:append:class-nativesdk = " nativesdk-llvm nativesdk-libclc nativesdk-spirv-llvm-translator" | 311 | PROVIDES:append:class-nativesdk = " nativesdk-llvm nativesdk-libclc" |
| 316 | 312 | ||
| 317 | PACKAGES =+ "${PN}-libllvm ${PN}-lldb-python ${PN}-libclang-cpp ${PN}-tidy ${PN}-format ${PN}-tools ${PN}-clc ${PN}-spirv \ | 313 | PACKAGES =+ "${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 | ||
| 337 | RPROVIDES:${PN}-spirv = "${MLPREFIX}spirv-llvm-translator" | ||
| 338 | RPROVIDES:${PN}-clc = "${MLPREFIX}libclc" | 333 | RPROVIDES:${PN}-clc = "${MLPREFIX}libclc" |
| 339 | 334 | ||
| 340 | RRECOMMENDS:${PN}-tidy += "${PN}-tools" | 335 | RRECOMMENDS:${PN}-tidy += "${PN}-tools" |
| @@ -405,11 +400,6 @@ FILES:${PN} += "\ | |||
| 405 | 400 | ||
| 406 | FILES:${PN}-clc += "${datadir}/clc" | 401 | FILES:${PN}-clc += "${datadir}/clc" |
| 407 | 402 | ||
| 408 | FILES:${PN}-spirv = " \ | ||
| 409 | ${bindir}/llvm-spirv \ | ||
| 410 | ${libdir}/libLLVMSPIRV.so.* \ | ||
| 411 | " | ||
| 412 | |||
| 413 | FILES:lldb = "\ | 403 | FILES: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" | |||
| 456 | INSANE_SKIP:${MLPREFIX}liblldb = "dev-so" | 446 | INSANE_SKIP:${MLPREFIX}liblldb = "dev-so" |
| 457 | INSANE_SKIP:${PN}-libllvm = "dev-so" | 447 | INSANE_SKIP:${PN}-libllvm = "dev-so" |
| 458 | 448 | ||
| 459 | # SPIRV-LLVM-Translator provides only static libraries, they are included into | ||
| 460 | # the clang-spirv package. | ||
| 461 | INSANE_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. |
| 464 | SSTATE_SCAN_FILES:remove = "*-config" | 450 | SSTATE_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 | |||
| 17 | SOURCEDIR ?= "llvm-project-${PV}.src" | 17 | SOURCEDIR ?= "llvm-project-${PV}.src" |
| 18 | SRC_URI[sha256sum] = "b6183c41281ee3f23da7fda790c6d4f5877aed103d1e759763b1008bdd0e2c50" | 18 | SRC_URI[sha256sum] = "b6183c41281ee3f23da7fda790c6d4f5877aed103d1e759763b1008bdd0e2c50" |
| 19 | 19 | ||
| 20 | SRCREV_spirv = "6dd8f2a1681a27f16c53d932d2765920f312aeb2" | ||
| 21 | SRCREV_spirvheaders = "09913f088a1197aba4aefd300a876b2ebbaa3391" | ||
| 22 | SRCREV_FORMAT .= "spirv_spirvheaders" | ||
| 23 | # pattern: llvm_branch_200, currently there are no minor releases, so, no llvm_branch_201 | ||
| 24 | SPIRV_BRANCH = "llvm_release_${@oe.utils.trim_version('${PV}', 1).replace('.', '')}0" | ||
| 25 | SPIRVURI = " \ | ||
| 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 | |||
| 32 | SRC_URI = "\ | 20 | SRC_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 \ |
