Add libmissing , standard math functions missing from the FreeBSD libm.

This commit is contained in:
bf
2012-12-20 19:38:12 +00:00
parent eccc5279de
commit f0f82f37e4
4 changed files with 95 additions and 0 deletions
+1
View File
@@ -215,6 +215,7 @@
SUBDIR += libjbigi
SUBDIR += liblbfgs
SUBDIR += libmath++
SUBDIR += libmissing
SUBDIR += libneural
SUBDIR += libocas
SUBDIR += liborigin
+85
View File
@@ -0,0 +1,85 @@
# $FreeBSD$
PORTNAME= libmissing
DISTVERSION= 20121220
CATEGORIES= math
MASTER_SITES= LOCAL/bf
MAINTAINER= bf@FreeBSD.org
COMMENT= Standard math functions missing from the FreeBSD libm
LICENSE= BSD
LIB_DEPENDS= mpc:${PORTSDIR}/math/mpc
USE_LDCONFIG= yes
USE_XZ= yes
MAKE_ENV= LDADD="-lmpc" LIB=missing SHLIB_MAJOR="${SHLIB_MAJOR}" \
SRCCONF="${NONEXISTENT}" SRCS="${SRCS}"
OPTIONS_DEFINE= PROFILE
PLIST_FILES= include/missing_complex.h \
include/missing_math.h \
lib/libmissing.a lib/libmissing.so \
lib/libmissing.so.${SHLIB_MAJOR}
SHLIB_MAJOR= 1
SRCS= libmissing.c
CFLAGS+= -fno-builtin -fno-math-errno -I. -I${LOCALBASE}/include
LDFLAGS+= -L${LOCALBASE}/lib
.include <bsd.port.options.mk>
.if ${PORT_OPTIONS:MPROFILE} || defined(WITH_PROFILE)
.if defined(NOPROFILE) || defined(NO_PROFILE) || defined(WITHOUT_PROFILE)
IGNORE = you have defined WITH_PROFILE, but have also defined\
WITHOUT_PROFILE, NOPROFILE, or NO_PROFILE
.elif !exists(/usr/lib/libc_p.a)
IGNORE = you have chosen WITH_PROFILE, but have not installed the\
base system profiling libraries
.endif
PLIST_FILES+= lib/libmissing_p.a
.else
MAKE_ENV+= NO_PROFILE=yes
.endif
post-patch:
@${PRINTF} "LIBDIR=\t${PREFIX}/lib\n.include <bsd.lib.mk>\n" > \
${WRKSRC}/Makefile
.for t in d q s
@cd ${WRKSRC}/c/common; ${CP} initseed.c maxtest.c ${WRKSRC}/c/${t}p/
.endfor
@${REINPLACE_CMD} -E \
'/(XCFLAGS|XDEFINES|XINCLUDES|XLDFLAGS|XLIBS|XMFLAGS|XOPT)[[:blank:]]+=/d' \
${WRKSRC}/c/Makefile
@${REINPLACE_CMD} -e \
'/#include <math.h>/{x;s|^.*$$|#include "missing_math.h"|;H;x;}' \
${WRKSRC}/c/common/elefunt.h
@${REINPLACE_CMD} -e '\|COMMONOBJS[[:blank:]]*=|s|../common/||g' \
${WRKSRC}/c/dp/Makefile \
${WRKSRC}/c/qp/Makefile \
${WRKSRC}/c/sp/Makefile
check regression-test test: build
@cd ${WRKSRC}/c; ${SETENV} ${MAKE_ENV} XCFLAGS="${CFLAGS} -frounding-math" \
XINCLUDES="-I${WRKSRC}" XLDFLAGS="${LDFLAGS}" XLIBS="-L${WRKSRC} -lmissing" \
LD_LIBRARY_PATH="/lib:/usr/lib:${LOCALBASE}/lib:${WRKSRC}" \
${MAKE} ${_MAKE_JOBS} ${MAKE_ARGS} all3
.for t in d q s
@${PRINTF} "\n\n\n\t\t%s\n\n\n" "REPORT OF ${t:U}. PRECISION TEST RESULTS:"
@${CAT} ${WRKSRC}/c/${t}p/tall${t}p.lst-xxx
.endfor
post-install:
@cd ${WRKSRC}; ${INSTALL_DATA} missing_complex.h missing_math.h \
${PREFIX}/include
.if !${PORT_OPTIONS:MEXAMPLES}
@${MKDIR} ${EXAMPLESDIR}
@cd ${WRKSRC}; ${INSTALL_DATA} ${PORTEXAMPLES} ${EXAMPLESDIR}
PORTEXAMPLES= ${SRCS}
.endif
.include <bsd.port.mk>
+2
View File
@@ -0,0 +1,2 @@
SHA256 (libmissing-20121220.tar.xz) = 226325e8cb7f28873c06da081978762079c07a90d53524aabb574d8731a6fb47
SIZE (libmissing-20121220.tar.xz) = 129684
+7
View File
@@ -0,0 +1,7 @@
This is a collection of stopgap replacements for standard math
functions missing from libm in various supported versions of
FreeBSD. The functions are slower than the existing libm
functions, but are more accurate than many naive replacements.
Exceptions are largely ignored. N. Beebe's extended C version
of the ELEFUNT package is used to provide regression tests for
some of the real-valued functions.