[packages/llvm] - added libcxx, libcxxabi, libunwind runtimes

qboosh qboosh at pld-linux.org
Sun May 10 20:35:48 CEST 2026


commit 25bcf2d797d9aa6d0591c6b375e8af8ac18e99a4
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Sun May 10 20:35:41 2026 +0200

    - added libcxx, libcxxabi, libunwind runtimes

 llvm.spec | 222 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 221 insertions(+), 1 deletion(-)
---
diff --git a/llvm.spec b/llvm.spec
index 9f61722..fb96ac5 100644
--- a/llvm.spec
+++ b/llvm.spec
@@ -32,6 +32,7 @@
 %bcond_without	rt			# compiler-rt libraries
 %bcond_without	multilib		# compiler-rt multilib libraries
 %bcond_without	libclc			# libclc runtime
+%bcond_without	libcxx			# libcxx, libcxxabi, libunwind runtimes
 %bcond_without	ocaml			# OCaml binding
 %bcond_without	z3			# Z3 constraint solver support in Clang Static Analyzer
 %bcond_without	doc			# HTML docs and man pages
@@ -681,6 +682,7 @@ 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
+License:	MIT or BSD-like
 Group:		Libraries
 URL:		https://libclc.llvm.org/
 Requires:	%{name}-libs%{?_isa} = %{version}-%{release}
@@ -723,6 +725,132 @@ następujących sekcji specyfikacji:
 libclc jest przeznaczona do używania z frontendem OpenCL kompilatora
 Clang.
 
+%package libcxx
+Summary:	LibC++ - C++ standard library from LLVM project
+Summary(pl.UTF-8):	LibC++ - biblioteka standardowa C++ z projektu LLVM
+License:	MIT or BSD-like
+Group:		Libraries
+URL:		https://libcxx.llvm.org/
+Requires:	%{name}-libcxxabi%{?_isa} = %{version}-%{release}
+
+%description libcxx
+libc++ is a new implementation of the C++ standard library, targeting
+C++11 and above.
+
+%description libcxx -l pl.UTF-8
+libc++ to nowa implementacja biblioteki standardowej C++ ze wskazaniem
+na standard C++11 i nowsze.
+
+%package libcxx-devel
+Summary:	Header files of LLVM LibC++ library
+Summary(pl.UTF-8):	Pliki nagłówkowe biblioteki LLVM LibC++
+License:	MIT or BSD-like
+Group:		Development/Libraries
+URL:		https://libcxx.llvm.org/
+Requires:	%{name}-libcxx%{?_isa} = %{version}-%{release}
+Requires:	%{name}-libcxxabi-devel%{?_isa} = %{version}-%{release}
+
+%description libcxx-devel
+Header files of LLVM LibC++ library.
+
+%description libcxx-devel -l pl.UTF-8
+Pliki nagłówkowe biblioteki LLVM LibC++.
+
+%package libcxx-static
+Summary:	Static LLVM LibC++ library
+Summary(pl.UTF-8):	Statyczna biblioteka LLVM LibC++
+License:	MIT or BSD-like
+Group:		Development/Libraries
+URL:		https://libcxx.llvm.org/
+Requires:	%{name}-libcxx-devel%{?_isa} = %{version}-%{release}
+
+%description libcxx-static
+Static LLVM LibC++ library.
+
+%description libcxx-static -l pl.UTF-8
+Statyczna biblioteka LLVM LibC++.
+
+%package libcxxabi
+Summary:	libc++abi - C++ standard library support from LLVM project
+Summary(pl.UTF-8):	libc++abi - wsparcie dla biblioteki standardowej C++ z projektu LLVM
+License:	MIT or BSD-like
+Group:		Libraries
+URL:		https://libcxxabi.llvm.org/
+
+%description libcxxabi
+libc++abi is a new implementation of low level support for a standard
+C++ library.
+
+%description libcxxabi -l pl.UTF-8
+libc++abi to nowa implementacja niskopoziomowego wsparcia dla
+biblioteki standardowej C++.
+
+%package libcxxabi-devel
+Summary:	Development files for LLVM libc++abi library
+Summary(pl.UTF-8):	Pliki programistyczne biblioteki LLVM libc++abi
+License:	MIT or BSD-like
+Group:		Development/Libraries
+URL:		https://libcxxabi.llvm.org/
+Requires:	%{name}-libcxxabi%{?_isa} = %{version}-%{release}
+
+%description libcxxabi-devel
+Development files for LLVM libc++abi library.
+
+%description libcxxabi-devel -l pl.UTF-8
+Pliki programistyczne biblioteki LLVM libc++abi.
+
+%package libcxxabi-static
+Summary:	Static LLVM libc++abi library
+Summary(pl.UTF-8):	Statyczna biblioteka LLVM libc++abi
+License:	MIT or BSD-like
+Group:		Development/Libraries
+URL:		https://libcxxabi.llvm.org/
+Requires:	%{name}-libcxxabi-devel%{?_isa} = %{version}-%{release}
+
+%description libcxxabi-static
+Static LLVM libc++abi library.
+
+%description libcxxabi-static -l pl.UTF-8
+Statyczna biblioteka LLVM libc++abi.
+
+%package libunwind
+Summary:	LLVM libunwind implementation
+Summary(pl.UTF-8):	Implementacja biblioteki libunwind z projektu LLVM
+License:	MIT or BSD-like
+Group:		Libraries
+
+%description libunwind
+LLVM libunwind implementation.
+
+%description libunwind -l pl.UTF-8
+Implementacja biblioteki libunwind z projektu LLVM.
+
+%package libunwind-devel
+Summary:	Header file for LLVM libunwind implementation
+Summary(pl.UTF-8):	Plik nagłówkowy implementacji LLVM libunwind
+Group:		Development/Libraries
+License:	MIT or BSD-like
+Requires:	%{name}-libunwind%{?_isa} = %{version}-%{release}
+
+%description libunwind-devel
+Header file for LLVM libunwind implementation.
+
+%description libunwind-devel -l pl.UTF-8
+Plik nagłówkowy implementacji LLVM libunwind.
+
+%package libunwind-static
+Summary:	Static LLVM libunwind library
+Summary(pl.UTF-8):	Statyczna biblioteka LLVM libunwind
+Group:		Development/Libraries
+License:	MIT or BSD-like
+Requires:	%{name}-libunwind-devel%{?_isa} = %{version}-%{release}
+
+%description libunwind-static
+Static LLVM libunwind library.
+
+%description libunwind-static -l pl.UTF-8
+Statyczna biblioteka LLVM libunwind.
+
 %prep
 %setup -q -n %{name}-project-%{version}.src
 
