+#
+# Conditional build:
+%bcond_without redis # Redis secondary storage support
+
Summary: Compiler cache
-Summary(pl): Przyspieszacz kompilowania
-Summary(pt_BR): Cache para compiladores C/C++
+Summary(pl.UTF-8): Pamięć podręczna dla kompilatora
+Summary(pt_BR.UTF-8): Cache para compiladores C/C++
Name: ccache
-Version: 2.4
-Release: 1.2
-License: GPL
+Version: 4.6
+Release: 1
+License: GPL v3+
Group: Development/Tools
-Source0: http://ccache.samba.org/ftp/ccache/%{name}-%{version}.tar.gz
-# Source0-md5: 73c1ed1e767c1752dd0f548ec1e66ce7
-URL: http://ccache.samba.org/
-BuildRequires: autoconf
-BuildRequires: automake
+Source0: https://github.com/ccache/ccache/releases/download/v%{version}/%{name}-%{version}.tar.xz
+# Source0-md5: 68f58b2282c910893ff1780c652ed38d
+URL: https://ccache.dev/
+BuildRequires: asciidoc
+BuildRequires: cmake >= 3.10
+%{?with_redis:BuildRequires: hiredis-devel >= 0.13.3}
+%ifarch %{arm}
+BuildRequires: libatomic-devel
+%endif
+BuildRequires: libstdc++-devel >= 6:5
+BuildRequires: rpmbuild(macros) >= 1.742
+BuildRequires: ruby-asciidoctor
+BuildRequires: tar >= 1:1.22
+BuildRequires: xz
+BuildRequires: zstd-devel >= 1.1.2
+%{?with_redis:Requires: hiredis >= 0.13.3}
+Requires: zstd >= 1.1.2
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
-%define _libdir %{_prefix}/%{_lib}/%{name}
+%define pkglibexecdir %{_libexecdir}/%{name}
+
+%ifarch %{arm}
+%define archcflags -DXXH_FORCE_MEMORY_ACCESS=1
+%endif
%description
ccache is a compiler cache. It acts as a caching pre-processor to
when a compilation can be satisfied from cache. This often results in
a 5 to 10 times speedup in common compilations.
-%description -l pl
-ccache dzia³a jako cachuj±cy preprocesor dla kompilatorów C/C++. Przy
-u¿yciu opcji kompilatora -E oraz tablicy haszuj±cej do wykrywania, czy
-do kompilacji wystarczy zawarto¶æ cache. Daje to zazwyczaj
-przyspieszenie kompilacji 5 do 10 razy.
+%description -l pl.UTF-8
+ccache to pamięć podręczna dla kompilatora - działa jako cachujący
+preprocesor dla kompilatorów C/C++, wykorzystujący opcję kompilatora
+-E oraz tablicę haszującą do wykrywania, czy do kompilacji wystarczy
+zawartość pamięci podręcznej. Daje to zazwyczaj przyspieszenie
+kompilacji 5 do 10 razy.
-%description -l pt_BR
-ccache é um cache para compiladores. Ele funciona mantendo um cache de
-pré-processamento para compiladores C/C++ utilizando-se do parâmetro
-- -E e de um hash para detectar quando uma compilação pode ser
+%description -l pt_BR.UTF-8
+ccache é um cache para compiladores. Ele funciona mantendo um cache de
+pré-processamento para compiladores C/C++ utilizando-se do parâmetro
+- -E e de um hash para detectar quando uma compilação pode ser
reaproveitada de um cache armazenado em disco. O ganho de tempo em
- compilações comuns pode chegar a uma escala de até 10 vezes em relação
+ compilações comuns pode chegar a uma escala de até 10 vezes em relação
ao tempo normal.
%package wrapper
Summary: Symlinks for c++/cc/g++/gcc
-Summary(pl): Dowi±zania symboliczne do c++/cc/g++/gcc
+Summary(pl.UTF-8): Dowiązania symboliczne do c++/cc/g++/gcc
Group: Development/Tools
+Requires: %{name} = %{version}-%{release}
%description wrapper
-This package contains the softlinks to distcc for each compiler.
+This package contains the softlinks to ccache for each compiler.
+
+%description wrapper -l pl.UTF-8
+Ten pakiet zawiera dowiązania symboliczne do ccache dla każdego
+kompilatora.
%prep
%setup -q
%build
-%{__aclocal}
-%{__autoconf}
-cp -f /usr/share/automake/config.* .
-%configure
+export CFLAGS="%{rpmcflags} %{?archcflags}"
+%cmake -B build \
+ -DUSE_CCACHE=OFF \
+ -DUSE_FASTER_LINKER=OFF \
+ %{cmake_on_off redis REDIS_STORAGE_BACKEND}
-%{__make}
+%{__make} -C build
%install
rm -rf $RPM_BUILD_ROOT
+install -d $RPM_BUILD_ROOT/etc/env.d
-%{__make} install \
+%{__make} -C build install \
DESTDIR=$RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{%{_bindir},%{_libdir},/etc/profile.d}
-for cc in cc c++ g++ gcc %{_target_cpu}-pld-linux-gcc %{_target_cpu}-pld-linux-g++; do
- ln -s ../../bin/%{name} $RPM_BUILD_ROOT%{_libdir}/$cc
+install -d $RPM_BUILD_ROOT{%{_bindir},%{pkglibexecdir},/etc/profile.d}
+%ifarch x32
+target=x86_64-%{_target_vendor}-%{_target_os}-gnux32
+%else
+target=%{_target_cpu}-%{_target_vendor}-%{_target_os}
+%endif
+for cc in cc c++ g++ gcc $target-gcc $target-g++; do
+ ln -s ../../bin/%{name} $RPM_BUILD_ROOT%{pkglibexecdir}/$cc
done
-echo 'export PATH=%{_libdir}:$PATH' > \
+echo 'export PATH=%{pkglibexecdir}:$PATH' > \
$RPM_BUILD_ROOT/etc/profile.d/%{name}.sh
%clean
-rm -fr $RPM_BUILD_ROOT
+rm -rf $RPM_BUILD_ROOT
%files
%defattr(644,root,root,755)
-%doc README
+%doc LICENSE.* README.md doc/{AUTHORS.*,MANUAL.*,NEWS.*}
%attr(755,root,root) %{_bindir}/ccache
-%{_mandir}/man1/ccache*
+%{_mandir}/man1/ccache.1*
%files wrapper
%defattr(644,root,root,755)
-%attr(755,root,root) /etc/profile.d/%{name}.sh
-%dir %{_libdir}
-%attr(755,root,root) %{_libdir}/*
+/etc/profile.d/%{name}.sh
+%dir %{pkglibexecdir}
+%attr(755,root,root) %{pkglibexecdir}/c++
+%attr(755,root,root) %{pkglibexecdir}/cc
+%attr(755,root,root) %{pkglibexecdir}/g++
+%attr(755,root,root) %{pkglibexecdir}/gcc
+%attr(755,root,root) %{pkglibexecdir}/*-g++
+%attr(755,root,root) %{pkglibexecdir}/*-gcc