mold/mold.spec
Martin Liška 9417202e99 - Update to version 1.10.0
* mold now officially supports the --print-dependencies option to print out
    dependency information between input files. Here is a truncated example output
    when linking mold itself with the option. There are many use cases of the
    option; for example, if you want to eliminate the dependency to some library
    from your program, you can use this option to find out all the functions that
    use the library's function to fix them. (6fd47db)
  * [x86-64][s390x] mold now optimizes thread-local variable accesses in shared
    libraries if the library is linked with -z nodlopen. If your shared library is
    not intended to be used via dlopen(2) and your library frequently accesses
    thread-local variables, you might want to pass that option when linking your
    library. (25d02bb, f32ce33)
  * [arm64] mold is now able to optimize GOT load by rewriting an ADDR+LDR
    instruction pair with an ADDR+ADD if the loaded GOT value is known at link-time.
    (f2311b1)
  * mold 1.9.0 was up to 10% slower than 1.8.0 on some multicore machines. We fixed
    the performance regression and made it even faster than 1.8.0. (7132822)
  * Previously, mold failed to report an undefined symbol error if there's a weak
    undefined symbol of the same name. That bug resulted in producing a non-working
    executable instead of reporting a link failure. Now, mold correctly reports such
    link errors. (8936194)
  * mold 1.9.0 might crash with SIGSEGV if --emit-relocs is used with object files
    containing debug info. That bug has been fixed. (e17d7da)

OBS-URL: https://build.opensuse.org/package/show/devel:tools:compiler/mold?expand=0&rev=85
2023-01-20 12:24:54 +00:00

115 lines
2.9 KiB
RPMSpec

#
# spec file for package mold
#
# Copyright (c) 2023 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: 1.10.0
Release: 0
Summary: A Modern Linker (mold)
License: AGPL-3.0-or-later
Group: Development/Tools/Building
URL: https://github.com/rui314/mold
Source: https://github.com/rui314/mold/archive/v%{version}/mold-%{version}.tar.gz
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
BuildRequires: openssl-devel
%ifnarch ppc64
BuildRequires: valgrind
%endif
BuildRequires: zlib-devel
BuildRequires: zstd
PreReq: update-alternatives
%if %{suse_version} < 1550
%define build_args -DMOLD_USE_MIMALLOC=OFF -DMOLD_USE_MIMALLOC=OFF
%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 /usr/share/doc/mold
%doc /usr/share/doc/mold/LICENSE
%changelog