Commit Graph

306 Commits

Author SHA1 Message Date
Ed Schouten ec5833a498 Add a copy of FreeBSD's lib/libc/aarch64/_fpmath.h.
This makes it possible to build OpenLibm on ARM64 CPUs.
2015-10-26 10:26:19 +01:00
Ed Schouten bc8dd927a3 Use isfinite() instead of non-standard finite() function.
The finite() function got standardized under the name isfinite(). Its
use is therefore discouraged.
2015-10-26 10:23:11 +01:00
Keno Fischer 13d11626ba Merge pull request #98 from ginggs/fix-missing-buildflags
Fix missing buildflags
2015-10-26 03:34:52 -04:00
Graham Inggs 395d998567 Fix missing buildflags
Debian's blhc (build log hardening check) reports dpkg-buildflags-missing CPPFLAGS 48 (of 223), CFLAGS 2 (of 177), LDFLAGS 2 (of 3) missing
2015-10-26 07:15:39 +02:00
Viral B. Shah 0036d70734 Merge pull request #97 from ziotom78/patch-1
Update Make.inc to detect OpenBSD
2015-08-13 22:19:35 +05:30
Maurizio Tomasi 3f0a53d69b New instructions about how to build on OpenBSD 2015-08-13 14:28:19 +02:00
Maurizio Tomasi 2870ed32b3 Update Make.inc to detect OpenBSD
With this patch I have been able to successfully compile Openlibm on OpenBSD 5.7 (x86_64) using the following command:

gmake GCC=egcc GXX=eg++ USEGCC=1 ARCH=x86_64

(I had to install gcc 4.9 from ports, as Openlibm does not compile with the default compiler shipped with OpenBSD 5.7, which is gcc 4.2.1).
2015-08-13 12:14:57 +02:00
Viral B. Shah ef29d06db1 Merge pull request #90 from scialex/cross-compile
Add support for cross compiling with `make ARCH=name`
2015-03-02 09:00:26 +05:30
Alexander Light f70240ded5 Add support for cross compiling with ARCH=name
This is rather basic. A clean is needed to get rid of artifacts from
previous runs with other architectures.

Note this requires PR #88 to work because without it x86 is broken.

Closes #89
2015-03-01 15:09:22 -05:00
Viral B. Shah efcb36079a Merge pull request #88 from scialex/fix-i386
Fix build for x86 32 bit targets
2015-03-01 18:11:41 +05:30
Alexander Light f30b0d3045 Fix build for i386
This would not build on i386 due to a missing include.
2015-02-26 16:01:30 -05:00
Viral B. Shah c53d2ddbe2 Merge pull request #87 from JuliaLang/nalimilan/fpstack
Remove floating point stack checks in tests
2015-02-22 21:08:41 +05:30
Milan Bouchet-Valat eaee935f48 Remove floating point stack checks in tests
There is no guarantee that the FP stack is preserved, and apparently
this no longer works with modern compilers. #55.
2015-02-22 12:22:57 +01:00
Viral B. Shah 8247b5af78 Revert "Update to the latest s_scalbln.c from msun."
This reverts commit a2f4e102f2.
2015-02-21 07:50:35 +05:30
Viral B. Shah a2f4e102f2 Update to the latest s_scalbln.c from msun. 2015-02-20 23:56:48 +05:30
Viral B. Shah 763da44606 Bump SO major number as we have introduced API breakage.
Use version number as 0.5-dev, instead of 0.5.
2015-02-12 20:00:17 +05:30
Viral B. Shah 8d0843a324 Merge pull request #85 from NuxiNL/remove-extensions
Remove non-standard functions from OpenLibm
2015-02-12 19:38:00 +05:30
Ed Schouten d64ea4e5f9 Make small changes to libm-test.c to improve portability.
- Don't define llabs(). This breaks if llabs() is already a macro, which
  is allowed by the C standard/POSIX. llabs() was introduced in C99, so
  I think we can safely assume it is present on all interesting systems.