@@ -776,19 +904,31 @@ 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_libclc:libclc;}%{?with_flang:flang-rt}"
+RUNTIMES="%{?with_rt:compiler-rt;}%{?with_libclc:libclc;}%{?with_libcxx:libcxx;libcxxabi;libunwind;}%{?with_flang:flang-rt}"
 
 %cmake ../llvm \
 	-DBUILD_SHARED_LIBS:BOOL=OFF \
 	-DBUILTINS_CMAKE_ARGS="-DCMAKE_C_FLAGS=$CLANG_CFLAGS;-DCMAKE_CXX_FLAGS=$CLANG_CXXFLAGS" \
+	-DCLANG_DEFAULT_UNWINDLIB:STRING=libgcc \
+	-DCOMPILER_RT_BUILD_LIBFUZZER:BOOL=OFF \
 	-DENABLE_LINKER_BUILD_ID:BOOL=ON \
 	%{!?with_libclc_llvm_spirv:-DLIBCLC_USE_SPIRV_BACKEND:BOOL=ON} \
+	-DLIBCXX_ENABLE_ABI_LINKER_SCRIPT:BOOL=ON \
+	-DLIBCXX_INCLUDE_BENCHMARKS:BOOL=OFF \
+	-DLIBCXX_INSTALL_INCLUDE_TARGET_DIR:PATH=%{_includedir}/c++/v1 \
+	-DLIBCXX_INSTALL_LIBRARY_DIR:PATH=%{_libdir} \
+	-DLIBCXXABI_INSTALL_LIBRARY_DIR:PATH=%{_libdir} \
+	-DLIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY:BOOL=ON \
+	-DLIBCXXABI_USE_LLVM_UNWINDER:BOOL=OFF \
+	-DLIBUNWIND_INSTALL_INCLUDE_DIR:PATH=%{_includedir}/llvm-libunwind \
+	-DLIBUNWIND_INSTALL_LIBRARY_DIR:PATH=%{_libdir} \
 	-DLLVM_ADDITIONAL_BUILD_TYPES=PLD \
 	-DLLVM_BINDINGS_LIST:LIST="%{?with_ocaml:ocaml}" \
 	-DLLVM_BINUTILS_INCDIR:STRING=%{_includedir} \
 	%{?with_rt:-DLLVM_BUILD_EXTERNAL_COMPILER_RT:BOOL=ON} \
 	-DLLVM_BUILD_LLVM_DYLIB:BOOL=ON \
 	-DLLVM_ENABLE_ASSERTIONS:BOOL=OFF \
+	-DLLVM_ENABLE_LIBCXX:BOOL=OFF \
 	-DLLVM_ENABLE_PROJECTS="${PROJECTS%;}" \
 	-DLLVM_ENABLE_RUNTIMES="${RUNTIMES%;}" \
 	-DLLVM_INSTALL_PACKAGE_DIR=%(realpath -m "--relative-to=%{_prefix}" "%{_libdir}/cmake/llvm") \
