mold/mold.spec
Martin Liška ad6a7b88ad - Update to version 1.5.0
* PPC64LE and SPARC64 are now supported as new targets. They haven't yet been as
    well tested as other targets, but they are already able to link mold itself on
    these platforms. (Note that PPC64LE is very unlikely to work on the most recent
    POWER10 machines as we didn't have a chance to test it due to a limited
    availability (POWER10 was released in 2021). If you can support us on this
    matter, please contact us. We also accept donations, so please consider
    supporting our project!)
  * RV32BE and RV64BE (32-bit and 64-bit big-endian RISC-V) are now supported as
    experimental targets. RISC-V is usually little-endian, but there exists a
    big-endian RISC-V as an extension. You can make gcc to emit code for big-endian
    RISC-V by passing -mbig-endian. mold can now link object files generated with
    that option.
  * --compress-debug-sections=zstd is now supported. This is an option to compress
    debug info embedded to an output file with Zstandard compression algorithm.
    Compared to the existing --compress-debug-sections=zlib, zstd is faster and
    gives a higher compression ratio. You probably can't start using zstd
    compression today though, because other tools such as gdb may not be able to
    read zstd-compressed debug info yet. But adding this option early makes mold
    future-proof. (ede7a5a)
  * mold no longer aligns loadable segments to page boundaries to reduce output file
    size. Previously, we allocated holes between loadable segments. The saving by
    this change is most visible for small programs. For example, a "hello world"
    program used to be ~18 KiB on x86-64. It's now 7.2 KiB. (2941d75)
  * Bug fixes and compatibility improvements
  * [RISCV] We optimized code so that the link speed for RISC-V is now comparable to
    the other targets. As an example, linking mold itself (~150 MiB in size) for
    RV64 used to take ~45 seconds on a simulated 16-core machine. It now takes only
    ~0.25 seconds. (3ab5489)
  * mold used to create more than one .rodata section under a certain condition.

OBS-URL: https://build.opensuse.org/package/show/devel:tools:compiler/mold?expand=0&rev=69
2022-09-27 07:24:13 +00:00

137 lines
3.5 KiB
RPMSpec

#
# spec file for package mold
#
# Copyright (c) 2022 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.5.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
ExclusiveArch: aarch64 %arm %ix86 x86_64 aarch64 riscv64 ppc64le
BuildRequires: cmake
%if %{suse_version} < 1550
BuildRequires: gcc10-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
BuildRequires: valgrind
BuildRequires: xxhash-devel
BuildRequires: zlib-devel
BuildRequires: zstd
PreReq: update-alternatives
%if %{suse_version} < 1550
%define build_args STRIP=true SYSTEM_XXHASH=1 USE_MIMALLOC=0 SYSTEM_ZSTD=1
%else
%define build_args STRIP=true SYSTEM_TBB=1 SYSTEM_XXHASH=1 USE_MIMALLOC=0 SYSTEM_ZSTD=1
%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-10
export CXX=g++-10
%endif
export CXXFLAGS="%{optflags} -Wno-sign-compare"
%make_build -e \
CXXFLAGS="${CXXFLAGS}" \
LDFLAGS="${CXXFLAGS}" \
PREFIX=%{_prefix} \
BINDIR=%{_bindir} \
MANDIR=%{_mandir} \
LIBDIR=%{_libdir} \
LIBEXECDIR=%{_libexecdir} \
%{build_args}
%install
%make_install -e \
PREFIX=%{_prefix} \
BINDIR=%{_bindir} \
MANDIR=%{_mandir} \
LIBDIR=%{_libdir} \
LIBEXECDIR=%{_libexecdir} \
%{build_args}
%check
%if %{suse_version} < 1550
export TEST_CC=gcc-10
export TEST_CXX=g++-10
%endif
%make_build test -k -e \
PREFIX=%{_prefix} \
BINDIR=%{_bindir} \
MANDIR=%{_mandir} \
LIBDIR=%{_libdir} \
LIBEXECDIR=%{_libexecdir} \
%{build_args}
%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
%{_bindir}/ld64.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