- Cast the parameters to fabs() to the floating point type. Clang has
  introduced some interesting warnings that trigger if the arguments to
  fabs*() are not the right type.
2015-02-12 14:15:15 +01:00
Ed Schouten b6ff8bbe91 Clean up a change that I sneaked in accidentically.
I often build the code with -Wmissing-prototypes to ensure that we don't
accidentically pollute the symbol namespace. If we want to provide a
symbol such as isopenlibm(), make sure we also declare it in
<openlibm_math.h>.
2015-02-12 13:58:35 +01:00
Ed Schouten 16902a6ce1 Reconnect cbrtl() to the build. It seems to build properly. 2015-02-12 13:49:47 +01:00
Ed Schouten 8c8693cf79 Remove [jy][01n]f(). X/Open only standardizes the double versions. 2015-02-12 13:48:13 +01:00
Ed Schouten ce4982acf8 Remove scalb(). The scalbn() or scalbln() function should be used. 2015-02-12 13:38:13 +01:00
Ed Schouten c08bd962f2 Remove the non-standard finite() function. 2015-02-12 13:35:19 +01:00
Ed Schouten ae1e0c309a Remove the non-standard drem() function. 2015-02-12 13:29:38 +01:00
Ed Schouten eca4ac8bf1 Remove the non-standard significand() function. 2015-02-12 13:28:37 +01:00
Ed Schouten 532fe1553e Remove the non-standard gamma() function. Use lgamma() instead. 2015-02-12 13:25:30 +01:00
Viral B. Shah 388f0f1d32 Remove unused Symbol.map files. 2015-02-01 19:41:55 +05:30
Viral B. Shah cb6c82190b More README updates.
[ci skip]
2015-02-01 19:08:45 +05:30
Viral B. Shah 9fe53caefe README updates. 2015-02-01 19:06:16 +05:30
Viral B. Shah 5473e8b27d Disable OS X tests for now. 2015-02-01 10:24:55 +05:30
Viral B. Shah ce8af02232 Merge pull request #82 from talex5/minios2
No stdio.h on Mini-OS, so use cdefs.h again there
2015-01-13 00:52:42 +05:30
Viral B. Shah 44a4964e06 Merge pull request #81 from NuxiNL/openlibm-math
Rename openlibm.h to openlibm_math.h.
2015-01-13 00:52:09 +05:30
Thomas Leonard b19856215c No stdio.h on Mini-OS, so use cdefs.h again there. 2015-01-12 10:45:03 +00:00
Ed Schouten 34d44ffadd Set USECLANG=1 by default on FreeBSD.
FreeBSD 10+ no longer ships with GCC by default. Clang is the default
system compiler.
2015-01-11 23:50:17 +01:00
Ed Schouten 7e5585aaca Rename openlibm.h to openlibm_math.h.
This is a bit more consistent with the naming of the other header files
(openlibm_complex.h and openlibm_fenv.h). Re-add an openlibm.h header
that includes all of the public headers as a shorthand.