@@ -885,6 +1025,14 @@ ln -snf ../%{_lib}/clang/%{major}/lib/libclc $RPM_BUILD_ROOT%{_datadir}/clc
 %{__sed} -i -e '/^Version/ s/: $/: 0.2.0/' $RPM_BUILD_ROOT%{_npkgconfigdir}/libclc.pc
 %endif
 
+%if %{with libcxx}
+# resolve conflict with libunwind from libunwind.spec
+install -d $RPM_BUILD_ROOT{%{_includedir},%{_libdir}}/llvm-libunwind
+%{__mv} $RPM_BUILD_ROOT%{_libdir}/libunwind.a $RPM_BUILD_ROOT%{_libdir}/llvm-libunwind
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/libunwind.so
+ln -sf ../$(basename $RPM_BUILD_ROOT%{_libdir}/libunwind.so.*.*) $RPM_BUILD_ROOT%{_libdir}/llvm-libunwind/libunwind.so
+%endif
+
 %if %{with doc}
 cp -p build/docs/man/*.1 $RPM_BUILD_ROOT%{_mandir}/man1
 # these tools are not installed
@@ -945,12 +1093,24 @@ rm -rf $RPM_BUILD_ROOT
 %post	mlir -p /sbin/ldconfig
 %postun	mlir -p /sbin/ldconfig
 
+%post	polly -p /sbin/ldconfig
+%postun	polly -p /sbin/ldconfig
+
 %post	-n clang-libs -p /sbin/ldconfig
 %postun	-n clang-libs -p /sbin/ldconfig
 
 %post	-n lldb -p /sbin/ldconfig
 %postun	-n lldb -p /sbin/ldconfig
 
+%post	libcxx -p /sbin/ldconfig
+%postun	libcxx -p /sbin/ldconfig
+
+%post	libcxxabi -p /sbin/ldconfig
+%postun	libcxxabi -p /sbin/ldconfig
+
+%post	libunwind -p /sbin/ldconfig
+%postun	libunwind -p /sbin/ldconfig
+
 %files
 %defattr(644,root,root,755)
 %doc llvm/CREDITS.TXT LICENSE.TXT llvm/README.txt %{?with_tests:llvm-testlog.txt}
@@ -1567,3 +1727,63 @@ rm -rf $RPM_BUILD_ROOT
 %{_libdir}/clang/%{major}/lib/libclc/spirv-mesa3d-.spv
 %{_libdir}/clang/%{major}/lib/libclc/spirv64-mesa3d-.spv
 %endif
+
+%if %{with libcxx}
+%files libcxx
+%defattr(644,root,root,755)
+%{_libdir}/libc++.so.*.*
+%ghost %{_libdir}/libc++.so.1
+
+%files libcxx-devel
+%defattr(644,root,root,755)
+%{_libdir}/libc++.so
+%{_libdir}/libc++.modules.json
+%{_libdir}/libc++experimental.a
+%{_includedir}/c++/v1/*
+%exclude %{_includedir}/c++/v1/cxxabi.h
+%exclude %{_includedir}/c++/v1/__cxxabi_config.h
+%{_datadir}/libc++
+
+%files libcxx-static
+%defattr(644,root,root,755)
+%{_libdir}/libc++.a
+
+%files libcxxabi
+%defattr(644,root,root,755)
+%{_libdir}/libc++abi.so.*.*
+%ghost %{_libdir}/libc++abi.so.1
+
+%files libcxxabi-devel
+%defattr(644,root,root,755)
+%{_libdir}/libc++abi.so
+# top dir shared with libstdc++, the rest is llvm-specific
+%dir %{_includedir}/c++
+%dir %{_includedir}/c++/v1
+%{_includedir}/c++/v1/cxxabi.h
+%{_includedir}/c++/v1/__cxxabi_config.h
+
+%files libcxxabi-static
+%defattr(644,root,root,755)
+%{_libdir}/libc++abi.a
+
+%files libunwind
+%defattr(644,root,root,755)
+# libunwind from libunwind.spec has different soname
+%{_libdir}/libunwind.so.*.*
+%ghost %{_libdir}/libunwind.so.1
+
+%files libunwind-devel
+%defattr(644,root,root,755)
+%dir %{_libdir}/llvm-libunwind
+%{_libdir}/llvm-libunwind/libunwind.so
+%dir %{_includedir}/llvm-libunwind
+%{_includedir}/llvm-libunwind/libunwind.h
+%{_includedir}/llvm-libunwind/libunwind.modulemap
+%{_includedir}/llvm-libunwind/unwind*.h
+%{_includedir}/llvm-libunwind/__libunwind_config.h
+%{_includedir}/llvm-libunwind/mach-o
+
+%files libunwind-static
+%defattr(644,root,root,755)
+%{_libdir}/llvm-libunwind/libunwind.a
+%endif
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/llvm.git/commitdiff/25bcf2d797d9aa6d0591c6b375e8af8ac18e99a4



More information about the pld-cvs-commit mailing list