Hello community, here is the log from the commit of package fplll for openSUSE:Factory checked in at 2020-06-29 21:18:54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/fplll (Old) and /work/SRC/openSUSE:Factory/.fplll.new.3060 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "fplll" Mon Jun 29 21:18:54 2020 rev:7 rq:817747 version:5.3.3 Changes: -------- --- /work/SRC/openSUSE:Factory/fplll/fplll.changes 2020-06-05 20:29:05.309326557 +0200 +++ /work/SRC/openSUSE:Factory/.fplll.new.3060/fplll.changes 2020-06-29 21:19:25.349980262 +0200 @@ -1,0 +2,6 @@ +Mon Jun 29 15:44:22 UTC 2020 - Jan Engelhardt <[email protected]> + +- Update to release 5.3.3 + * No changelog was provided + +------------------------------------------------------------------- Old: ---- fplll-5.3.2.tar.gz New: ---- fplll-5.3.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ fplll.spec ++++++ --- /var/tmp/diff_new_pack.Dwh7UI/_old 2020-06-29 21:19:26.045982415 +0200 +++ /var/tmp/diff_new_pack.Dwh7UI/_new 2020-06-29 21:19:26.045982415 +0200 @@ -18,7 +18,7 @@ Name: fplll %define lname libfplll6 -Version: 5.3.2 +Version: 5.3.3 Release: 0 Summary: Lenstra-Lovász Lattice Basis Reduction Algorithm Library License: LGPL-2.1-or-later ++++++ fplll-5.3.2.tar.gz -> fplll-5.3.3.tar.gz ++++++ ++++ 2233 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/fplll-5.3.2/README.md new/fplll-5.3.3/README.md --- old/fplll-5.3.2/README.md 2020-01-09 15:50:30.000000000 +0100 +++ new/fplll-5.3.3/README.md 2020-06-29 17:35:42.000000000 +0200 @@ -113,7 +113,7 @@ sudo apt-get update -Then run `sudo apt-get install <packages>` for the (indirectly) required packages, such as `make`, `autoconf`, `libtool`, `gcc`, `g++`, `libgmp-dev`, and `libmpfr-dev`. Finally, download the fplll source code, extract the contents, navigate to this folder in Bash (commonly found under `/mnt/c/<local path>` when stored somewhere on the `C:\` drive), and run: +Then run `sudo apt-get install <packages>` for the (indirectly) required packages, such as `make`, `autoconf`, `libtool`, `gcc`, `g++`, `libgmp-dev`, `libmpfr-dev` and `pkg-config`. Finally, download the fplll source code, extract the contents, navigate to this folder in Bash (commonly found under `/mnt/c/<local path>` when stored somewhere on the `C:\` drive), and run: ./autogen.sh ./configure diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/fplll-5.3.2/config.h.in new/fplll-5.3.3/config.h.in --- old/fplll-5.3.2/config.h.in 2020-01-09 15:50:54.000000000 +0100 +++ new/fplll-5.3.3/config.h.in 2020-06-29 17:36:02.000000000 +0200 @@ -21,7 +21,7 @@ /* long version string */ #undef FPLLL_VERSION_INFO -/* defined when libqd-dev is available */ +/* defined when libqd is usable */ #undef FPLLL_WITH_QD /* recursive enumeration enabled */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/fplll-5.3.2/configure.ac new/fplll-5.3.3/configure.ac --- old/fplll-5.3.2/configure.ac 2020-01-09 15:50:30.000000000 +0100 +++ new/fplll-5.3.3/configure.ac 2020-06-29 17:35:42.000000000 +0200 @@ -2,7 +2,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ(2.61) -AC_INIT(fplll, 5.3.2) +AC_INIT(fplll, 5.3.3) AC_CONFIG_SRCDIR([fplll/fplll.cpp]) # cf http://comments.gmane.org/gmane.comp.sysutils.autoconf.general/15737 @@ -39,7 +39,7 @@ # current, and set both revision and age to zero. FPLLL_LT_CURRENT=6 -FPLLL_LT_REVISION=2 +FPLLL_LT_REVISION=3 FPLLL_LT_AGE=0 AC_SUBST(FPLLL_LT_CURRENT) @@ -67,11 +67,8 @@ LDFLAGS="$LDFLAGS -L$withval/lib" mpir_lib_path="$withval/lib" ]) - AC_CHECK_LIB(mpir, __gmpz_init, , [AC_MSG_ERROR( - [MPIR not found, see http://mpir.org])]) AC_CHECK_LIB(mpir, __gmp_get_memory_functions, , [AC_MSG_ERROR( - [MPIR version too old, need >= 1.0.0, see http://mpir.org])]) - LIBGMP="-lmpir" + [MPIR version >= 1.0.0 needed, see http://mpir.org])]) ]) AS_IF([test "x$enable_mpir" != "xyes"], [ @@ -81,15 +78,10 @@ LDFLAGS="$LDFLAGS -L$withval/lib" mpir_lib_path="$withval/lib" ]) - AC_CHECK_LIB(gmp, __gmpz_init, , [AC_MSG_ERROR( - [GNU MP not found, see http://mpir.org])]) AC_CHECK_LIB(gmp, __gmp_get_memory_functions, , [AC_MSG_ERROR( - [GMP version too old, need >= 4.2.0, see http://gmplib.org])]) - LIBGMP="-lgmp" + [GMP version >= 4.2.0 needed, see http://gmplib.org])]) ]) -AC_SUBST(LIBGMP) - AC_ARG_WITH(mpfr, AS_HELP_STRING([--with-mpfr=@<:@=DIR@:>@], [MPFR install directory]), [ CPPFLAGS="$CPPFLAGS -I$withval/include" @@ -97,28 +89,54 @@ mpfr_lib_path="$withval/lib" ]) -AC_CHECK_LIB(mpfr, mpfr_add, , [AC_MSG_ERROR( -[MPFR not found, see http://www.mpfr.org])]) - AC_CHECK_LIB(mpfr, mpfr_fms, , [AC_MSG_ERROR( -[MPFR version too old, need >= 2.3.0, see http://www.mpfr.org])]) +[MPFR version >= 2.3.0 needed, see http://www.mpfr.org])]) AC_ARG_WITH(qd, AS_HELP_STRING([--with-qd=@<:@=DIR@:>@], [quaddouble install directory]),) -AS_IF([test "x$with_qd" != "xno"], [ - CPPFLAGS="$CPPFLAGS -I$with_qd/include" - LDFLAGS="$LDFLAGS -L$with_qd/lib" - qd_lib_path="$with_qd/lib" - AC_CHECK_HEADER(qd/dd_real.h, - have_libqd="yes", - have_libqd="no") - ]) +# Act as if --with-qd was passed, by default. +AS_IF([test -z "$with_qd"], [with_qd=yes]) + +# Passing --with-qd (without an argument) will use pkg-config to +# detect qd on the system, or fall back to manual detection of headers +# and libraries if that didn't work for some reason. +# +# We only show a warning if we cannot find libqd, it is optional but recommended +AS_IF([test "x$with_qd" == "xyes"], [ + PKG_CHECK_MODULES([LIBQD], [qd], [have_libqd="yes"], [ + # fall back to manual search. + AC_SEARCH_LIBS(c_dd_add, + qd, + [ + AC_CHECK_HEADER(qd/dd_real.h, + [have_libqd="yes"], + [AC_MSG_WARN([unable to find header qd/dd_real.h])]) + ], + [ AC_MSG_WARN([unable to find c_dd_add() in libqd]) ] + )] + )], + # else if + [test "x$with_qd" != "xno"], [ + CPPFLAGS="$CPPFLAGS -I$with_qd/include" + AC_CHECK_HEADER(qd/dd_real.h, [ + LDFLAGS="$LDFLAGS -L$with_qd/lib" + qd_lib_path="$with_qd/lib" + LIBQD_LIBS="-lqd" + have_libqd="yes"], + [ AC_MSG_WARN([unable to find header qd/dd_real.h]) ] + )] +) AS_IF([test "x${have_libqd}" = "xyes"], [ - LIBQD_LIBADD="-lqd" - AC_DEFINE([FPLLL_WITH_QD], [1], [defined when libqd-dev is available])]) + AC_DEFINE([FPLLL_WITH_QD], [1], [defined when libqd is usable]) +]) -AC_SUBST(LIBQD_LIBADD) +# This will be non-empty if we found qd using pkg-config, or if a path +# was passed to --with-qd=<path> and we set the variable ourselves. If +# we found libqd via a manual library search, on the other hand, then +# the linker flag will be found in LIBS instead because that's just how +# the AC_SEARCH_LIBS macro works. +AC_SUBST(LIBQD_LIBS) # Checks for header files. AC_HEADER_STDC @@ -137,6 +155,8 @@ AX_PTHREAD() +CHECK_ATOMIC() + # enumeration dimension max_enum_dim=256 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/fplll-5.3.2/fplll/Makefile.am new/fplll-5.3.3/fplll/Makefile.am --- old/fplll-5.3.2/fplll/Makefile.am 2020-01-09 15:50:30.000000000 +0100 +++ new/fplll-5.3.3/fplll/Makefile.am 2020-06-29 17:35:42.000000000 +0200 @@ -68,7 +68,7 @@ # latsieve bin latsieve_SOURCES=sieve/sieve_main.cpp sieve/sieve_main.h -latsieve_LDADD=libfplll.la $(LIBQD_LIBADD) +latsieve_LDADD=libfplll.la $(LIBQD_LIBS) # libfplll libfplll_la_SOURCES=fplll.cpp fplll.h \ @@ -107,7 +107,7 @@ libfplll_la_CXXFLAGS=$(PTHREAD_CFLAGS) EXTRA_libfplll_la_SOURCES= svpcvp.cpp -libfplll_la_LIBADD=$(LIBGMP) -lmpfr $(LIBQD_LIBADD) $(PTHREAD_LIBS) +libfplll_la_LIBADD=$(LIBQD_LIBS) $(PTHREAD_LIBS) libfplll_la_LDFLAGS=-no-undefined -version-info @FPLLL_LT_CURRENT@:@FPLLL_LT_REVISION@:@FPLLL_LT_AGE@ $(PTHREAD_CFLAGS) if FPLLL_PARALLEL_ENUM diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/fplll-5.3.2/fplll/main.cpp new/fplll-5.3.3/fplll/main.cpp --- old/fplll-5.3.2/fplll/main.cpp 2020-01-09 15:50:30.000000000 +0100 +++ new/fplll-5.3.3/fplll/main.cpp 2020-06-29 17:35:42.000000000 +0200 @@ -146,6 +146,8 @@ param.gh_factor = o.bkz_gh_factor; if (o.bkz_flags & BKZ_MAX_LOOPS) param.max_loops = o.bkz_max_loops; + if (o.bkz_flags & BKZ_MAX_TIME) + param.max_time = o.bkz_max_time; if (o.verbose) param.flags |= BKZ_VERBOSE; if (o.no_lll) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/fplll-5.3.2/fplll/nr/nr_Z.inl new/fplll-5.3.3/fplll/nr/nr_Z.inl --- old/fplll-5.3.2/fplll/nr/nr_Z.inl 2020-01-09 15:50:30.000000000 +0100 +++ new/fplll-5.3.3/fplll/nr/nr_Z.inl 2020-06-29 17:35:42.000000000 +0200 @@ -26,6 +26,7 @@ */ inline Z_NR<Z>(); inline Z_NR<Z>(const Z_NR<Z> &z); + inline Z_NR<Z>(const Z &z); inline ~Z_NR<Z>(); /** get data */ @@ -156,6 +157,11 @@ inline void sub_ui(const Z_NR<Z> &a, unsigned int b); /** + * value := a mod b + */ + inline void mod(const Z_NR<Z> &a, const Z_NR<Z> &b); + + /** * value := -a. */ inline void neg(const Z_NR<Z> &a); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/fplll-5.3.2/fplll/nr/nr_Z_d.inl new/fplll-5.3.3/fplll/nr/nr_Z_d.inl --- old/fplll-5.3.2/fplll/nr/nr_Z_d.inl 2020-01-09 15:50:30.000000000 +0100 +++ new/fplll-5.3.3/fplll/nr/nr_Z_d.inl 2020-06-29 17:35:42.000000000 +0200 @@ -13,7 +13,7 @@ template <> inline Z_NR<double>::Z_NR() {} template <> inline Z_NR<double>::Z_NR(const Z_NR<double> &z) : data(z.data) {} - +template <> inline Z_NR<double>::Z_NR(const double &z) : data(z) {} template <> inline Z_NR<double>::~Z_NR() {} /** get data */ @@ -145,6 +145,11 @@ data = a.data - static_cast<double>(b); } +template <> inline void Z_NR<double>::mod(const Z_NR<double> &a, const Z_NR<double> &b) +{ + data = std::fmod(a.data, b.data); +} + template <> inline void Z_NR<double>::neg(const Z_NR<double> &a) { data = -a.data; } template <> inline void Z_NR<double>::mul(const Z_NR<double> &a, const Z_NR<double> &b) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/fplll-5.3.2/fplll/nr/nr_Z_l.inl new/fplll-5.3.3/fplll/nr/nr_Z_l.inl --- old/fplll-5.3.2/fplll/nr/nr_Z_l.inl 2020-01-09 15:50:30.000000000 +0100 +++ new/fplll-5.3.3/fplll/nr/nr_Z_l.inl 2020-06-29 17:35:42.000000000 +0200 @@ -13,7 +13,7 @@ template <> inline Z_NR<long>::Z_NR() {} template <> inline Z_NR<long>::Z_NR(const Z_NR<long> &z) : data(z.data) {} - +template <> inline Z_NR<long>::Z_NR(const long &z) : data(z) {} template <> inline Z_NR<long>::~Z_NR() {} /** get data */ @@ -99,7 +99,6 @@ template <> inline bool Z_NR<long>::operator!=(const Z_NR<long> &a) const { return data != a.data; } template <> inline bool Z_NR<long>::operator!=(long a) const { return data != a; } - /** arithmetic */ template <> inline void Z_NR<long>::add(const Z_NR<long> &a, const Z_NR<long> &b) { @@ -120,7 +119,10 @@ { data = a.data - b; } - +template <> inline void Z_NR<long>::mod(const Z_NR<long> &a, const Z_NR<long> &b) +{ + data = a.data % b.data; +} template <> inline void Z_NR<long>::neg(const Z_NR<long> &a) { data = -a.data; } template <> inline void Z_NR<long>::mul(const Z_NR<long> &a, const Z_NR<long> &b) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/fplll-5.3.2/fplll/nr/nr_Z_mpz.inl new/fplll-5.3.3/fplll/nr/nr_Z_mpz.inl --- old/fplll-5.3.2/fplll/nr/nr_Z_mpz.inl 2020-01-09 15:50:30.000000000 +0100 +++ new/fplll-5.3.3/fplll/nr/nr_Z_mpz.inl 2020-06-29 17:35:42.000000000 +0200 @@ -12,6 +12,8 @@ template <> inline Z_NR<mpz_t>::Z_NR(const Z_NR<mpz_t> &z) { mpz_init_set(data, z.data); } +// Note - you'll still need to call mpz_free on a, because references are non-owning. +template <> inline Z_NR<mpz_t>::Z_NR(const mpz_t &z) { mpz_init_set(data, z); } template <> inline Z_NR<mpz_t>::~Z_NR() { mpz_clear(data); } /** get data */ @@ -54,6 +56,7 @@ /** operator */ template <> inline void Z_NR<mpz_t>::operator=(const Z_NR<mpz_t> &a) { mpz_set(data, a.data); } +// Note - you'll still need to call mpz_free on a, because references are non-owning. template <> inline void Z_NR<mpz_t>::operator=(const mpz_t &a) { mpz_set(data, a); } template <> inline void Z_NR<mpz_t>::operator=(long a) { mpz_set_si(data, a); } @@ -121,6 +124,11 @@ mpz_sub_ui(data, a.data, b); } +template <> inline void Z_NR<mpz_t>::mod(const Z_NR<mpz_t> &a, const Z_NR<mpz_t> &b) +{ + mpz_mod(data, a.data, b.data); +} + template <> inline void Z_NR<mpz_t>::neg(const Z_NR<mpz_t> &a) { mpz_neg(data, a.data); } template <> inline void Z_NR<mpz_t>::mul(const Z_NR<mpz_t> &a, const Z_NR<mpz_t> &b) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/fplll-5.3.2/fplll.pc.in new/fplll-5.3.3/fplll.pc.in --- old/fplll-5.3.2/fplll.pc.in 2020-01-09 15:50:30.000000000 +0100 +++ new/fplll-5.3.3/fplll.pc.in 2020-06-29 17:35:42.000000000 +0200 @@ -7,4 +7,4 @@ Description: lattice algorithms with floating-point computations Version: @PACKAGE_VERSION@ Cflags: @PTHREAD_CFLAGS@ -Libs: -L${libdir} @LIBQD_LIBADD@ @LIBGMP@ @PTHREAD_LIBS@ -lmpfr -lfplll +Libs: -L${libdir} @LIBQD_LIBS@ @PTHREAD_LIBS@ @LIBS@ -lfplll diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/fplll-5.3.2/m4/ax_atomic.m4 new/fplll-5.3.3/m4/ax_atomic.m4 --- old/fplll-5.3.2/m4/ax_atomic.m4 1970-01-01 01:00:00.000000000 +0100 +++ new/fplll-5.3.3/m4/ax_atomic.m4 2020-06-29 17:35:42.000000000 +0200 @@ -0,0 +1,45 @@ +# Some versions of gcc/libstdc++ require linking with -latomic if +# using the C++ atomic library. + +# Copyright (c) 2015-2016 Tim Kosse <[email protected]> + +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +m4_define([_CHECK_ATOMIC_testbody], [[ + #include <atomic> + #include <cstdint> + + int main() { + std::atomic<int64_t> a{}; + + int64_t v = 5; + int64_t r = a.fetch_add(v); + return static_cast<int>(r); + } +]]) + +AC_DEFUN([CHECK_ATOMIC], [ + + AC_LANG_PUSH(C++) + + AC_MSG_CHECKING([whether std::atomic can be used without link library]) + + AC_LINK_IFELSE([AC_LANG_SOURCE([_CHECK_ATOMIC_testbody])],[ + AC_MSG_RESULT([yes]) + ],[ + AC_MSG_RESULT([no]) + LIBS="$LIBS -latomic" + AC_MSG_CHECKING([whether std::atomic needs -latomic]) + AC_LINK_IFELSE([AC_LANG_SOURCE([_CHECK_ATOMIC_testbody])],[ + AC_MSG_RESULT([yes]) + ],[ + AC_MSG_RESULT([no]) + AC_MSG_FAILURE([cannot figure out how to use std::atomic]) + ]) + ]) + + AC_LANG_POP +]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/fplll-5.3.2/m4/ax_pthread.m4 new/fplll-5.3.3/m4/ax_pthread.m4 --- old/fplll-5.3.2/m4/ax_pthread.m4 2020-01-09 15:50:30.000000000 +0100 +++ new/fplll-5.3.3/m4/ax_pthread.m4 2020-06-29 17:35:42.000000000 +0200 @@ -55,6 +55,7 @@ # # Copyright (c) 2008 Steven G. Johnson <[email protected]> # Copyright (c) 2011 Daniel Richard G. <[email protected]> +# Copyright (c) 2019 Marc Stevens <[email protected]> # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the @@ -82,8 +83,7 @@ # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. -# modified based on version serial 26 -## serial 26 +#serial 27 AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) AC_DEFUN([AX_PTHREAD], [ @@ -124,10 +124,12 @@ # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). -# Create a list of thread flags to try. Items starting with a "-" are -# C compiler flags, and other items are library names, except for "none" -# which indicates that we try without any flags at all, and "pthread-config" -# which is a program returning the flags for the Pth emulation library. +# Create a list of thread flags to try. Items with a "," contain both +# C compiler flags (before ",") and linker flags (after ","). Other items +# starting with a "-" are C compiler flags, and remaining items are +# library names, except for "none" which indicates that we try without +# any flags at all, and "pthread-config" which is a program returning +# the flags for the Pth emulation library. ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" @@ -195,36 +197,10 @@ # that too in a future libc.) So we'll check first for the # standard Solaris way of linking pthreads (-mt -lpthread). - ax_pthread_flags=",-mt,-lpthread pthread $ax_pthread_flags" + ax_pthread_flags="-mt,-lpthread pthread $ax_pthread_flags" ;; esac -# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC) - -AS_IF([test "x$GCC" = "xyes"], - [ax_pthread_flags=",-pthread,-lpthread -pthread -pthreads $ax_pthread_flags"]) - -# The presence of a feature test macro requesting re-entrant function -# definitions is, on some systems, a strong hint that pthreads support is -# correctly enabled - -case $host_os in - darwin* | hpux* | linux* | osf* | solaris*) - ax_pthread_check_macro="_REENTRANT" - ;; - - aix*) - ax_pthread_check_macro="_THREAD_SAFE" - ;; - - *) - ax_pthread_check_macro="--" - ;; -esac -AS_IF([test "x$ax_pthread_check_macro" = "x--"], - [ax_pthread_check_cond=0], - [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"]) - # Are we compiling with Clang? AC_CACHE_CHECK([whether $CC is Clang], @@ -243,83 +219,47 @@ ]) ax_pthread_clang="$ax_cv_PTHREAD_CLANG" -ax_pthread_clang_warning=no -# Clang needs special handling, because older versions handle the -pthread -# option in a rather... idiosyncratic way +# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC) -if test "x$ax_pthread_clang" = "xyes"; then +# Note that for GCC and Clang -pthread generally implies -lpthread, +# except when -nostdlib is passed. +# This is problematic using libtool to build C++ shared libraries with pthread: +# [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25460 +# [2] https://bugzilla.redhat.com/show_bug.cgi?id=661333 +# [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468555 +# To solve this, first try -pthread together with -lpthread for GCC - # Clang takes -pthread; it has never supported any other flag +AS_IF([test "x$GCC" = "xyes"], + [ax_pthread_flags="-pthread,-lpthread -pthread -pthreads $ax_pthread_flags"]) - # (Note 1: This will need to be revisited if a system that Clang - # supports has POSIX threads in a separate library. This tends not - # to be the way of modern systems, but it's conceivable.) +# Clang takes -pthread (never supported any other flag), but we'll try with -lpthread first - # (Note 2: On some systems, notably Darwin, -pthread is not needed - # to get POSIX threads support; the API is always present and - # active. We could reasonably leave PTHREAD_CFLAGS empty. But - # -pthread does define _REENTRANT, and while the Darwin headers - # ignore this macro, third-party headers might not.) +AS_IF([test "x$ax_pthread_clang" = "xyes"], + [ax_pthread_flags="-pthread,-lpthread -pthread"]) - PTHREAD_CFLAGS="-pthread" - PTHREAD_LIBS= - ax_pthread_ok=yes +# The presence of a feature test macro requesting re-entrant function +# definitions is, on some systems, a strong hint that pthreads support is +# correctly enabled - # However, older versions of Clang make a point of warning the user - # that, in an invocation where only linking and no compilation is - # taking place, the -pthread option has no effect ("argument unused - # during compilation"). They expect -pthread to be passed in only - # when source code is being compiled. - # - # Problem is, this is at odds with the way Automake and most other - # C build frameworks function, which is that the same flags used in - # compilation (CFLAGS) are also used in linking. Many systems - # supported by AX_PTHREAD require exactly this for POSIX threads - # support, and in fact it is often not straightforward to specify a - # flag that is used only in the compilation phase and not in - # linking. Such a scenario is extremely rare in practice. - # - # Even though use of the -pthread flag in linking would only print - # a warning, this can be a nuisance for well-run software projects - # that build with -Werror. So if the active version of Clang has - # this misfeature, we search for an option to squash it. +case $host_os in + darwin* | hpux* | linux* | osf* | solaris*) + ax_pthread_check_macro="_REENTRANT" + ;; - AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread], - [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG], - [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown - # Create an alternate version of $ac_link that compiles and - # links in two steps (.c -> .o, .o -> exe) instead of one - # (.c -> exe), because the warning occurs only in the second - # step - ax_pthread_save_ac_link="$ac_link" - ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' - ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"` - ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" - ax_pthread_save_CFLAGS="$CFLAGS" - for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do - AS_IF([test "x$ax_pthread_try" = "xunknown"], [break]) - CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" - ac_link="$ax_pthread_save_ac_link" - AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], - [ac_link="$ax_pthread_2step_ac_link" - AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], - [break]) - ]) - done - ac_link="$ax_pthread_save_ac_link" - CFLAGS="$ax_pthread_save_CFLAGS" - AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no]) - ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" - ]) + aix*) + ax_pthread_check_macro="_THREAD_SAFE" + ;; - case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in - no | unknown) ;; - *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; - esac + *) + ax_pthread_check_macro="--" + ;; +esac +AS_IF([test "x$ax_pthread_check_macro" = "x--"], + [ax_pthread_check_cond=0], + [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"]) -fi # $ax_pthread_clang = yes if test "x$ax_pthread_ok" = "xno"; then for ax_pthread_try_flag in $ax_pthread_flags; do @@ -329,17 +269,17 @@ AC_MSG_CHECKING([whether pthreads work without any flags]) ;; + *,*) + PTHREAD_CFLAGS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\1/"` + PTHREAD_LIBS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\2/"` + AC_MSG_CHECKING([whether pthreads work with "$PTHREAD_CFLAGS" and "$PTHREAD_LIBS"]) + ;; + -*) AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag]) PTHREAD_CFLAGS="$ax_pthread_try_flag" ;; - ,*) - PTHREAD_CFLAGS=`echo $ax_pthread_try_flag | sed "s/^,\(.*\),\(.*\)$/\1/"` - PTHREAD_LIBS=`echo $ax_pthread_try_flag | sed "s/^,\(.*\),\(.*\)$/\2/"` - AC_MSG_CHECKING([whether pthreads work with CFLAGS="$PTHREAD_CFLAGS" LIBS="$PTHREAD_LIBS"]) - ;; - pthread-config) AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no]) AS_IF([test "x$ax_pthread_config" = "xno"], [continue]) @@ -400,6 +340,80 @@ done fi + +# Clang needs special handling, because older versions handle the -pthread +# option in a rather... idiosyncratic way + +if test "x$ax_pthread_clang" = "xyes"; then + + # Clang takes -pthread; it has never supported any other flag + + # (Note 1: This will need to be revisited if a system that Clang + # supports has POSIX threads in a separate library. This tends not + # to be the way of modern systems, but it's conceivable.) + + # (Note 2: On some systems, notably Darwin, -pthread is not needed + # to get POSIX threads support; the API is always present and + # active. We could reasonably leave PTHREAD_CFLAGS empty. But + # -pthread does define _REENTRANT, and while the Darwin headers + # ignore this macro, third-party headers might not.) + + # However, older versions of Clang make a point of warning the user + # that, in an invocation where only linking and no compilation is + # taking place, the -pthread option has no effect ("argument unused + # during compilation"). They expect -pthread to be passed in only + # when source code is being compiled. + # + # Problem is, this is at odds with the way Automake and most other + # C build frameworks function, which is that the same flags used in + # compilation (CFLAGS) are also used in linking. Many systems + # supported by AX_PTHREAD require exactly this for POSIX threads + # support, and in fact it is often not straightforward to specify a + # flag that is used only in the compilation phase and not in + # linking. Such a scenario is extremely rare in practice. + # + # Even though use of the -pthread flag in linking would only print + # a warning, this can be a nuisance for well-run software projects + # that build with -Werror. So if the active version of Clang has + # this misfeature, we search for an option to squash it. + + AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread], + [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG], + [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown + # Create an alternate version of $ac_link that compiles and + # links in two steps (.c -> .o, .o -> exe) instead of one + # (.c -> exe), because the warning occurs only in the second + # step + ax_pthread_save_ac_link="$ac_link" + ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' + ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"` + ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" + ax_pthread_save_CFLAGS="$CFLAGS" + for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do + AS_IF([test "x$ax_pthread_try" = "xunknown"], [break]) + CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" + ac_link="$ax_pthread_save_ac_link" + AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], + [ac_link="$ax_pthread_2step_ac_link" + AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], + [break]) + ]) + done + ac_link="$ax_pthread_save_ac_link" + CFLAGS="$ax_pthread_save_CFLAGS" + AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no]) + ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" + ]) + + case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in + no | unknown) ;; + *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; + esac + +fi # $ax_pthread_clang = yes + + + # Various other checks: if test "x$ax_pthread_ok" = "xyes"; then ax_pthread_save_CFLAGS="$CFLAGS" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/fplll-5.3.2/tests/Makefile.am new/fplll-5.3.3/tests/Makefile.am --- old/fplll-5.3.2/tests/Makefile.am 2020-01-09 15:50:30.000000000 +0100 +++ new/fplll-5.3.3/tests/Makefile.am 2020-06-29 17:35:42.000000000 +0200 @@ -40,12 +40,12 @@ AM_CPPFLAGS = -I$(TOPSRCDIR) -I$(TOPSRCDIR)/fplll -I$(TOPBUILDDIR) -DTESTDATADIR=\"$(TOPSRCDIR)/\" STAGEDIR := $(realpath -s $(TOPBUILDDIR)/.libs) -AM_LDFLAGS = -L$(STAGEDIR) -Wl,-rpath,$(STAGEDIR) -lfplll -no-install $(LIBQD_LIBADD) +AM_LDFLAGS = -L$(STAGEDIR) -Wl,-rpath,$(STAGEDIR) -lfplll -no-install $(LIBQD_LIBS) TESTS = test_nr test_lll test_enum test_cvp test_svp test_bkz test_pruner test_sieve test_gso test_lll_gram test_hlll test_svp_gram test_bkz_gram -test_pruner_LDADD=$(LIBGMP) -lmpfr $(LIBQD_LIBADD) -test_sieve_LDADD=$(LIBGMP) -lmpfr $(LIBQD_LIBADD) +test_pruner_LDADD=$(LIBQD_LIBS) +test_sieve_LDADD=$(LIBQD_LIBS) test_nr_SOURCES = test_nr.cpp test_lll_SOURCES = test_lll.cpp
