1
0
forked from jengelh/xxhash

fix usage of DISPATCH=1

- upstream will activate optimization only with -O3 but %{optflags}
set -O2, we patch optflags to use -O3
- DISPATCH=1 seem to be needed on make / make install line call to
obtain an optimized binary, and also get dispatch header installed
in include

Signed-off-by: Bruno Friedmann <bruno@ioda-net.ch>
This commit is contained in:
Bruno Friedmann 2024-09-25 11:49:21 +02:00
parent 679f82e202
commit 6fbc273ac8

View File

@ -59,30 +59,32 @@ Headers and other development files for xxHash.
%autosetup -p1 -n xxHash-%{version} %autosetup -p1 -n xxHash-%{version}
%build %build
# upstream make -O3 mandatory to get performance gain
tmpflags="$(echo %{optflags} | sed 's,-O2,-O3,g')"
# ALLOW_AVX just means "we guarantee we policed our %%optflags". # ALLOW_AVX just means "we guarantee we policed our %%optflags".
export CFLAGS="%{optflags} -DXXH_X86DISPATCH_ALLOW_AVX=1" export CFLAGS="${tmpflags} -DXXH_X86DISPATCH_ALLOW_AVX=1"
export CXXFLAGS="$CFLAGS" export CXXFLAGS="${CFLAGS}"
export LDFLAGS="%{?build_ldflags}" export LDFLAGS="%{?build_ldflags}"
# DISPATCH=1 if you want AVX2/AVX512. But it does not seem to perform any # DISPATCH=1 if you want AVX2/AVX512. But it does not seem to perform any
# better than the lowest-denomimation code on at least the 1135G7 and 5950X # better than the lowest-denomimation code on at least the 1135G7 and 5950X
# CPUs, and for both LP64 as well as ILP32 — it seems to be all within margin # CPUs, and for both LP64 as well as ILP32 — it seems to be all within margin
# of error. # of error.
%make_build prefix=%{_prefix} libdir=%{_libdir} %make_build prefix=%{_prefix} libdir=%{_libdir} DISPATCH=1
%install %install
export CFLAGS="%{optflags} -DXXH_X86DISPATCH_ALLOW_AVX=1" export CFLAGS="${tmpflags} -DXXH_X86DISPATCH_ALLOW_AVX=1"
export CXXFLAGS="%{optflags}" export CXXFLAGS="${CFLAGS}"
export LDFLAGS="%{?build_ldflags}" export LDFLAGS="%{?build_ldflags}"
%make_install prefix=%{_prefix} libdir=%{_libdir} %make_install prefix=%{_prefix} libdir=%{_libdir} DISPATCH=1
rm -rf %{buildroot}%{_libdir}/libxxhash.a rm -rf %{buildroot}%{_libdir}/libxxhash.a
%check %check
export CFLAGS="%{optflags}" export CFLAGS="${tmpflags}"
export CXXFLAGS="%{optflags}" export CXXFLAGS="${CFLAGS}"
export LDFLAGS="%{?build_ldflags}" export LDFLAGS="%{?build_ldflags}"
# not safe for parallel execution as it removes xxhash.o and recreates it with different flags # not safe for parallel execution as it removes xxhash.o and recreates it with different flags
# the list is taken from test-all with non-working/irrelevant ones (such as ones that change the toolchain) removed # the list is taken from test-all with non-working/irrelevant ones (such as ones that change the toolchain) removed
%make_build -j1 test test-unicode listL120 trailingWhitespace test-xxh-nnn-sums %make_build -j1 DISPATCH=1 test test-unicode listL120 trailingWhitespace test-xxh-nnn-sums
%ldconfig_scriptlets -n libxxhash0 %ldconfig_scriptlets -n libxxhash0
@ -104,6 +106,7 @@ export LDFLAGS="%{?build_ldflags}"
%files devel %files devel
%{_includedir}/xxhash.h %{_includedir}/xxhash.h
%{_includedir}/xxh3.h %{_includedir}/xxh3.h
%{_includedir}/xxh_x86dispatch.h
%{_libdir}/pkgconfig/libxxhash.pc %{_libdir}/pkgconfig/libxxhash.pc
%{_libdir}/libxxhash.so %{_libdir}/libxxhash.so