diff --git a/llvm-bolt.spec b/llvm-bolt.spec new file mode 100644 index 0000000000000000000000000000000000000000..436501d990658aab9cc8164fd266180026c59ae0 --- /dev/null +++ b/llvm-bolt.spec @@ -0,0 +1,99 @@ +%global debug_package %{nil} + +%global maj_ver 15 +%global min_ver 0 +%global patch_ver 7 +%global bolt_srcdir llvm-project-%{maj_ver}.%{min_ver}.%{patch_ver}.src +%global bin_suffix -%{maj_ver} +%global install_prefix %{_libdir}/llvm%{maj_ver} +%global install_bindir %{install_prefix}/bin +%global install_libdir %{install_prefix}/lib +%global max_link_jobs 2 + +%global pkg_bindir %{install_bindir} +%global pkg_libdir %{install_libdir} + +Name: llvm-bolt-%{maj_ver} +Version: %{maj_ver}.%{min_ver}.%{patch_ver} +Release: 1 +Summary: BOLT is a post-link optimizer developed to speed up large applications +License: Apache 2.0 +URL: https://github.com/facebookincubator/BOLT +Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/%{bolt_srcdir}.tar.xz + +BuildRequires: gcc gcc-c++ cmake ninja-build libstdc++-static chrpath ncurses-devel zlib-devel +Requires: glibc zlib ncurses-libs libstdc++ libgcc + +# BOLT only supports aarch64 and x86_64 +ExclusiveArch: aarch64 x86_64 + +%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. + +%prep +%autosetup -n %{bolt_srcdir} +mkdir -p _build +cd _build +%{__cmake} -G Ninja ../llvm \ + -DCMAKE_BUILD_TYPE=Release \ + -DLLVM_ENABLE_ASSERTIONS=ON \ + -DLLVM_ENABLE_PROJECTS="clang;lld;bolt" \ + -DCMAKE_INSTALL_PREFIX=%{install_prefix} \ + -DLLVM_PARALLEL_LINK_JOBS=%{max_link_jobs} \ + -DCMAKE_SKIP_RPATH:BOOL=ON \ +%ifarch %ix86 x86_64 + -DLLVM_TARGETS_TO_BUILD="X86" +%endif +%ifarch aarch64 + -DLLVM_TARGETS_TO_BUILD="AArch64" +%endif + +%build +cd _build +%{ninja_build} + +%install + +mkdir -p %{buildroot}/%{_bindir} +mkdir -p %{buildroot}%{install_bindir} +for f in llvm-boltdiff llvm-bolt merge-fdata perf2bolt +do + install -m 0755 %{_builddir}/%{bolt_srcdir}/_build/bin/$f %{buildroot}%{install_bindir} + filename=`basename %{buildroot}%{install_bindir}/$f` + ln -s ../../%{install_bindir}/$filename %{buildroot}/%{_bindir}/$filename%{bin_suffix} +done + +%ifarch x86_64 +mkdir -p %{buildroot}/%{_libdir} +mkdir -p %{buildroot}%{install_libdir} +for rt in libbolt_rt_instr.a libbolt_rt_hugify.a +do + install %{_builddir}/%{bolt_srcdir}/_build/lib/${rt} %{buildroot}%{install_libdir} +done +%endif + +%check +%if %{with check} +cd _build +%ninja_build check_bolt +%endif + +%files +%license bolt/LICENSE.TXT +%exclude %{_includedir}/* +%exclude %{_datadir}/* +%exclude %{_builddir}/%{bolt_srcdir}/_build/* +%{_bindir}/llvm-boltdiff%{bin_suffix} +%{_bindir}/llvm-bolt%{bin_suffix} +%{_bindir}/merge-fdata%{bin_suffix} +%{_bindir}/perf2bolt%{bin_suffix} +%{pkg_bindir} +%ifarch x86_64 +%{pkg_libdir} +%endif + +%changelog +* Mon Feb 20 2023 Yunfei Li - 15.0.7-1 +- Init llvm-bolt-15 repository \ No newline at end of file diff --git a/llvm-project-15.0.7.src.tar.xz b/llvm-project-15.0.7.src.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..7bc21504b4b3827c22e460f5c3ecd78b5b4bf67d Binary files /dev/null and b/llvm-project-15.0.7.src.tar.xz differ