mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 12:59:02 +02:00
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>
This commit is contained in:
parent
3d7381f5b5
commit
251fd55c27
|
@ -792,6 +792,7 @@ RECIPE_MAINTAINER:pn-socat = "Hongxu Jia <hongxu.jia@windriver.com>"
|
|||
RECIPE_MAINTAINER:pn-speex = "Michael Opdenacker <michael@opdenacker.org>"
|
||||
RECIPE_MAINTAINER:pn-speexdsp = "Michael Opdenacker <michael@opdenacker.org>"
|
||||
RECIPE_MAINTAINER:pn-spirv-headers = "Jose Quaresma <quaresma.jose@gmail.com>"
|
||||
RECIPE_MAINTAINER:pn-spirv-llvm-translator = "Khem Raj <raj.khem@gmail.com>"
|
||||
RECIPE_MAINTAINER:pn-spirv-tools = "Jose Quaresma <quaresma.jose@gmail.com>"
|
||||
RECIPE_MAINTAINER:pn-sqlite3 = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||
RECIPE_MAINTAINER:pn-squashfs-tools = "Robert Yang <liezhi.yang@windriver.com>"
|
||||
|
|
|
@ -1,30 +0,0 @@
|
|||
From e94e529aefb28b65165e978daa2bfd89867ee8d0 Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
|
||||
Date: Fri, 21 Mar 2025 17:17:52 +0200
|
||||
Subject: [PATCH] SPIRV-LLVM-Translator: fix handling of built-in SPIRV targer
|
||||
|
||||
If the SPIRV-LLVM-Translator is being built together with the LLVM, set
|
||||
the defines declaring whether SPIRV target is also included into the
|
||||
LLVM library or not. Otherwise llvm-spirv execution fails because
|
||||
spirv-ext option is registered twice.
|
||||
|
||||
Upstream-Status: Pending [will be submitted upstream after internal clearance]
|
||||
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
|
||||
|
||||
Index: llvm-project-20.1.0.src/llvm/projects/SPIRV-LLVM-Translator/CMakeLists.txt
|
||||
===================================================================
|
||||
--- llvm-project-20.1.0.src.orig/llvm/projects/SPIRV-LLVM-Translator/CMakeLists.txt
|
||||
+++ llvm-project-20.1.0.src/llvm/projects/SPIRV-LLVM-Translator/CMakeLists.txt
|
||||
@@ -116,6 +116,12 @@ if(LLVM_SPIRV_BUILD_EXTERNAL)
|
||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
|
||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
|
||||
endif()
|
||||
+else()
|
||||
+ is_llvm_target_library("SPIRV" spirv_present_result INCLUDED_TARGETS)
|
||||
+ if(spirv_present_result)
|
||||
+ set(SPIRV_BACKEND_FOUND TRUE)
|
||||
+ add_compile_definitions(LLVM_SPIRV_BACKEND_TARGET_PRESENT)
|
||||
+ endif()
|
||||
endif()
|
||||
|
||||
set(LLVM_SPIRV_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
|
@ -1,25 +0,0 @@
|
|||
From e94e529aefb28b65165e978daa2bfd89867ee8d0 Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
|
||||
Date: Thu, 9 Apr 2025 15:20:32 +0200
|
||||
Subject: [PATCH] SPIRV-LLVM-Translator: build shared library
|
||||
|
||||
By default SPIRV-LLVM-Translator builds only a static version of the library.
|
||||
Unfortunately this might result in linking erros when uninative is in play, if
|
||||
libLLVMSPIRV uses symbols which are provided only by the uninative libc and are
|
||||
not provided by the host libc.
|
||||
|
||||
Upstream-Status: Inappropriate [OE-Specific]
|
||||
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
|
||||
|
||||
Index: llvm-project-20.1.1.src/llvm/projects/SPIRV-LLVM-Translator/lib/SPIRV/CMakeLists.txt
|
||||
===================================================================
|
||||
--- llvm-project-20.1.1.src.orig/llvm/projects/SPIRV-LLVM-Translator/lib/SPIRV/CMakeLists.txt
|
||||
+++ llvm-project-20.1.1.src/llvm/projects/SPIRV-LLVM-Translator/lib/SPIRV/CMakeLists.txt
|
||||
@@ -42,6 +42,7 @@ set(SRC_LIST
|
||||
)
|
||||
add_llvm_library(LLVMSPIRVLib
|
||||
${SRC_LIST}
|
||||
+ SHARED
|
||||
LINK_COMPONENTS
|
||||
Analysis
|
||||
BitWriter
|
|
@ -155,7 +155,6 @@ EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \
|
|||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_CXX_FLAGS_RELEASE='${CXXFLAGS} -DNDEBUG -g0' \
|
||||
-DCMAKE_C_FLAGS_RELEASE='${CFLAGS} -DNDEBUG -g0' \
|
||||
-DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR=${S}/llvm/projects/SPIRV-LLVM-Translator/SPIRV-Headers \
|
||||
-DLLVM_ENABLE_PROJECTS='${LLVM_PROJECTS}' \
|
||||
-DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR} \
|
||||
-DLLVM_VERSION_SUFFIX='${VER_SUFFIX}' \
|
||||
|
@ -171,7 +170,6 @@ EXTRA_OECMAKE:append:class-nativesdk = "\
|
|||
-DCROSS_TOOLCHAIN_FLAGS_NATIVE='-DLLDB_PYTHON_RELATIVE_PATH=${PYTHON_SITEPACKAGES_DIR} \
|
||||
-DLLDB_PYTHON_EXE_RELATIVE_PATH=${PYTHON_PN} \
|
||||
-DLLDB_PYTHON_EXT_SUFFIX=${SOLIBSDEV} \
|
||||
-DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR=${S}/llvm/projects/SPIRV-LLVM-Translator/SPIRV-Headers \
|
||||
-DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain-native.cmake' \
|
||||
-DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ranlib \
|
||||
-DCMAKE_AR=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ar \
|
||||
|
@ -187,8 +185,6 @@ EXTRA_OECMAKE:append:class-nativesdk = "\
|
|||
-DPYTHON_EXECUTABLE='${PYTHON}' \
|
||||
"
|
||||
EXTRA_OECMAKE:append:class-target = "\
|
||||
-DCROSS_TOOLCHAIN_FLAGS_NATIVE='-DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR=${S}/llvm/projects/SPIRV-LLVM-Translator/SPIRV-Headers \
|
||||
' \
|
||||
-DLLVM_NATIVE_TOOL_DIR=${STAGING_BINDIR_NATIVE} \
|
||||
-DLLVM_HEADERS_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-min-tblgen \
|
||||
-DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ranlib \
|
||||
|
@ -310,11 +306,11 @@ do_install:append:class-nativesdk () {
|
|||
fi
|
||||
}
|
||||
|
||||
PROVIDES:append:class-native = " llvm-native libclc-native spirv-llvm-translator-native"
|
||||
PROVIDES:append:class-target = " llvm libclc spirv-llvm-translator"
|
||||
PROVIDES:append:class-nativesdk = " nativesdk-llvm nativesdk-libclc nativesdk-spirv-llvm-translator"
|
||||
PROVIDES:append:class-native = " llvm-native libclc-native"
|
||||
PROVIDES:append:class-target = " llvm libclc"
|
||||
PROVIDES:append:class-nativesdk = " nativesdk-llvm nativesdk-libclc"
|
||||
|
||||
PACKAGES =+ "${PN}-libllvm ${PN}-lldb-python ${PN}-libclang-cpp ${PN}-tidy ${PN}-format ${PN}-tools ${PN}-clc ${PN}-spirv \
|
||||
PACKAGES =+ "${PN}-libllvm ${PN}-lldb-python ${PN}-libclang-cpp ${PN}-tidy ${PN}-format ${PN}-tools ${PN}-clc \
|
||||
libclang lldb lldb-server liblldb llvm-linker-tools"
|
||||
|
||||
|
||||
|
@ -334,7 +330,6 @@ RDEPENDS:${PN}-tools += "\
|
|||
perl-module-term-ansicolor \
|
||||
"
|
||||
|
||||
RPROVIDES:${PN}-spirv = "${MLPREFIX}spirv-llvm-translator"
|
||||
RPROVIDES:${PN}-clc = "${MLPREFIX}libclc"
|
||||
|
||||
RRECOMMENDS:${PN}-tidy += "${PN}-tools"
|
||||
|
@ -405,11 +400,6 @@ FILES:${PN} += "\
|
|||
|
||||
FILES:${PN}-clc += "${datadir}/clc"
|
||||
|
||||
FILES:${PN}-spirv = " \
|
||||
${bindir}/llvm-spirv \
|
||||
${libdir}/libLLVMSPIRV.so.* \
|
||||
"
|
||||
|
||||
FILES:lldb = "\
|
||||
${bindir}/lldb \
|
||||
${bindir}/lldb-argdumper \
|
||||
|
@ -456,10 +446,6 @@ INSANE_SKIP:${PN}-lldb-python += "dev-so dev-deps"
|
|||
INSANE_SKIP:${MLPREFIX}liblldb = "dev-so"
|
||||
INSANE_SKIP:${PN}-libllvm = "dev-so"
|
||||
|
||||
# SPIRV-LLVM-Translator provides only static libraries, they are included into
|
||||
# the clang-spirv package.
|
||||
INSANE_SKIP:${PN}-spirv += "dev-so"
|
||||
|
||||
#Avoid SSTATE_SCAN_COMMAND running sed over llvm-config.
|
||||
SSTATE_SCAN_FILES:remove = "*-config"
|
||||
|
||||
|
|
|
@ -17,21 +17,8 @@ BASEURI ?= "${LLVM_HTTP}/llvm-project/releases/download/llvmorg-${PV}/llvm-proje
|
|||
SOURCEDIR ?= "llvm-project-${PV}.src"
|
||||
SRC_URI[sha256sum] = "b6183c41281ee3f23da7fda790c6d4f5877aed103d1e759763b1008bdd0e2c50"
|
||||
|
||||
SRCREV_spirv = "6dd8f2a1681a27f16c53d932d2765920f312aeb2"
|
||||
SRCREV_spirvheaders = "09913f088a1197aba4aefd300a876b2ebbaa3391"
|
||||
SRCREV_FORMAT .= "spirv_spirvheaders"
|
||||
# pattern: llvm_branch_200, currently there are no minor releases, so, no llvm_branch_201
|
||||
SPIRV_BRANCH = "llvm_release_${@oe.utils.trim_version('${PV}', 1).replace('.', '')}0"
|
||||
SPIRVURI = " \
|
||||
git://github.com/KhronosGroup/SPIRV-LLVM-Translator;protocol=https;name=spirv;branch=${SPIRV_BRANCH};destsuffix=llvm-project-${PV}.src/llvm/projects/SPIRV-LLVM-Translator \
|
||||
git://github.com/KhronosGroup/SPIRV-Headers;protocol=https;destsuffix=llvm-project-${PV}.src/llvm/projects/SPIRV-LLVM-Translator/SPIRV-Headers;name=spirvheaders;branch=main \
|
||||
file://spirv-internal-build.patch \
|
||||
file://spirv-shared-library.patch \
|
||||
"
|
||||
|
||||
SRC_URI = "\
|
||||
${BASEURI} \
|
||||
${SPIRVURI} \
|
||||
file://0001-libcxxabi-Find-libunwind-headers-when-LIBCXXABI_LIBU.patch \
|
||||
file://0002-compiler-rt-support-a-new-embedded-linux-target.patch \
|
||||
file://0003-compiler-rt-Simplify-cross-compilation.-Don-t-use-na.patch \
|
||||
|
|
36
meta/recipes-graphics/spir/spirv-llvm-translator_20.1.2.bb
Normal file
36
meta/recipes-graphics/spir/spirv-llvm-translator_20.1.2.bb
Normal file
|
@ -0,0 +1,36 @@
|
|||
HOMEPAGE = "https://github.com/KhronosGroup/SPIRV-LLVM-Translator"
|
||||
SUMMARY = "LLVM/SPIR-V Bi-Directional Translator, a library and tool for translation between LLVM IR and SPIR-V."
|
||||
|
||||
LICENSE = "NCSA"
|
||||
LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=47e311aa9caedd1b3abf098bd7814d1d"
|
||||
|
||||
# pattern: llvm_branch_200, currently there are no minor releases, so, no llvm_branch_201
|
||||
SPIRV_BRANCH = "llvm_release_${@oe.utils.trim_version('${PV}', 1).replace('.', '')}0"
|
||||
SRC_URI = " \
|
||||
git://github.com/KhronosGroup/SPIRV-LLVM-Translator;protocol=https;name=spirv;branch=${SPIRV_BRANCH} \
|
||||
"
|
||||
|
||||
SRCREV_spirv = "6dd8f2a1681a27f16c53d932d2765920f312aeb2"
|
||||
|
||||
UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
DEPENDS = "clang spirv-tools spirv-headers"
|
||||
|
||||
inherit cmake pkgconfig python3native
|
||||
|
||||
# Specify any options you want to pass to cmake using EXTRA_OECMAKE:
|
||||
# for CMAKE_SHARED_LIBS=OFF see https://github.com/KhronosGroup/SPIRV-LLVM-Translator/issues/1868
|
||||
EXTRA_OECMAKE = "\
|
||||
-DBUILD_SHARED_LIBS=ON \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
|
||||
-DCMAKE_SKIP_RPATH=ON \
|
||||
-DLLVM_EXTERNAL_LIT=lit \
|
||||
-DLLVM_INCLUDE_TESTS=ON \
|
||||
-Wno-dev \
|
||||
-DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR=${STAGING_INCDIR}/.. \
|
||||
"
|
||||
|
||||
BBCLASSEXTEND = "native nativesdk"
|
Loading…
Reference in New Issue
Block a user