From 58f9c7b83c86b06e1a086dbe884e216799410118 Mon Sep 17 00:00:00 2001 From: Romain Naour Date: Fri, 16 May 2025 19:11:14 +0200 Subject: [PATCH] package/spirv-llvm-translator: add target variant to provide LLVMSPIRVLib This target version is needed for Rusticl which is an LLVM based OpenCL framework[1]. Rusticl allow programs to compile OpenCL C/C++ code at runtime with Clang. Clang generates LLVM IR which is translated into SPIR-V by spirv-llvm-translator. Finally, mesa can use its internal tools to manage SPIR-V. [1]: https://docs.mesa3d.org/rusticl.html Signed-off-by: Romain Naour Signed-off-by: Sebastian Weyer Signed-off-by: Antoine Coutant Signed-off-by: Bernd Kuhls Signed-off-by: Julien Olivain --- package/Config.in | 1 + package/spirv-llvm-translator/Config.in | 22 +++++++++++++++++++ .../spirv-llvm-translator.mk | 10 +++++++++ 3 files changed, 33 insertions(+) create mode 100644 package/spirv-llvm-translator/Config.in diff --git a/package/Config.in b/package/Config.in index 86e05fb724..33dc03a28a 100644 --- a/package/Config.in +++ b/package/Config.in @@ -332,6 +332,7 @@ comment "Graphic applications" source "package/pngquant/Config.in" source "package/qt5cinex/Config.in" source "package/rrdtool/Config.in" + source "package/spirv-llvm-translator/Config.in" source "package/spirv-tools/Config.in" source "package/stellarium/Config.in" source "package/sway/Config.in" diff --git a/package/spirv-llvm-translator/Config.in b/package/spirv-llvm-translator/Config.in new file mode 100644 index 0000000000..73ca787d8a --- /dev/null +++ b/package/spirv-llvm-translator/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_SPIRV_LLVM_TRANSLATOR + bool "spirv-translator" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_HOST_GCC_AT_LEAST_7 # host-llvm + select BR2_PACKAGE_LLVM + select BR2_PACKAGE_SPIRV_HEADERS + select BR2_PACKAGE_ZLIB + help + LLVM/SPIR-V Bi-Directional Translator is a library and tool + for translation between LLVM IR and SPIR-V. + + https://github.com/khronosGroup/SPIRV-LLVM-Translator + +comment "spirv-translator needs a toolchain w/ threads, C++, gcc >= 7, dynamic library, host gcc >= 7" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_7 \ + || BR2_STATIC_LIBS || !BR2_HOST_GCC_AT_LEAST_7 diff --git a/package/spirv-llvm-translator/spirv-llvm-translator.mk b/package/spirv-llvm-translator/spirv-llvm-translator.mk index 523890a986..ffc8a63b89 100644 --- a/package/spirv-llvm-translator/spirv-llvm-translator.mk +++ b/package/spirv-llvm-translator/spirv-llvm-translator.mk @@ -19,4 +19,14 @@ HOST_SPIRV_LLVM_TRANSLATOR_CONF_OPTS = \ -DLLVM_EXTERNAL_PROJECTS="SPIRV-Headers" \ -DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR=$(HOST_DIR)/include +SPIRV_LLVM_TRANSLATOR_INSTALL_STAGING = YES +SPIRV_LLVM_TRANSLATOR_DEPENDENCIES = host-clang host-llvm llvm spirv-headers +SPIRV_LLVM_TRANSLATOR_CONF_OPTS = \ + -DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR=$(STAGING_DIR)/usr \ + -DLLVM_BUILD_TOOLS=ON \ + -DLLVM_DIR=$(STAGING_DIR)/lib/cmake/llvm \ + -DLLVM_SPIRV_BUILD_EXTERNAL=YES \ + -DLLVM_SPIRV_INCLUDE_TESTS=OFF + +$(eval $(cmake-package)) $(eval $(host-cmake-package))