diff --git a/_scmsync.obsinfo b/_scmsync.obsinfo new file mode 100644 index 0000000..19ca1e6 --- /dev/null +++ b/_scmsync.obsinfo @@ -0,0 +1,4 @@ +mtime: 1725462627 +commit: 679f82e202407e8aea6eb1514bbeb3f5024ded59fc3a4a33a1607268d40dbfb1 +url: https://src.opensuse.org/jengelh/xxhash +revision: master diff --git a/build.specials.obscpio b/build.specials.obscpio new file mode 100644 index 0000000..7020f7a --- /dev/null +++ b/build.specials.obscpio @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9974f310c9154693e3b5c5b8086a7ee66f9dfcbc4ecd446fd795841b8955c242 +size 256 diff --git a/inline.patch b/inline.patch new file mode 100644 index 0000000..17111e2 --- /dev/null +++ b/inline.patch @@ -0,0 +1,32 @@ +From: Jan Engelhardt +Date: 2024-09-04 17:08:46.573623857 +0200 +References: https://github.com/Cyan4973/xxHash/issues/943 + +Ditch forced inlining, gcc-14 does not like it when combined with -Og. +(gcc-13 was fine.) And I want everyone to be able to use -Og. + +In function 'void XXH3_hashLong_internal_loop(xxh_u64*, const xxh_u8*, size_t, const xxh_u8*, size_t, XXH3_f_accumulate, XXH3_f_scrambleAcc)', + inlined from 'XXH_NAMESPACEXXH128_hash_t XXH3_hashLong_128b_internal(const void*, size_t, const xxh_u8*, size_t, XXH3_f_accumulate, XXH3_f_scrambleAcc)' at /usr/include/xxhash.h:6416:32, + inlined from 'XXH_NAMESPACEXXH128_hash_t XXH3_hashLong_128b_default(const void*, size_t, XXH64_hash_t, const void*, size_t)' at /usr/include/xxhash.h:6442:39: +/usr/include/xxhash.h:5364:18: error: inlining failed in call to 'always_inline' 'void XXH3_accumulate_scalar(xxh_u64*, const xxh_u8*, const xxh_u8*, size_t)': function not considered for inlining + 5364 | XXH_FORCE_INLINE XXH3_ACCUMULATE_TEMPLATE(scalar) +/usr/include/xxhash.h:5544:14: note: called from here + 5544 | f_acc(acc, input + n*block_len, secret, nbStripesPerBlock); + +--- + xxhash.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: xxHash-0.8.2/xxhash.h +=================================================================== +--- xxHash-0.8.2.orig/xxhash.h ++++ xxHash-0.8.2/xxhash.h +@@ -2107,7 +2107,7 @@ static void* XXH_memcpy(void* dest, cons + # define XXH_NO_INLINE static + /* enable inlining hints */ + #elif defined(__GNUC__) || defined(__clang__) +-# define XXH_FORCE_INLINE static __inline__ __attribute__((always_inline, unused)) ++# define XXH_FORCE_INLINE static __inline__ __attribute__((unused)) + # define XXH_NO_INLINE static __attribute__((noinline)) + #elif defined(_MSC_VER) /* Visual Studio */ + # define XXH_FORCE_INLINE static __forceinline diff --git a/xxhash.changes b/xxhash.changes index 6ad13f8..4eecbe6 100644 --- a/xxhash.changes +++ b/xxhash.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Tue Sep 3 02:11:09 UTC 2024 - Jan Engelhardt + +- Add inline.patch to resolve FTBFS on gcc-14 + -Og. + ------------------------------------------------------------------- Sun May 5 19:35:03 UTC 2024 - Bruno Pitrus diff --git a/xxhash.spec b/xxhash.spec index c133161..a1bf827 100644 --- a/xxhash.spec +++ b/xxhash.spec @@ -24,9 +24,11 @@ License: BSD-2-Clause AND GPL-2.0-only Group: Productivity/Security URL: https://github.com/Cyan4973/xxHash Source0: https://github.com/Cyan4973/xxHash/archive/v%{version}.tar.gz#/xxHash-%{version}.tar.gz -Patch0: test-tools-do-not-override-cflags.patch +Patch1: test-tools-do-not-override-cflags.patch +Patch2: inline.patch BuildRequires: gcc-c++ -BuildRequires: pkgconfig +BuildRequires: pkg-config +%{?suse_build_hwcaps_libs} %description xxHash is a hash algorithm. It completes the SMHasher test suite which @@ -34,38 +36,41 @@ evaluates collision, dispersion and randomness qualities of hash functions. Hashes are identical on all platforms. %package -n libxxhash0 -Summary: Shared library for xxHash - a non-cryptographic hash algorithm +Summary: Non-cryptographic hash algorithm License: BSD-2-Clause Group: System/Libraries %description -n libxxhash0 -Shared library for xxHash - a hash algorithm. It completes the SMHasher test -suite which evaluates collision, dispersion and randomness qualities of hash -functions. Hashes are identical on all platforms. +xxHash is a hash algorithm. It completes the SMHasher test suite which +evaluates collision, dispersion and randomness qualities of hash functions. +Hashes are identical on all platforms. %package devel -Summary: Development files for xxHash - a non-cryptographic hash algorithm +Summary: Headers for xxHash, a non-cryptographic hash algorithm License: BSD-2-Clause Group: Development/Libraries/C and C++ Requires: %{name} = %{version} Requires: libxxhash0 = %{version} %description devel -Development files for xxHash - a hash algorithm. It completes the SMHasher test -suite which evaluates collision, dispersion and randomness qualities of hash -functions. Hashes are identical on all platforms. +Headers and other development files for xxHash. %prep %autosetup -p1 -n xxHash-%{version} %build -export CFLAGS="%{optflags}" -export CXXFLAGS="%{optflags}" +# ALLOW_AVX just means "we guarantee we policed our %%optflags". +export CFLAGS="%{optflags} -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} %install -export CFLAGS="%{optflags}" +export CFLAGS="%{optflags} -DXXH_X86DISPATCH_ALLOW_AVX=1" export CXXFLAGS="%{optflags}" export LDFLAGS="%{?build_ldflags}" %make_install prefix=%{_prefix} libdir=%{_libdir}