BUGS FIXED
* Make Intel Broadwell configurations work on Windows.
FEATURES
* Work around faulty cpuid on some recent Intel chips (this allows GMP to run on Skylake Pentiums).
* Support thumb-less ARM chips.
This changes the buildlink3.mk files to use an include guard for the
recursive include. The use of BUILDLINK_DEPTH, BUILDLINK_DEPENDS,
BUILDLINK_PACKAGES and BUILDLINK_ORDER is handled by a single new
variable BUILDLINK_TREE. Each buildlink3.mk file adds a pair of
enter/exit marker, which can be used to reconstruct the tree and
to determine first level includes. Avoiding := for large variables
(BUILDLINK_ORDER) speeds up parse time as += has linear complexity.
The include guard reduces system time by avoiding reading files over and
over again. For complex packages this reduces both %user and %sys time to
half of the former time.
Changes between GMP version 4.2 and 4.2.1
Bugs:
* Shared library numbers corrected.
* Broken support for 32-bit AIX fixed.
* Misc minor fixes.
Speedups:
* Exact division (mpz_divexact) now falls back to plain division for large
operands.
Features:
* Support for some new systems.
Changes between GMP version 4.1.4 and 4.2
Bugs:
* Minor bug fixes and code generalizations.
* Expanded and improved test suite.
Speedups:
* Many minor optimizations, too many to mention here.
* Division now always subquadratic.
* Computation of n-factorial much faster.
* Added basic x86-64 assembly code.
* Floating-point output is now subquadratic for all bases.
* FFT multiply code now about 25% faster.
* Toom3 multiply code faster.
Features:
* Much improved configure.
* Workarounds for many more compiler bugs.
* Temporary allocations are now made on the stack only if small.
* New systems supported: HPPA-2.0 gcc, IA-64 HP-UX, PowerPC-64 Darwin,
Sparc64 GNU/Linux.
* New i386 fat binaries, selecting optimised code at runtime (--enable-fat).
* New build option: --enable-profiling=instrument.
* New memory function: mp_get_memory_functions.
* New Mersenne Twister random numbers: gmp_randinit_mt, also now used for
gmp_randinit_default.
* New random functions: gmp_randinit_set, gmp_urandomb_ui, gmp_urandomm_ui.
* New integer functions: mpz_combit, mpz_rootrem.
* gmp_printf etc new type "M" for mp_limb_t.
* gmp_scanf and friends now accept C99 hex floats.
* Numeric input and output can now be in bases up to 62.
* Comparisons mpz_cmp_d, mpz_cmpabs_d, mpf_cmp_d recognise infinities.
* Conversions mpz_get_d, mpq_get_d, mpf_get_d truncate towards zero,
previously their behaviour was unspecified.
* Fixes for overflow issues with operands >= 2^31 bits.
Caveats:
* mpfr is gone, and will from now on be released only separately. Please see
www.mpfr.org.
and add a new helper target and script, "show-buildlink3", that outputs
a listing of the buildlink3.mk files included as well as the depth at
which they are included.
For example, "make show-buildlink3" in fonts/Xft2 displays:
zlib
fontconfig
iconv
zlib
freetype2
expat
freetype2
Xrender
renderproto
RECOMMENDED is removed. It becomes ABI_DEPENDS.
BUILDLINK_RECOMMENDED.foo becomes BUILDLINK_ABI_DEPENDS.foo.
BUILDLINK_DEPENDS.foo becomes BUILDLINK_API_DEPENDS.foo.
BUILDLINK_DEPENDS does not change.
IGNORE_RECOMMENDED (which defaulted to "no") becomes USE_ABI_DEPENDS
which defaults to "yes".
Added to obsolete.mk checking for IGNORE_RECOMMENDED.
I did not manually go through and fix any aesthetic tab/spacing issues.
I have tested the above patch on DragonFly building and packaging
subversion and pkglint and their many dependencies.
I have also tested USE_ABI_DEPENDS=no on my NetBSD workstation (where I
have used IGNORE_RECOMMENDED for a long time). I have been an active user
of IGNORE_RECOMMENDED since it was available.
As suggested, I removed the documentation sentences suggesting bumping for
"security" issues.
As discussed on tech-pkg.
I will commit to revbump, pkglint, pkg_install, createbuildlink separately.
Note that if you use wip, it will fail! I will commit to pkgsrc-wip
later (within day).
in the process. (More information on tech-pkg.)
Bump PKGREVISION and BUILDLINK_DEPENDS of all packages using libtool and
installing .la files.
Bump PKGREVISION (only) of all packages depending directly on the above
via a buildlink3 include.
the normal case when BUILDLINK_DEPENDS.<pkg> isn't specified, it receives
a value only once due to the multiple inclusion protection in the
bulldlink3.mk files. In the case where a package includes several
buildlink3.mk files that each want a slightly different version of another
dependency, having BUILDLINK_DEPENDS.<pkg> be a list allows for the
strictest <pkg> dependency to be matched.