From 6fbc273ac82db4f69cd50ac8d14dbe3f38e7473085c886c8aea83f4ec53dcf93 Mon Sep 17 00:00:00 2001 From: Bruno Friedmann Date: Wed, 25 Sep 2024 11:49:21 +0200 Subject: [PATCH] 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 --- xxhash.spec | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/xxhash.spec b/xxhash.spec index a1bf827..7d88ab3 100644 --- a/xxhash.spec +++ b/xxhash.spec @@ -59,30 +59,32 @@ Headers and other development files for xxHash. %autosetup -p1 -n xxHash-%{version} %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". -export CFLAGS="%{optflags} -DXXH_X86DISPATCH_ALLOW_AVX=1" -export CXXFLAGS="$CFLAGS" +export CFLAGS="${tmpflags} -DXXH_X86DISPATCH_ALLOW_AVX=1" +export CXXFLAGS="${CFLAGS}" export LDFLAGS="%{?build_ldflags}" # 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 # CPUs, and for both LP64 as well as ILP32 — it seems to be all within margin # of error. -%make_build prefix=%{_prefix} libdir=%{_libdir} +%make_build prefix=%{_prefix} libdir=%{_libdir} DISPATCH=1 %install -export CFLAGS="%{optflags} -DXXH_X86DISPATCH_ALLOW_AVX=1" -export CXXFLAGS="%{optflags}" +export CFLAGS="${tmpflags} -DXXH_X86DISPATCH_ALLOW_AVX=1" +export CXXFLAGS="${CFLAGS}" export LDFLAGS="%{?build_ldflags}" -%make_install prefix=%{_prefix} libdir=%{_libdir} +%make_install prefix=%{_prefix} libdir=%{_libdir} DISPATCH=1 rm -rf %{buildroot}%{_libdir}/libxxhash.a %check -export CFLAGS="%{optflags}" -export CXXFLAGS="%{optflags}" +export CFLAGS="${tmpflags}" +export CXXFLAGS="${CFLAGS}" export LDFLAGS="%{?build_ldflags}" # 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 -%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 @@ -104,6 +106,7 @@ export LDFLAGS="%{?build_ldflags}" %files devel %{_includedir}/xxhash.h %{_includedir}/xxh3.h +%{_includedir}/xxh_x86dispatch.h %{_libdir}/pkgconfig/libxxhash.pc %{_libdir}/libxxhash.so