aboutsummaryrefslogtreecommitdiff
path: root/math
diff options
context:
space:
mode:
authorBrendan Fabeny <bf@FreeBSD.org>2012-12-20 19:38:12 +0000
committerBrendan Fabeny <bf@FreeBSD.org>2012-12-20 19:38:12 +0000
commit0e190ec057bff3f89919b90c5425f0677bdd29c8 (patch)
tree77d58902845d56ccda4fd509b24a9ece6c0f9cd9 /math
parent6fac8f8a3c8cf401b9ddc1f05eb7fe644a9ffaf4 (diff)
downloadports-0e190ec057bff3f89919b90c5425f0677bdd29c8.tar.gz
ports-0e190ec057bff3f89919b90c5425f0677bdd29c8.zip
Notes
Diffstat (limited to 'math')
-rw-r--r--math/Makefile1
-rw-r--r--math/libmissing/Makefile85
-rw-r--r--math/libmissing/distinfo2
-rw-r--r--math/libmissing/pkg-descr7
4 files changed, 95 insertions, 0 deletions
diff --git a/math/Makefile b/math/Makefile
index ab6ae82d7e04..c8447a5c98cb 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -215,6 +215,7 @@
SUBDIR += libjbigi
SUBDIR += liblbfgs
SUBDIR += libmath++
+ SUBDIR += libmissing
SUBDIR += libneural
SUBDIR += libocas
SUBDIR += liborigin
diff --git a/math/libmissing/Makefile b/math/libmissing/Makefile
new file mode 100644
index 000000000000..1494c57d53be
--- /dev/null
+++ b/math/libmissing/Makefile
@@ -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>
diff --git a/math/libmissing/distinfo b/math/libmissing/distinfo
new file mode 100644
index 000000000000..f1a76802e0d0
--- /dev/null
+++ b/math/libmissing/distinfo
@@ -0,0 +1,2 @@
+SHA256 (libmissing-20121220.tar.xz) = 226325e8cb7f28873c06da081978762079c07a90d53524aabb574d8731a6fb47
+SIZE (libmissing-20121220.tar.xz) = 129684
diff --git a/math/libmissing/pkg-descr b/math/libmissing/pkg-descr
new file mode 100644
index 000000000000..b4f3fd16579e
--- /dev/null
+++ b/math/libmissing/pkg-descr
@@ -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.