SHA256
1
0
forked from pool/mold
mold/mold.spec
Martin Liška 7050cb4835 - Update to version 2.31.0
* mold is now up to 10% faster when linking very large, debug info-enabled
    executables such as Blender (~1.8 GiB) or Clang (~3.8 GiB), thanks to several
    improvements we've made to the string merging algorithm. (53ebcd8, d714301,
    40f6b17, c9faf3d)
  * -z start-stop-visibility=hidden is now supported so that linker-synthesized
    __start_<section-name> and __stop_<section-name> symbols can be completely
    hidden from other ELF modules. Previously, only -z
    start-stop-visibility=protected was supported. (99a5b15)
  * -Bsymbolic-non-weak and -Bsymbolic-non-weak-functions options are now supported
    for compatibility with LLVM lld. Just like lld, these options control which
    symbols are exported as dynamic symbols. -Bsymbolic-non-weak makes the linker to
    export only weak symbols, whereas -Bsymbolic-non-weak-functions makes it to
    export only weak function symbols. (7d17aa8)
  * Previously, if a linker script contains a newline character in the beginning
    four bytes of a file, it was not recognized as a linker script by mold. Now,
    mold allows newlines at the beginning of a file. (ea054cc)
  * Under rare circumstances, the INPUT linker script command may have found a
    different file than GNU ld would. Now, mold's behavior aligns with GNU ld's.
    (163975d)
  * Previously, the --repro option produced corrupted tar files. Now the bug has
    been fixed. (32c4a09)
  * mold generally guarantees that its output is reproducible, meaning that if you
    run the linker with the exact same command line options and input files, the
    output is guaranteed to be bit-for-bit identical to the previous outputs.
    However, under rare circumstances, it might produce different output due to a
    bug. It's reported that this nondeterminism caused random crashes for some
    programs (#1247). This bug has been fixed. (6463a7c)
  * mold no longer sets the address of the .text section as the entry point address
    if --entry option is not given, just like LLVM lld. (020b1a7)

OBS-URL: https://build.opensuse.org/package/show/devel:tools:compiler/mold?expand=0&rev=118
2024-05-03 05:49:30 +00:00

116 lines
3.0 KiB
RPMSpec

#
# spec file for package mold
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: mold
Version: 2.31.0
Release: 0
Summary: A Modern Linker (mold)
License: MIT
Group: Development/Tools/Building
URL: https://github.com/rui314/mold
Source: https://github.com/rui314/mold/archive/v%{version}/mold-%{version}.tar.gz
Patch0: build-blake-3-as-static.patch
BuildRequires: cmake
%if %{suse_version} < 1550
BuildRequires: gcc11-c++
%else
# These libraries are not present for openSUSE Leap
BuildRequires: gcc-c++
BuildRequires: clang
BuildRequires: libdwarf-tools
BuildRequires: llvm
BuildRequires: llvm-gold
BuildRequires: tbb-devel
%ifarch x86_64
BuildRequires: gcc-32bit
%endif
%endif
BuildRequires: gdb
BuildRequires: glibc-devel-static
BuildRequires: libzstd-devel
%ifnarch ppc64
BuildRequires: valgrind
%endif
BuildRequires: zlib-devel
BuildRequires: zstd
PreReq: update-alternatives
%if %{suse_version} < 1600
%define build_args -DMOLD_USE_MIMALLOC=OFF -DMOLD_USE_MIMALLOC=OFF -DCMAKE_INSTALL_DOCDIR:PATH=%{_docdir}/%{name}
%else
%define build_args -DMOLD_USE_MIMALLOC=OFF -DMOLD_USE_MIMALLOC=OFF -DMOLD_USE_SYSTEM_TBB=ON
%endif
%description
mold is a faster drop-in replacement for existing Unix linkers.
It is several times faster than LLVM lld linker, the second-fastest
open-source linker.
mold is created for increasing developer productivity by reducing
build time especially in rapid debug-edit-rebuild cycles.
%prep
%autosetup -p1
%build
%if %{suse_version} < 1550
export CC=gcc-11
export CXX=g++-11
%endif
%cmake %{build_args}
%cmake_build
%install
%cmake_install
%check
%if %{suse_version} < 1550
export TEST_CC=gcc-11
export TEST_CXX=g++-11
%endif
%ctest
%post
"%_sbindir/update-alternatives" --install \
"%_bindir/ld" ld "%_bindir/ld.mold" 1
%pre
if [ "$1" -gt 0 ] && [ -f %{_sbindir}/update-alternatives ] ; then
"%_sbindir/update-alternatives" --remove ld "%_bindir/ld.mold";
fi;
%postun
if [ ! -f %{_bindir}/lld ] ; then
"%{_sbindir}/update-alternatives" --remove ld "%{_bindir}/ld.mold"
fi
%files
%ghost %_sysconfdir/alternatives/ld
%{_bindir}/mold
%{_bindir}/ld.mold
%dir %{_libdir}/mold
%{_libexecdir}/mold/ld
%dir %{_libexecdir}/mold
%{_libdir}/mold/mold-wrapper.so
%{_mandir}/man1/mold.1.gz
%{_mandir}/man1/ld.mold.1.gz
%dir %{_docdir}/mold
%doc %{_docdir}/mold/LICENSE
%doc %{_docdir}/mold/LICENSE.third-party
%changelog