diff --git a/llvm-bolt-0.tar.xz b/llvm-bolt-0.tar.xz deleted file mode 100644 index 9936e2322e725547ff5f963ab08463160f72c3da..0000000000000000000000000000000000000000 Binary files a/llvm-bolt-0.tar.xz and /dev/null differ diff --git a/llvm-bolt.spec b/llvm-bolt.spec index b4fd7b8b0d15685daf01114dcef5c0adf141f390..141a118f15028fd525fe8b491ff8f64e43056755 100644 --- a/llvm-bolt.spec +++ b/llvm-bolt.spec @@ -1,60 +1,154 @@ -Name: llvm-bolt -Version: 0 -Release: 0.20211016.gitb72f753 +%bcond_without sys_llvm +%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 + +%if %{with sys_llvm} +%global pkg_name llvm-bolt +%global install_prefix %{_prefix} +%else +%global pkg_name llvm-bolt%{maj_ver} +%global install_prefix %{_libdir}/llvm%{maj_ver} +%endif + +%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: %{pkg_name} +Version: %{bolt_version} +Release: 2 Summary: BOLT is a post-link optimizer developed to speed up large applications License: Apache 2.0 -URL: https://github.com/facebookincubator/BOLT -Source0: %{name}-%{version}.tar.xz +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 +Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{bolt_version}/%{bolt_srcdir}.tar.xz.sig -BuildRequires: gcc gcc-c++ cmake ninja-build libstdc++-static -Requires: glibc zlib ncurses-libs libstdc++ libgcc +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. -# skip debuginfo packages -%global debug_package %{nil} +%package doc +Summary: Documentation for BOLT +BuildArch: noarch +Requires: %{name} = %{version}-%{release} + +%description doc +Documentation for the BOLT optimizer %prep -%setup -q -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=%{_usr} \ +%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" + -DLLVM_TARGETS_TO_BUILD="X86" %endif %ifarch aarch64 - -DLLVM_TARGETS_TO_BUILD="AArch64" + -DLLVM_TARGETS_TO_BUILD="AArch64" %endif -%build -cd _build -%{ninja_build} +%ninja_build bolt %install -%{ninja_install} -C _build -%global _bolt_install_dir %{_buildrootdir}/%{name}-%{version}-%{release}.%{_arch}/usr -# remove extera llvm files. -find %{_bolt_install_dir} ! -name "llvm-bolt" ! -name "merge-fdata" ! -name "perf2bolt" -type f,l -exec rm -f '{}' \; -# remove static libs. -rm -rf %{_buildrootdir}/root +%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-bolt + +# Remove files installed during the check phase. +rm -f %{buildroot}/%{_builddir}/%{bolt_srcdir}/lib/lib*.a +%endif %files %license bolt/LICENSE.TXT -%doc bolt/docs/* -%exclude %{_includedir}/* -%exclude %{_datadir}/* -%exclude %{_builddir}/%{name}-%{version}/_build/* -%attr(0755,root,root) %{_bindir}/llvm-bolt -%attr(0755,root,root) %{_bindir}/merge-fdata -%attr(-,root,root) %{_bindir}/perf2bolt +%{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 -* Mon Nov 29 2021 liyancheng <412998149@qq.com> -- Type:Init -- ID:NA -- SUG:NA -- DESC:Init llvm-bolt repository +* Fri May 26 2023 cf-zhao 15.0.7-2 +- Make spec file support both system-version and multi-version + +* Mon Feb 20 2023 Yunfei Li - 15.0.7-1 +- Init llvm-bolt-15 repository 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..141a118f15028fd525fe8b491ff8f64e43056755 --- /dev/null +++ b/llvm-project-15.0.7.src.tar.xz @@ -0,0 +1,154 @@ +%bcond_without sys_llvm +%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 + +%if %{with sys_llvm} +%global pkg_name llvm-bolt +%global install_prefix %{_prefix} +%else +%global pkg_name llvm-bolt%{maj_ver} +%global install_prefix %{_libdir}/llvm%{maj_ver} +%endif + +%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: %{pkg_name} +Version: %{bolt_version} +Release: 2 +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 +Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{bolt_version}/%{bolt_srcdir}.tar.xz.sig + +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-bolt + +# 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 +* Fri May 26 2023 cf-zhao 15.0.7-2 +- Make spec file support both system-version and multi-version + +* Mon Feb 20 2023 Yunfei Li - 15.0.7-1 +- Init llvm-bolt-15 repository