1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-01 01:17:02 +00:00

Fix all non-x86 builds of math/gsl with a more general approach than the

specifically powerpc patch file.

Drop patch-ieee-utils-fp-freebsd.c alltogether and change the order
of #ifdefs in the setup to pull in fp-gnuc99.c instead of fp-freebsd.cc

Verified on redports for x86 builds and am bumping port revision.

Suggested by:	nathanw
Phabric:	https://reviews.freebsd.org/D787
Reviewed by:	nathanw
Approved by:	bdrewery (mentor)
This commit is contained in:
Sean Bruno 2014-09-16 19:04:09 +00:00
parent 3b92db9566
commit 73ee5e70c5
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=368343
3 changed files with 21 additions and 67 deletions

View File

@ -3,7 +3,7 @@
PORTNAME= gsl
PORTVERSION= 1.16
PORTREVISION= 1
PORTREVISION= 2
CATEGORIES= math
MASTER_SITES= GNU

View File

@ -1,66 +0,0 @@
--- ieee-utils/fp-freebsd.c.orig 2014-02-03 11:46:44.000000000 -0600
+++ ieee-utils/fp-freebsd.c 2014-02-03 11:46:18.000000000 -0600
@@ -24,10 +24,28 @@
int
gsl_ieee_set_mode (int precision, int rounding, int exception_mask)
{
- fp_prec_t prec = 0 ;
fp_except_t mode = 0 ;
fp_rnd_t rnd = 0 ;
+#ifdef __powerpc__
+ switch (precision)
+ {
+ case GSL_IEEE_SINGLE_PRECISION:
+ GSL_ERROR ("powerpc only supports default precision rounding", GSL_EUNSUP)
+;
+ break ;
+ case GSL_IEEE_DOUBLE_PRECISION:
+ GSL_ERROR ("powerpc only supports default precision rounding", GSL_EUNSUP)
+;
+ break ;
+ case GSL_IEEE_EXTENDED_PRECISION:
+ GSL_ERROR ("powerpc only supports default precision rounding", GSL_EUNSUP)
+;
+ break ;
+ }
+#else
+ fp_prec_t prec = 0 ;
+
switch (precision)
{
case GSL_IEEE_SINGLE_PRECISION:
@@ -43,6 +61,7 @@
fpsetprec(prec);
break ;
}
+#endif
switch (rounding)
{
@@ -69,13 +88,23 @@
/* Turn on all the exceptions apart from 'inexact' */
- mode = FP_X_INV | FP_X_DNML | FP_X_DZ | FP_X_OFL | FP_X_UFL ;
+ mode = FP_X_INV | FP_X_DZ | FP_X_OFL | FP_X_UFL ;
if (exception_mask & GSL_IEEE_MASK_INVALID)
mode &= ~ FP_X_INV ;
if (exception_mask & GSL_IEEE_MASK_DENORMALIZED)
- mode &= ~ FP_X_DNML ;
+ {
+ /* do nothing */
+ }
+ else
+ {
+#ifdef __powerpc__
+ GSL_ERROR ("powerpc does not support the denormalized operand exception. " "Use 'mask-denormalized' to work around this.", GSL_EUNSUP) ;
+#else
+ mode |= FP_X_DNML;
+#endif
+ }
if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO)
mode &= ~ FP_X_DZ ;

View File

@ -0,0 +1,20 @@
--- ieee-utils/fp.c.orig 2014-09-16 17:19:39 UTC
+++ ieee-utils/fp.c
@@ -22,6 +22,8 @@
#include "fp-aix.c"
#elif HAVE_TRU64_IEEE_INTERFACE
#include "fp-tru64.c"
+#elif HAVE_DECL_FEENABLEEXCEPT || HAVE_DECL_FESETTRAPENABLE
+#include "fp-gnuc99.c"
#elif HAVE_FREEBSD_IEEE_INTERFACE
#include "fp-freebsd.c"
#elif HAVE_OS2EMX_IEEE_INTERFACE
@@ -43,8 +45,6 @@
# else
# include "fp-darwin86.c"
#endif
-#elif HAVE_DECL_FEENABLEEXCEPT || HAVE_DECL_FESETTRAPENABLE
-#include "fp-gnuc99.c"
#else
#include "fp-unknown.c"
#endif