This updates devel/gmp to 6.2.0. gmp has a ton of machine-specific optimizations, so success on one arch doesn't mean it will work elsewhere.
I have successfully run the regression tests on * aarch64 * amd64 * i386 I'd like to see it tested on a few more archs, say, powerpc/sparc64/ mips64, before I commit it. Index: Makefile =================================================================== RCS file: /cvs/ports/devel/gmp/Makefile,v retrieving revision 1.40 diff -u -p -r1.40 Makefile --- Makefile 12 Jul 2019 20:44:10 -0000 1.40 +++ Makefile 2 Feb 2020 21:33:07 -0000 @@ -3,16 +3,14 @@ COMMENT-main= library for arbitrary precision arithmetic COMMENT-cxx= C++ library for arbitrary precision arithmetic -VERSION= 6.1.2 +VERSION= 6.2.0 DISTNAME= gmp-${VERSION} MULTI_PACKAGES= -main -cxx PKGNAME-main= gmp-${VERSION} PKGNAME-cxx= gmpxx-${VERSION} -REVISION= 3 -REVISION-cxx= 4 -SHARED_LIBS += gmp 10.0 # 13.2 -SHARED_LIBS += gmpxx 2.0 # 9.2 +SHARED_LIBS += gmp 11.0 # 14.0 +SHARED_LIBS += gmpxx 3.0 # 10.0 CATEGORIES= devel math HOMEPAGE= https://gmplib.org/ @@ -35,8 +33,7 @@ LIB_DEPENDS-cxx=${BASE_PKGPATH},-main \ PSEUDO_FLAVORS= no_cxx bootstrap FLAVOR?= -CONFIGURE_STYLE=autoconf -AUTOCONF_VERSION=2.69 +CONFIGURE_STYLE=gnu # Don't try to optimize for the local CPU submodel CONFIGURE_ARGS+=--build=${MACHINE_ARCH}-unknown-openbsd${OSrev} @@ -45,11 +42,5 @@ CONFIGURE_ARGS+=--build=${MACHINE_ARCH}- COMPILER= base-clang ports-gcc base-gcc CONFIGURE_ARGS+=--enable-cxx .endif - -post-patch: - @cp ${FILESDIR}/mpn_m88k_add_n.asm ${WRKSRC}/mpn/m88k/add_n.asm - @cp ${FILESDIR}/mpn_m88k_sub_n.asm ${WRKSRC}/mpn/m88k/sub_n.asm - @rm ${WRKSRC}/mpn/m88k/add_n.s ${WRKSRC}/mpn/m88k/sub_n.s \ - ${WRKSRC}/mpn/m88k/mul_1.s .include <bsd.port.mk> Index: distinfo =================================================================== RCS file: /cvs/ports/devel/gmp/distinfo,v retrieving revision 1.17 diff -u -p -r1.17 distinfo --- distinfo 19 Dec 2016 21:48:12 -0000 1.17 +++ distinfo 2 Feb 2020 21:33:07 -0000 @@ -1,2 +1,2 @@ -SHA256 (gmp-6.1.2.tar.xz) = h7Vl6JqaaE/k6+7duDmdziWZ+ckEmFTKjA373qDiGRI= -SIZE (gmp-6.1.2.tar.xz) = 1946336 +SHA256 (gmp-6.2.0.tar.xz) = JY5s1Rs/vfwYXHFtVfgsCK/1ffDG+9FDz27VYSZ6FSY= +SIZE (gmp-6.2.0.tar.xz) = 2012444 Index: files/mpn_m88k_add_n.asm =================================================================== RCS file: files/mpn_m88k_add_n.asm diff -N files/mpn_m88k_add_n.asm --- files/mpn_m88k_add_n.asm 13 Apr 2013 20:19:50 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,117 +0,0 @@ -dnl mc88100 mpn_add_n -- Add two limb vectors of the same length > 0 and store -dnl sum in a third limb vector. - -dnl Copyright 1992, 1994, 1995, 2000 Free Software Foundation, Inc. - -dnl This file is part of the GNU MP Library. - -dnl The GNU MP Library is free software; you can redistribute it and/or modify -dnl it under the terms of the GNU Lesser General Public License as published by -dnl the Free Software Foundation; either version 3 of the License, or (at your -dnl option) any later version. - -dnl The GNU MP Library is distributed in the hope that it will be useful, but -dnl WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -dnl or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public -dnl License for more details. - -dnl You should have received a copy of the GNU Lesser General Public License -dnl along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. - -include(`../config.m4') - - -C INPUT PARAMETERS -C res_ptr %r2 -C s1_ptr %r3 -C s2_ptr %r4 -C size %r5 - -C This code has been optimized to run one instruction per clock, avoiding -C load stalls and writeback contention. As a result, the instruction -C order is not always natural. - -C The speed is about 4.6 clocks/limb + 18 clocks/limb-vector on an 88100, -C but on the 88110, it seems to run much slower, 6.6 clocks/limb. - -ASM_START() -PROLOGUE(mpn_add_n) - ld %r6,%r3,0 C read first limb from s1_ptr - extu %r10,%r5,3 - ld %r7,%r4,0 C read first limb from s2_ptr - - subu.co %r5,%r0,%r5 C (clear carry as side effect) - mak %r5,%r5,3<4> - bcnd eq0,%r5,Lzero - -ifdef(`PIC',` - or %r9,%r0,%r25 - or %r11,%r0,%r1 - or.u %r25,%r0,%hi16(.Lpic#abdiff) - bsr.n .Lpic - or %r25,%r25,%lo16(.Lpic#abdiff) -.Lpic: add %r25,%r25,%r1 - or %r1,%r0,%r11 - or.u %r11,%r0,%hi16(Lbase#got_rel) - or %r11,%r11,%lo16(Lbase#got_rel) - ld %r12,%r25,%r11 - or %r25,%r0,%r9 -',` - or %r12,%r0,%lo16(Lbase) - or.u %r12,%r12,%hi16(Lbase) -') - addu %r12,%r12,%r5 C %r12 is address for entering in loop - - extu %r5,%r5,2 C divide by 4 - subu %r2,%r2,%r5 C adjust res_ptr - subu %r3,%r3,%r5 C adjust s1_ptr - subu %r4,%r4,%r5 C adjust s2_ptr - - or %r8,%r6,%r0 - - jmp.n %r12 - or %r9,%r7,%r0 - -Loop: addu %r3,%r3,32 - st %r8,%r2,28 - addu %r4,%r4,32 - ld %r6,%r3,0 - addu %r2,%r2,32 - ld %r7,%r4,0 -Lzero: subu %r10,%r10,1 C add 0 + 8r limbs (adj loop cnt) -Lbase: ld %r8,%r3,4 - addu.cio %r6,%r6,%r7 - ld %r9,%r4,4 - st %r6,%r2,0 - ld %r6,%r3,8 C add 7 + 8r limbs - addu.cio %r8,%r8,%r9 - ld %r7,%r4,8 - st %r8,%r2,4 - ld %r8,%r3,12 C add 6 + 8r limbs - addu.cio %r6,%r6,%r7 - ld %r9,%r4,12 - st %r6,%r2,8 - ld %r6,%r3,16 C add 5 + 8r limbs - addu.cio %r8,%r8,%r9 - ld %r7,%r4,16 - st %r8,%r2,12 - ld %r8,%r3,20 C add 4 + 8r limbs - addu.cio %r6,%r6,%r7 - ld %r9,%r4,20 - st %r6,%r2,16 - ld %r6,%r3,24 C add 3 + 8r limbs - addu.cio %r8,%r8,%r9 - ld %r7,%r4,24 - st %r8,%r2,20 - ld %r8,%r3,28 C add 2 + 8r limbs - addu.cio %r6,%r6,%r7 - ld %r9,%r4,28 - st %r6,%r2,24 - bcnd.n ne0,%r10,Loop C add 1 + 8r limbs - addu.cio %r8,%r8,%r9 - - st %r8,%r2,28 C store most significant limb - - jmp.n %r1 - addu.ci %r2,%r0,%r0 C return carry-out from most sign. limb -EPILOGUE(mpn_add_n) Index: files/mpn_m88k_sub_n.asm =================================================================== RCS file: files/mpn_m88k_sub_n.asm diff -N files/mpn_m88k_sub_n.asm --- files/mpn_m88k_sub_n.asm 13 Apr 2013 20:19:50 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,118 +0,0 @@ -dnl mc88100 mpn_sub_n -- Subtract two limb vectors of the same length > 0 and -dnl store difference in a third limb vector. - -dnl Copyright 1992, 1994, 1996, 2000 Free Software Foundation, Inc. - -dnl This file is part of the GNU MP Library. - -dnl The GNU MP Library is free software; you can redistribute it and/or modify -dnl it under the terms of the GNU Lesser General Public License as published by -dnl the Free Software Foundation; either version 3 of the License, or (at your -dnl option) any later version. - -dnl The GNU MP Library is distributed in the hope that it will be useful, but -dnl WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -dnl or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public -dnl License for more details. - -dnl You should have received a copy of the GNU Lesser General Public License -dnl along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. - -include(`../config.m4') - -C INPUT PARAMETERS -C res_ptr %r2 -C s1_ptr %r3 -C s2_ptr %r4 -C size %r5 - -C This code has been optimized to run one instruction per clock, avoiding -C load stalls and writeback contention. As a result, the instruction -C order is not always natural. - -C The speed is about 4.6 clocks/limb + 18 clocks/limb-vector on an 88100, -C but on the 88110, it seems to run much slower, 6.6 clocks/limb. - -ASM_START() -PROLOGUE(mpn_sub_n) - ld %r6,%r3,0 C read first limb from s1_ptr - extu %r10,%r5,3 - ld %r7,%r4,0 C read first limb from s2_ptr - - subu %r5,%r0,%r5 - mak %r5,%r5,3<4> - bcnd.n eq0,%r5,Lzero - subu.co %r0,%r0,%r0 C initialize carry - -ifdef(`PIC',` - or %r9,%r0,%r25 - or %r11,%r0,%r1 - or.u %r25,%r0,%hi16(.Lpic#abdiff) - bsr.n .Lpic - or %r25,%r25,%lo16(.Lpic#abdiff) -.Lpic: add %r25,%r25,%r1 - or %r1,%r0,%r11 - or.u %r11,%r0,%hi16(Lbase#got_rel) - or %r11,%r11,%lo16(Lbase#got_rel) - ld %r12,%r25,%r11 - or %r25,%r0,%r9 -',` - or %r12,%r0,%lo16(Lbase) - or.u %r12,%r12,%hi16(Lbase) -') - addu %r12,%r12,%r5 C %r12 is address for entering in loop - - extu %r5,%r5,2 C divide by 4 - subu %r2,%r2,%r5 C adjust res_ptr - subu %r3,%r3,%r5 C adjust s1_ptr - subu %r4,%r4,%r5 C adjust s2_ptr - - or %r8,%r6,%r0 - - jmp.n %r12 - or %r9,%r7,%r0 - -Loop: addu %r3,%r3,32 - st %r8,%r2,28 - addu %r4,%r4,32 - ld %r6,%r3,0 - addu %r2,%r2,32 - ld %r7,%r4,0 -Lzero: subu %r10,%r10,1 C subtract 0 + 8r limbs (adj loop cnt) -Lbase: ld %r8,%r3,4 - subu.cio %r6,%r6,%r7 - ld %r9,%r4,4 - st %r6,%r2,0 - ld %r6,%r3,8 C subtract 7 + 8r limbs - subu.cio %r8,%r8,%r9 - ld %r7,%r4,8 - st %r8,%r2,4 - ld %r8,%r3,12 C subtract 6 + 8r limbs - subu.cio %r6,%r6,%r7 - ld %r9,%r4,12 - st %r6,%r2,8 - ld %r6,%r3,16 C subtract 5 + 8r limbs - subu.cio %r8,%r8,%r9 - ld %r7,%r4,16 - st %r8,%r2,12 - ld %r8,%r3,20 C subtract 4 + 8r limbs - subu.cio %r6,%r6,%r7 - ld %r9,%r4,20 - st %r6,%r2,16 - ld %r6,%r3,24 C subtract 3 + 8r limbs - subu.cio %r8,%r8,%r9 - ld %r7,%r4,24 - st %r8,%r2,20 - ld %r8,%r3,28 C subtract 2 + 8r limbs - subu.cio %r6,%r6,%r7 - ld %r9,%r4,28 - st %r6,%r2,24 - bcnd.n ne0,%r10,Loop C subtract 1 + 8r limbs - subu.cio %r8,%r8,%r9 - - st %r8,%r2,28 C store most significant limb - - addu.ci %r2,%r0,%r0 C return carry-out from most sign. limb - jmp.n %r1 - xor %r2,%r2,1 -EPILOGUE(mpn_sub_n) Index: patches/patch-acinclude_m4 =================================================================== RCS file: patches/patch-acinclude_m4 diff -N patches/patch-acinclude_m4 --- patches/patch-acinclude_m4 5 Nov 2017 15:12:56 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,20 +0,0 @@ -$OpenBSD: patch-acinclude_m4,v 1.2 2017/11/05 15:12:56 jca Exp $ - -Zero out the memory before testing for overwrite bug. - -Fixed in unstable, not in the gmp-6.1 branch: - - https://gmplib.org/repo/gmp/rev/2ce5c60f5372 - -Index: acinclude.m4 ---- acinclude.m4.orig -+++ acinclude.m4 -@@ -741,7 +741,7 @@ main () - long i; - for (i = 0; i < 88 + 1; i++) - a[i] = ~0L; -- r = malloc (10000 * sizeof (unsigned long)); -+ r = calloc (10000, sizeof (unsigned long)); - r2 = r; - for (i = 0; i < 528; i += 23) - { Index: pkg/PLIST-cxx =================================================================== RCS file: /cvs/ports/devel/gmp/pkg/PLIST-cxx,v retrieving revision 1.1 diff -u -p -r1.1 PLIST-cxx --- pkg/PLIST-cxx 2 Nov 2018 18:43:56 -0000 1.1 +++ pkg/PLIST-cxx 2 Feb 2020 21:33:07 -0000 @@ -1,6 +1,7 @@ @comment $OpenBSD: PLIST-cxx,v 1.1 2018/11/02 18:43:56 naddy Exp $ @conflict gmp-<6.1.2p2 include/gmpxx.h -lib/libgmpxx.a +@static-lib lib/libgmpxx.a lib/libgmpxx.la @lib lib/libgmpxx.so.${LIBgmpxx_VERSION} +lib/pkgconfig/gmpxx.pc Index: pkg/PLIST-main =================================================================== RCS file: /cvs/ports/devel/gmp/pkg/PLIST-main,v retrieving revision 1.1 diff -u -p -r1.1 PLIST-main --- pkg/PLIST-main 2 Nov 2018 18:43:56 -0000 1.1 +++ pkg/PLIST-main 2 Feb 2020 21:33:07 -0000 @@ -2,6 +2,7 @@ @pkgpath devel/gmp include/gmp.h @info info/gmp.info -lib/libgmp.a +@static-lib lib/libgmp.a lib/libgmp.la @lib lib/libgmp.so.${LIBgmp_VERSION} +lib/pkgconfig/gmp.pc -- Christian "naddy" Weisgerber na...@mips.inka.de