gnu: Add libtommath.

* gnu/packages/multiprecision.scm (libtommath): New variable.
* gnu/packages/patches/libtommath.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
This commit is contained in:
Efraim Flashner 2019-02-22 14:18:10 +02:00
parent 13eb556f9f
commit 1a753385c7
No known key found for this signature in database
GPG key ID: 41AAE7DCCA3D8351
3 changed files with 113 additions and 1 deletions

View file

@ -993,6 +993,7 @@ dist_patch_DATA = \
%D%/packages/patches/libssh2-fix-build-failure-with-gcrypt.patch \
%D%/packages/patches/libtar-CVE-2013-4420.patch \
%D%/packages/patches/libtheora-config-guess.patch \
%D%/packages/patches/libtommath-fix-linkage.patch \
%D%/packages/patches/libtool-skip-tests2.patch \
%D%/packages/patches/libusb-0.1-disable-tests.patch \
%D%/packages/patches/libusb-for-axoloti.patch \

View file

@ -6,7 +6,7 @@
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@ -290,3 +290,59 @@ (define-public tomsfastmath
ISO C. It is a port of LibTomMath with optional support for inline assembler
multiplies.")
(license public-domain)))
(define-public libtommath
(package
(name "libtommath")
(version "1.1.0")
(outputs '("out" "static"))
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/libtom/libtommath/releases/"
"download/v" version "/ltm-" version ".tar.xz"))
(sha256
(base32
"1bbyagqzfdbg37k1n08nsqzdf44z8zsnjjinqbsyj7rxg246qilh"))
(patches (search-patches "libtommath-fix-linkage.patch"))))
(build-system gnu-build-system)
(arguments
'(#:phases
(modify-phases %standard-phases
(delete 'configure) ; no configure
(add-after 'unpack 'prepare-build
(lambda _
;; Don't pull in coreutils.
(substitute* "makefile_include.mk"
(("arch") "uname -m"))
;; We want the shared library by default so force it to be the
;; default makefile target.
(delete-file "makefile")
(symlink "makefile.shared" "makefile")
#t))
(add-after 'install 'remove-static-library
(lambda* (#:key outputs #:allow-other-keys)
(delete-file (string-append (assoc-ref outputs "out")
"/lib/libtommath.a"))
#t))
(replace 'check
(lambda* (#:key make-flags #:allow-other-keys)
(apply invoke "make" "test_standalone" make-flags)
(invoke "sh" "test")))
(add-after 'install 'install-static-library
(lambda* (#:key outputs #:allow-other-keys)
(invoke "make" "-f" "makefile.unix" "install"
(string-append "PREFIX=" (assoc-ref outputs "static"))
(string-append "CC=" (which "gcc"))))))
#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
"CC=gcc")))
(native-inputs
`(("libtool" ,libtool)))
(home-page "https://www.libtom.net/LibTomMath/")
(synopsis "Portable number theoretic multiple-precision integer library")
(description "LibTomMath is a portable number theoretic multiple-precision
integer library written entirely in C. It's designed to provide an API that is
simple to work with that provides fairly efficient routines that build out of
the box without configuration.")
(license unlicense)))

View file

@ -0,0 +1,55 @@
https://github.com/libtom/libtommath/commit/93dea3a4162527346cd8856bfda6f17ffe98ab04.patch
From 93dea3a4162527346cd8856bfda6f17ffe98ab04 Mon Sep 17 00:00:00 2001
From: Steffen Jaeckel <s@jaeckel.eu>
Date: Thu, 31 Jan 2019 14:12:03 +0100
Subject: [PATCH] makefile.shared: fix compilation and linkage
---
makefile.shared | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/makefile.shared b/makefile.shared
index 3955f830..870b18d1 100644
--- a/makefile.shared
+++ b/makefile.shared
@@ -18,6 +18,7 @@ ifndef LIBTOOL
endif
endif
LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC)
+LTLINK = $(LIBTOOL) --mode=link --tag=CC $(CC)
LCOV_ARGS=--directory .libs --directory .
@@ -59,7 +60,7 @@ objs: $(OBJECTS)
LOBJECTS = $(OBJECTS:.o=.lo)
$(LIBNAME): $(OBJECTS)
- $(LIBTOOL) --mode=link --tag=CC $(CC) $(LDFLAGS) $(LOBJECTS) -o $(LIBNAME) -rpath $(LIBPATH) -version-info $(VERSION_SO) $(LIBTOOLFLAGS)
+ $(LTLINK) $(LDFLAGS) $(LOBJECTS) -o $(LIBNAME) -rpath $(LIBPATH) -version-info $(VERSION_SO) $(LIBTOOLFLAGS)
install: $(LIBNAME)
install -d $(DESTDIR)$(LIBPATH)
@@ -76,16 +77,16 @@ uninstall:
rm $(DESTDIR)$(LIBPATH)/pkgconfig/libtommath.pc
test: $(LIBNAME) demo/demo.o
- $(CC) $(CFLAGS) -c demo/demo.c -o demo/demo.o
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o test demo/demo.o $(LIBNAME)
+ $(LTCOMPILE) $(CFLAGS) -c demo/demo.c -o demo/demo.o
+ $(LTLINK) $(LDFLAGS) -o test demo/demo.o $(LIBNAME)
test_standalone: $(LIBNAME) demo/demo.o
- $(CC) $(CFLAGS) -c demo/demo.c -o demo/demo.o
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o test demo/demo.o $(LIBNAME)
+ $(LTCOMPILE) $(CFLAGS) -c demo/demo.c -o demo/demo.o
+ $(LTLINK) $(LDFLAGS) -o test demo/demo.o $(LIBNAME)
.PHONY: mtest
mtest:
- cd mtest ; $(CC) $(CFLAGS) $(LDFLAGS) mtest.c -o mtest
+ cd mtest ; $(CC) $(CFLAGS) -O0 mtest.c $(LDFLAGS) -o mtest
timing: $(LIBNAME) demo/timing.c
- $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -DTIMER demo/timing.c $(LIBNAME) -o timing
+ $(LTLINK) $(CFLAGS) $(LDFLAGS) -DTIMER demo/timing.c $(LIBNAME) -o timing