%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: 3 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 Patch1: 0001-AArch64-fix-bug-55005-handle-DW_CFA_GNU_NegateRAState.patch Patch2: 0002-AArch64-Add-AArch64-support-for-hugify.patch Patch3: 0003-AArch64-Add-AArch64-support-for-inline.patch Patch4: 0004-Added-open-source-code-related-to-feature-extracting.patch Patch5: 0005-Add-block-correction-optimization.patch 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} # Bolt makes incorrect assumptions on the location of libbolt_rt_*.a. mkdir -p %{_builddir}/%{bolt_srcdir}/lib ln -s %{buildroot}/%{install_libdir}/libbolt_rt_hugify.a %{_builddir}/%{bolt_srcdir}/lib %ifarch x86_64 ln -s %{buildroot}/%{install_libdir}/libbolt_rt_instr.a %{_builddir}/%{bolt_srcdir}/lib %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 %{install_libdir}/libbolt_rt_hugify.a %ifarch x86_64 %{install_libdir}/libbolt_rt_instr.a %endif %exclude %{_builddir}/%{bolt_srcdir}/lib/* %files doc %doc %{install_docdir} %changelog * Wed Jun 5 2024 Zhou Zeping 15.0.7-3 - Type:Update - ID:NA - SUG:NA - DESC: Add CFG block count correction optimization. * Thu Sep 7 2023 Xiong Zhou 15.0.7-2 - Type:Update - ID:NA - SUG:NA - DESC: Backport bugfix and add AArch64 support for hugify and inline. * Thu Aug 31 2023 zhenyu zhao 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