[packages/llvm] - build libclc runtime from this project
qboosh
qboosh at pld-linux.org
Thu May 7 21:48:06 CEST 2026
commit 2637ffc21bcaa237393f84389823a483400eaf02
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date: Thu May 7 21:47:34 2026 +0200
- build libclc runtime from this project
llvm.spec | 118 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 117 insertions(+), 1 deletion(-)
---
diff --git a/llvm.spec b/llvm.spec
index ddf5d6e..9f61722 100644
--- a/llvm.spec
+++ b/llvm.spec
@@ -31,6 +31,7 @@
%bcond_without polly # Polly cache-locality optimization, auto-parallelism and vectorization
%bcond_without rt # compiler-rt libraries
%bcond_without multilib # compiler-rt multilib libraries
+%bcond_without libclc # libclc runtime
%bcond_without ocaml # OCaml binding
%bcond_without z3 # Z3 constraint solver support in Clang Static Analyzer
%bcond_without doc # HTML docs and man pages
@@ -59,6 +60,11 @@
%bcond_with tests # run tests
%bcond_with lowmem # lower memory requirements
+# use llvm-spirv instead of LLVM SPIRV target+spirv-tools
+# as of 22.1 the latter fails with:
+# error: 0: Unresolved external reference to "_Z37__clc_flush_denormal_if_not_supportedf"
+%bcond_without libclc_llvm_spirv
+
# No ocaml on other arches or no native ocaml (required for ocaml-ctypes)
%ifnarch %{ix86} %{x8664} %{arm} aarch64 ppc sparc sparcv9
%undefine with_ocaml
@@ -185,6 +191,15 @@ BuildRequires: xz-devel
#TODO (bcond): cuda-devel (with POLLY_ENABLE_GPGPU_CODEGEN=ON)
%{?with_target_nvptx:BuildRequires: ocl-icd-libOpenCL-devel}
%endif
+%if %{with libclc}
+%if %{with libclc_llvm_spirv}
+# llvm-spirv
+BuildRequires: SPIRV-LLVM-Translator >= %{major}
+%else
+# spirv-link
+BuildRequires: spirv-tools
+%endif
+%endif
%if %{with ocaml}
BuildConflicts: llvm-ocaml
%endif
@@ -663,6 +678,51 @@ Clang format and rename integration for Vim.
%description -n vim-plugin-clang -l pl.UTF-8
Integracja narzędzi Clang do formatowania i zmiany nazw z Vimem.
+%package libclc
+Summary: OpenCL C programming language library implementation
+Summary(pl.UTF-8): Implementacja biblioteki języka programowania OpenCL C
+Group: Libraries
+URL: https://libclc.llvm.org/
+Requires: %{name}-libs%{?_isa} = %{version}-%{release}
+
+%description libclc
+libclc is an open source, BSD licensed implementation of the library
+requirements of the OpenCL C programming language, as specified by the
+OpenCL 1.1 Specification. The following sections of the specification
+impose library requirements:
+
+ * 6.1: Supported Data Types
+ * 6.2.3: Explicit Conversions
+ * 6.2.4.2: Reinterpreting Types Using as_type() and as_typen()
+ * 6.9: Preprocessor Directives and Macros
+ * 6.11: Built-in Functions
+ * 9.3: Double Precision Floating-Point
+ * 9.4: 64-bit Atomics
+ * 9.5: Writing to 3D image memory objects
+ * 9.6: Half Precision Floating-Point
+
+libclc is intended to be used with the Clang compiler's OpenCL
+frontend.
+
+%description libclc -l pl.UTF-8
+libclc to mająca otwarte źródła, wydana na licencji BSD implementacja
+wymagań bibliotecznych języka programowania OpenCL C zgodna ze
+specyfikacją OpenCL 1.1. Wymagania biblioteczne wynikają z
+następujących sekcji specyfikacji:
+
+ * 6.1: obsługiwane typy danych
+ * 6.2.3: jawne konwersje
+ * 6.2.4.2: reinterpretacja typów przy użyciu as_type() i as_typen()
+ * 6.9: dyrektywy i makra preprocesora
+ * 6.11: funkcje wbudowane
+ * 9.3: arytmetyka zmiennoprzecinkowa podwójnej precyzji
+ * 9.4: 64-bitowe operacje atomowe
+ * 9.5: zapis do biektów obrazów 3D w pamięci
+ * 9.6: arytmetyka zmiennoprzecinkowa połówkowej precyzji
+
+libclc jest przeznaczona do używania z frontendem OpenCL kompilatora
+Clang.
+
%prep
%setup -q -n %{name}-project-%{version}.src
@@ -716,12 +776,13 @@ fi
CLANG_CFLAGS="$(echo "$CFLAGS" | sed -e 's/-Werror=trampolines *//')"
CLANG_CXXFLAGS="$(echo "$CXXFLAGS" | sed -e 's/-Werror=trampolines *//')"
PROJECTS="clang;clang-tools-extra;lld;%{?with_polly:polly;}%{?with_mlir:mlir;}%{?with_lldb:lldb;}%{?with_flang:flang}"
-RUNTIMES="%{?with_rt:compiler-rt;}%{?with_flang:flang-rt}"
+RUNTIMES="%{?with_rt:compiler-rt;}%{?with_libclc:libclc;}%{?with_flang:flang-rt}"
%cmake ../llvm \
-DBUILD_SHARED_LIBS:BOOL=OFF \
-DBUILTINS_CMAKE_ARGS="-DCMAKE_C_FLAGS=$CLANG_CFLAGS;-DCMAKE_CXX_FLAGS=$CLANG_CXXFLAGS" \
-DENABLE_LINKER_BUILD_ID:BOOL=ON \
+ %{!?with_libclc_llvm_spirv:-DLIBCLC_USE_SPIRV_BACKEND:BOOL=ON} \
-DLLVM_ADDITIONAL_BUILD_TYPES=PLD \
-DLLVM_BINDINGS_LIST:LIST="%{?with_ocaml:ocaml}" \
-DLLVM_BINUTILS_INCDIR:STRING=%{_includedir} \
@@ -817,6 +878,13 @@ rel_ca_libexecdir="${abs_ca_libexecdir#%{_prefix}}"
# not installed by cmake buildsystem
install build/bin/pp-trace $RPM_BUILD_ROOT%{_bindir}
+%if %{with libclc}
+# symlink as specified in .pc file
+ln -snf ../%{_lib}/clang/%{major}/lib/libclc $RPM_BUILD_ROOT%{_datadir}/clc
+# not filled when building within llvm
+%{__sed} -i -e '/^Version/ s/: $/: 0.2.0/' $RPM_BUILD_ROOT%{_npkgconfigdir}/libclc.pc
+%endif
+
%if %{with doc}
cp -p build/docs/man/*.1 $RPM_BUILD_ROOT%{_mandir}/man1
# these tools are not installed
@@ -1451,3 +1519,51 @@ rm -rf $RPM_BUILD_ROOT
%files -n vim-plugin-clang
%defattr(644,root,root,755)
%{_datadir}/clang/clang-format.py
+
+%if %{with libclc}
+%files libclc
+%defattr(644,root,root,755)
+%doc libclc/{CREDITS.TXT,LICENSE.TXT,Maintainers.md,README.md} libclc/www/index.html
+%dir %{_libdir}/clang/%{major}/lib/libclc
+%{_libdir}/clang/%{major}/lib/libclc/amdgcn-amd-amdhsa.bc
+%{_libdir}/clang/%{major}/lib/libclc/aruba-r600-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/barts-r600-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/bonaire-amdgcn-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/caicos-r600-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/carrizo-amdgcn-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/cayman-r600-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/cedar-r600-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/clspv-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/clspv64-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/cypress-r600-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/fiji-amdgcn-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/gfx*-amdgcn-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/hainan-amdgcn-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/hawaii-amdgcn-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/hemlock-r600-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/iceland-amdgcn-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/juniper-r600-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/kabini-amdgcn-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/kaveri-amdgcn-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/mullins-amdgcn-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/nvptx64-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/oland-amdgcn-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/palm-r600-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/pitcairn-amdgcn-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/polaris*-amdgcn-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/redwood-r600-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/stoney-amdgcn-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/sumo*-r600-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/tahiti-amdgcn-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/tonga-amdgcn-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/tongapro-amdgcn-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/turks-r600-*.bc
+%{_libdir}/clang/%{major}/lib/libclc/verde-amdgcn-*.bc
+# symlink, according to .pc file
+%{_datadir}/clc
+%{_npkgconfigdir}/libclc.pc
+
+# libclc-spirv subpackage?
+%{_libdir}/clang/%{major}/lib/libclc/spirv-mesa3d-.spv
+%{_libdir}/clang/%{major}/lib/libclc/spirv64-mesa3d-.spv
+%endif
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/llvm.git/commitdiff/2637ffc21bcaa237393f84389823a483400eaf02
More information about the pld-cvs-commit
mailing list