New port: math/mppp: Multiprecision for modern C++

tests and benchmarks depend on a not yet committed bug#227102 (math/mpfr update)
This commit is contained in:
Yuri Victorovich 2018-04-01 21:54:44 +00:00
parent 5c544cbd5d
commit a407a23c27
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=466185
5 changed files with 87 additions and 0 deletions

View file

@ -323,6 +323,7 @@
SUBDIR += mpexpr
SUBDIR += mpfr
SUBDIR += mpir
SUBDIR += mppp
SUBDIR += mprime
SUBDIR += msieve
SUBDIR += mtl

43
math/mppp/Makefile Normal file
View file

@ -0,0 +1,43 @@
# $FreeBSD$
PORTNAME= mppp
DISTVERSIONPREFIX= v
DISTVERSION= 0.9-33
DISTVERSIONSUFFIX= -g9d18861
CATEGORIES= math
MAINTAINER= yuri@FreeBSD.org
COMMENT= Multiprecision for modern C++
LICENSE= MPL20
LICENSE_FILE= ${WRKSRC}/COPYING
# build only checks that the headers exist, and then they are included in the run time
BUILD_DEPENDS= ${LOCALBASE}/include/gmp.h:math/gmp \
${LOCALBASE}/include/mpfr.h:math/mpfr
RUN_DEPENDS= ${LOCALBASE}/include/gmp.h:math/gmp \
${LOCALBASE}/include/mpfr.h:math/mpfr
USES= cmake:outsource
USE_GITHUB= yes
GH_ACCOUNT= bluescarni
NO_BUILD= yes
NO_ARCH= yes
TEST_USES= compiler:c++14-lang
TEST_ARGS= -DMPPP_BUILD_TESTS=ON -DMPPP_WITH_MPFR=ON #-DMPPP_WITH_QUADMATH=ON (quadmath requires __float128, only available in clang6)
BENCHMARK_ARGS= -DMPPP_BUILD_BENCHMARKS=ON -DMPPP_BENCHMARK_BOOST=ON
do-test:
@cd ${BUILD_WRKSRC} && \
${SETENV} ${CONFIGURE_ENV} ${CMAKE_BIN} ${CMAKE_ARGS} ${TEST_ARGS} ${CMAKE_SOURCE_PATH} && \
${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} ${ALL_TARGET} && \
${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} test
benchmarks: build # additionally depends on boost-libs
@cd ${BUILD_WRKSRC} && \
${SETENV} ${CONFIGURE_ENV} ${CMAKE_BIN} ${CMAKE_ARGS} ${BENCHMARK_ARGS} ${CMAKE_SOURCE_PATH} && \
${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} ${ALL_TARGET} && \
${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} ${ALL_TARGET} benchmark
.include <bsd.port.mk>

3
math/mppp/distinfo Normal file
View file

@ -0,0 +1,3 @@
TIMESTAMP = 1522615913
SHA256 (bluescarni-mppp-v0.9-33-g9d18861_GH0.tar.gz) = 837da4d28c8fee3aa9004fd8c801e7ebc8653d75c5b74d6b3b752664b42125de
SIZE (bluescarni-mppp-v0.9-33-g9d18861_GH0.tar.gz) = 1280347

18
math/mppp/pkg-descr Normal file
View file

@ -0,0 +1,18 @@
mp++ is a C++11 library for multiprecision arithmetic, currently supporting
arbitrary-precision integers, rationals and floats, and quadruple-precision
floats.
Based on well-known libraries such as GMP, MPFR, and others, mp++ was initially
conceived as a GMP wrapper with a special focus on performance with small
operands. In particular, a small buffer optimisation and custom implementations
of basic mathematical primitives are instrumental in achieving a performance
increase, with respect to GMP and other integer multiprecision libraries, which
can be substantial (see the benchmarks section of the documentation). The price
to pay is a small overhead when operating on large integers.
Eventually, a multiprecision rational class and two multiprecision
floating-point classes were added, and today a secondary objective of mp++ is to
provide a modern, consistent and unified C++ interface to several lower-level
multiprecision libraries.
WWW: https://github.com/bluescarni/mppp

22
math/mppp/pkg-plist Normal file
View file

@ -0,0 +1,22 @@
include/mp++/concepts.hpp
include/mp++/config.hpp
include/mp++/detail/demangle.hpp
include/mp++/detail/fwd_decl.hpp
include/mp++/detail/gmp.hpp
include/mp++/detail/mpfr.hpp
include/mp++/detail/quadmath.hpp
include/mp++/detail/type_traits.hpp
include/mp++/detail/utils.hpp
include/mp++/exceptions.hpp
include/mp++/extra/pybind11.hpp
include/mp++/integer.hpp
include/mp++/mp++.hpp
include/mp++/rational.hpp
include/mp++/real.hpp
include/mp++/real128.hpp
lib/cmake/mp++/FindGMP.cmake
lib/cmake/mp++/FindMPFR.cmake
lib/cmake/mp++/FindQuadmath.cmake
lib/cmake/mp++/mp++-config-version.cmake
lib/cmake/mp++/mp++-config.cmake
lib/cmake/mp++/mp++_export.cmake