Fix up all of the source files to include <openlibm_math.h> instead of
<openlibm.h>. While there, fix ordering of the includes.
2015-01-11 23:37:01 +01:00
Ed Schouten c2154fd3f3 Add missing void keyword to keep -Wold-style-definition happy. 2015-01-11 23:01:49 +01:00
Viral B. Shah ee2976996d Merge pull request #80 from NuxiNL/header-dirs
Move public headers into include/ and private headers into src/.
2015-01-12 00:00:21 +05:30
Ed Schouten 93aef7f9b1 Remove $ARCH/openlibm_fenv.h.
It seems I accidentally copied these headers twice in
d07820351b. We should only have them in
include/.
2015-01-11 18:55:04 +01:00
Ed Schouten bc3f903bc2 Move public headers into include/ and private headers into src/.
While there, also modify the install target. We should make sure to
install all openlibm*.h headers. There is still some work to be done:
openlibm_fenv_*.h still depends on some additional bits. I'd propose
that we eventually create an include/openlibm_cdefs.h that contains all
of the macros we need.
2015-01-11 16:35:32 +01:00
Viral B. Shah c485db579d Some fixes to be able to build the system versions of the tests. 2015-01-11 17:43:41 +05:30
Viral B. Shah f418d26601 Merge pull request #78 from NuxiNL/cleanups
Cleanups
2015-01-11 00:46:04 +05:30
Ed Schouten 23b8f663d4 Revert "Don't use __weak_reference() when a __strong_reference() is needed."
Unlike the __weak_reference() macro, __strong_reference() does type
checking. It can only create the reference if the type of the source and
the destination function match exactly.

Even if double == long double in practice, they remain unequal at the
language level.
2015-01-10 19:24:06 +01:00
Ed Schouten d07820351b Rename the fenv headers.
I guess the idea would be to eventually also install all of the
openlibm*.h headers, instead of just openlibm.h. Make openlibm_fenv.h
suitable for this purpose by moving all of the $ARCH/fenv.h headers next
to it.

We actually need this change to make OPENLIBM_USE_HOST_FENV_H work.
Right now it's still broken, because the "#include <fenv.h>" performed
by openlibm_fenv.h still pulls in $ARCH/fenv.h as $ARCH/ is added to the
compiler include path.
2015-01-10 10:21:57 +01:00
Ed Schouten 9ab9db387d Don't use __weak_reference() when a __strong_reference() is needed.
OpenLibm uses the __weak_reference() macro for platforms where double
and long double use the same layout. That way functions only need to be
provided by the library once. The point is, in this specific case we
want to use strong references; not weak references.

Strong references can be used to give a symbol a second name. If you
look at the resulting object file, you will have two symbols with the
same offset and size. Weak references are different, in the sense that
they are marked in such a way that they act as fallbacks. They are only
used if an explicitly matching symbol is missing.
2015-01-10 10:04:11 +01:00
Ed Schouten c253db68ca Add a new compilation flag: OPENLIBM_ONLY_THREAD_SAFE.
The global signgam variable is only part of the X/Open System
Interfaces. It is not part of the POSIX base definitions nor the C
standard.

I'd rather have it disabled for my specific use-case, so introduce a new
compilation flag that we can use to disable it.
2015-01-10 09:57:33 +01:00
Ed Schouten 9fdc4f9d9e Fix a small number of -Wmissing-prototypes compiler warnings in sincos().
- Add missing prototypes to openlibm.h for sincos() and sincosf().
- Mark the internal kernel functions static.
2015-01-10 09:44:31 +01:00
Ed Schouten 42177873f8 Remove weak reference construct from fenv code.
I grepped through the FreeBSD source tree and for me, it seems to be
totally unclear why these two specific functions are weak references.
Such a construct is commonly used by FreeBSD's threading library
(libthr) to override certain functions, but I can't find any traces of
that.

Just use the function name directly. This fixes a compiler warning as
well (-Wmissing-prototypes).
2015-01-10 09:41:32 +01:00
Viral B. Shah 89ac4d4c8c Merge pull request #77 from NuxiNL/system-fenv
Make openlibm less dependent on the host, but still add knobs to build against it
2015-01-10 09:37:35 +05:30
Ed Schouten a2afb267cf Remove switch from tests to include system headers.
We can now simply use -DOPENLIBM_USE_HOST_*_H to do this.
2015-01-09 14:29:56 +01:00
Ed Schouten 06dbb6e72b Use more uniform style of including headers.
Put external headers before internal ones. While there, replace a lot of
occurences of "openlibm.h" with <openlibm.h>. It should be thought of as
an external header, as it is installed along with the library.
2015-01-09 14:24:24 +01:00