160 lines
4.2 KiB
RPMSpec
160 lines
4.2 KiB
RPMSpec
%bcond_with check
|
|
|
|
%global maj_ver 15
|
|
%global min_ver 0
|
|
%global patch_ver 7
|
|
%global bolt_version %{maj_ver}.%{min_ver}.%{patch_ver}
|
|
%global bolt_srcdir llvm-project-%{bolt_version}.src
|
|
|
|
%global install_prefix %{_prefix}
|
|
|
|
%global install_bindir %{install_prefix}/bin
|
|
%global install_libdir %{install_prefix}/lib
|
|
%global install_docdir %{install_prefix}/share/doc
|
|
%global max_link_jobs 2
|
|
|
|
Name: llvm-bolt
|
|
Version: %{bolt_version}
|
|
Release: 1
|
|
Summary: BOLT is a post-link optimizer developed to speed up large applications
|
|
License: Apache 2.0
|
|
URL: https://github.com/llvm/llvm-project/tree/main/bolt
|
|
|
|
Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{bolt_version}/%{bolt_srcdir}.tar.xz
|
|
|
|
BuildRequires: gcc
|
|
BuildRequires: gcc-c++
|
|
BuildRequires: cmake
|
|
BuildRequires: ninja-build
|
|
BuildRequires: zlib-devel
|
|
BuildRequires: python3-lit
|
|
BuildRequires: python3-psutil
|
|
BuildRequires: doxygen
|
|
|
|
%description
|
|
BOLT is a post-link optimizer developed to speed up large applications.
|
|
It achieves the improvements by optimizing application's code layout based
|
|
on execution profile gathered by sampling profiler, such as Linux perf tool.
|
|
|
|
%package doc
|
|
Summary: Documentation for BOLT
|
|
BuildArch: noarch
|
|
Requires: %{name} = %{version}-%{release}
|
|
|
|
%description doc
|
|
Documentation for the BOLT optimizer
|
|
|
|
%prep
|
|
%autosetup -n %{bolt_srcdir} -p1
|
|
|
|
%build
|
|
%{cmake} -G Ninja -S llvm \
|
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
|
-DCMAKE_INSTALL_PREFIX=%{install_prefix} \
|
|
-DCMAKE_SKIP_RPATH=ON \
|
|
-DLLVM_DIR=%{install_libdir}/cmake/llvm \
|
|
-DLLVM_TABLEGEN_EXE=%{install_bindir}/llvm-tblgen \
|
|
-DLLVM_BUILD_UTILS:BOOL=ON \
|
|
-DBOLT_INCLUDE_DOCS:BOOL=ON \
|
|
-DLLVM_INCLUDE_TESTS:BOOL=ON \
|
|
-DBUILD_SHARED_LIBS:BOOL=OFF \
|
|
-DLLVM_LINK_LLVM_DYLIB:BOOL=OFF \
|
|
-DLLVM_ENABLE_ASSERTIONS=ON \
|
|
-DBOLT_INCLUDE_TESTS:BOOL=ON \
|
|
-DLLVM_EXTERNAL_LIT=%{_bindir}/lit \
|
|
-DLLVM_ENABLE_PROJECTS="bolt" \
|
|
-DLLVM_PARALLEL_LINK_JOBS=%{max_link_jobs} \
|
|
%ifarch %ix86 x86_64
|
|
-DLLVM_TARGETS_TO_BUILD="X86"
|
|
%endif
|
|
%ifarch aarch64
|
|
-DLLVM_TARGETS_TO_BUILD="AArch64"
|
|
%endif
|
|
|
|
%ninja_build bolt
|
|
|
|
%install
|
|
%ninja_install bolt
|
|
|
|
# Remove extera llvm files.
|
|
find %{buildroot}%{install_prefix} \
|
|
! -name "llvm-bolt" \
|
|
! -name "merge-fdata" \
|
|
! -name "perf2bolt" \
|
|
! -name "llvm-boltdiff" \
|
|
! -name "llvm-bolt-heatmap" \
|
|
! -name "libbolt_rt_hugify.a" \
|
|
! -name "libbolt_rt_instr.a" \
|
|
-type f,l -exec rm -f '{}' \;
|
|
|
|
#
|
|
rm -f %{_builddir}/%{bolt_srcdir}/lib/lib*.a
|
|
|
|
# There currently is not support upstream for building html doc from BOLT
|
|
install -d %{buildroot}%{install_docdir}
|
|
mv bolt/README.md bolt/docs/*.md %{buildroot}%{install_docdir}
|
|
|
|
%check
|
|
|
|
%if %{with check}
|
|
%ifarch x86_64
|
|
# Bolt makes incorrect assumptions on the location of libbolt_rt_*.a.
|
|
mkdir -p %{_builddir}/%{bolt_srcdir}/lib
|
|
for rt in libbolt_rt_instr libbolt_rt_hugify
|
|
do
|
|
ln -s %{buildroot}/%{install_libdir}/${rt}.a %{_builddir}/%{bolt_srcdir}/lib
|
|
done
|
|
%endif
|
|
|
|
%ifarch aarch64
|
|
# Failing test cases on aarch64
|
|
rm bolt/test/cache+-deprecated.test bolt/test/bolt-icf.test bolt/test/R_ABS.pic.lld.cpp
|
|
%endif
|
|
|
|
export LD_LIBRARY_PATH=%{_builddir}/%{bolt_srcdir}/lib
|
|
export DESTDIR=%{buildroot}
|
|
%ninja_build check
|
|
|
|
# Remove files installed during the check phase.
|
|
rm -f %{buildroot}/%{_builddir}/%{bolt_srcdir}/lib/lib*.a
|
|
%endif
|
|
|
|
%files
|
|
%license bolt/LICENSE.TXT
|
|
%{install_bindir}/llvm-bolt
|
|
%{install_bindir}/llvm-boltdiff
|
|
%{install_bindir}/merge-fdata
|
|
%{install_bindir}/perf2bolt
|
|
%{install_bindir}/llvm-bolt-heatmap
|
|
|
|
%ifarch x86_64
|
|
%{install_libdir}/libbolt_rt_hugify.a
|
|
%{install_libdir}/libbolt_rt_instr.a
|
|
%endif
|
|
|
|
%exclude %{_builddir}/%{bolt_srcdir}/lib/*
|
|
|
|
%files doc
|
|
%doc %{install_docdir}
|
|
|
|
|
|
%changelog
|
|
* Thu Aug 31 2023 zhenyu zhao <zhaozhenyu17@huaiwei.com> 15.0.7-1
|
|
- Type:Update
|
|
- ID:NA
|
|
- SUG:NA
|
|
- DESC: Update llvm-bolt from llvm-bolt to llvm-bolt-15
|
|
|
|
* Mon Dec 19 2022 liyancheng <412998149@qq.com> 0-1.20211016.gitb72f753
|
|
- Type:fix
|
|
- ID:NA
|
|
- SUG:NA
|
|
- DESC: Add debuginfo package and delete rpath in binary
|
|
|
|
* Mon Nov 29 2021 liyancheng <412998149@qq.com>
|
|
- Type:Init
|
|
- ID:NA
|
|
- SUG:NA
|
|
- DESC:Init llvm-bolt repository
|
|
|