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 " RECIPE_MAINTAINER:pn-speex = "Michael Opdenacker " RECIPE_MAINTAINER:pn-speexdsp = "Michael Opdenacker " RECIPE_MAINTAINER:pn-spirv-headers = "Jose Quaresma " +RECIPE_MAINTAINER:pn-spirv-llvm-translator = "Khem Raj " RECIPE_MAINTAINER:pn-spirv-tools = "Jose Quaresma " RECIPE_MAINTAINER:pn-sqlite3 = "Anuj Mittal " RECIPE_MAINTAINER:pn-squashfs-tools = "Robert Yang " 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 @@ -From e94e529aefb28b65165e978daa2bfd89867ee8d0 Mon Sep 17 00:00:00 2001 -From: Dmitry Baryshkov -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 - -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) 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 @@ -From e94e529aefb28b65165e978daa2bfd89867ee8d0 Mon Sep 17 00:00:00 2001 -From: Dmitry Baryshkov -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 - -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 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 \ -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" 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 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 \ 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 @@ +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\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"