Fork of the OpenLibm math library with fx-9860G and fx-CG 50 support.
Find a file
2023-12-06 20:36:40 +01:00
.github Update FUNDING.yml 2020-02-06 05:11:46 -05:00
aarch64 Make fenv methods static on additional platforms. 2021-02-01 13:48:31 +01:00
amd64 Revert "Export fenv functions on all platforms (#213)" 2020-11-16 09:17:49 +01:00
arm Remove unused Symbol.map files. 2015-02-01 19:41:55 +05:30
bsdsrc add missing weak references for long double functions 2021-05-20 23:30:25 +02:00
docs Update list of libm libraries 2020-08-29 11:25:56 -04:00
i387 Fix invalid assembly directive caught by clang 2016-08-21 18:45:29 -04:00
include fenv: also recognize __sh__ as compiler macro in the port 2023-12-06 20:36:40 +01:00
ld80 Fix undefined reference to __fpgetprec on i386 2016-06-23 23:32:31 -04:00
ld128 Fix compilation on AArch64 2017-10-21 09:58:16 -04:00
mips Using cdefs-compat.h and stdint.h instead <sys/types.h> 2018-06-04 09:38:27 +00:00
powerpc Make fenv methods static on additional platforms. 2021-02-01 13:48:31 +01:00
s390 s390(x) port 2018-11-07 12:11:15 +01:00
sh3eb fenv: provide environment primitives 2021-05-21 14:21:51 +02:00
src fenv: also recognize __sh__ as compiler macro in the port 2023-12-06 20:36:40 +01:00
test Fix #211 2021-02-06 18:10:09 -05:00
wasm32 wasm32 support (#192) 2019-04-14 15:11:03 -07:00
.gitignore add support for quick build with GiteaPC 2021-01-25 17:57:54 +01:00
.mailmap Add mailmap 2012-08-24 20:53:18 +05:30
.travis.yml travis: Add mips, mipsel, mips64el build. 2018-06-04 10:02:35 +00:00
appveyor.yml Update appveyor.yml 2018-06-18 16:10:52 -04:00
giteapc.make install: trim the set of installed headers (and libm.a) 2022-08-19 16:02:05 +02:00
LICENSE.md Update references to JuliaLang to point to JuliaMath (#182) 2018-06-18 14:48:23 -07:00
Make.inc make: do not compile the static archive with -fPIC 2021-05-21 14:22:02 +02:00
Makefile install: trim the set of installed headers (and libm.a) 2022-08-19 16:02:05 +02:00
openlibm.pc.in Update references to JuliaLang to point to JuliaMath (#182) 2018-06-18 14:48:23 -07:00
README-OpenLibm.md sh3eb: move older README 2020-10-24 14:02:38 +02:00
README.md meta: update build instructions 2022-08-21 11:55:28 +02:00

Soft-FP sh3eb port of OpenLibm

This is a fork of OpenLibm with support for the sh3eb architecture, intended for add-in programming on SuperH CASIO calculators.

Installing with GiteaPC

This library can be installed automatically as part of the fxSDK with GiteaPC:

% giteapc install Lephenixnoir/OpenLibm

Building manually

You will need a GCC toolchain built with --target=sh3eb-elf, such as the sh-elf-gcc commonly used on Planète Casio.

You can install directly in the internal folder of your compiler, or somewhere else if you have a more detailed setup.

# Example 1: Use the compiler's internal folder
% COMPILER_DIR="$(sh-elf-gcc --print-file-name=.)"
% LIBDIR="$COMPILER_DIR"
% INCDIR="$COMPILER_DIR/include"
# Example 2: Using the fxSDK's custom setup
% LIBDIR="$(fxsdk path lib)"
% INCDIR="$(fxsdk path include)"

You can then build and install the static library and the headers.

% make USEGCC=1 TOOLPREFIX=sh-elf- AR=sh-elf-ar CC=sh-elf-gcc \
    libdir="$LIBDIR" includedir="$INCDIR" \
    install-static-superh install-headers-superh

The -superh targets differ from the the normal targets in the following ways:

  • install-static-superh also creates a symlink libm.a -> libopenlibm.a.
  • install-headers-superh installs directly in $LIBDIR instead of $LIBDIR/openlibm since OpenLibm headers reference each other without that prefix and enforcing the correct -I in every project is quite painful. In addition, it skips internal and non-SuperH headers.

Using the library

Include the headers <openlibm_complex.h>, <openlibm_fenv.h> and <openlibm_math.h>. Or, if you are using a suitable libc like fxlibc, include directly the standard headers <complex.h>, <fenv.h> and <math.h>.

Link with -lm. In a Makefile, update your LDFLAGS:

LDFLAGS += -lm

In CMake, use target_link_libraries():

target_link_libraries(<TARGET> PUBLIC -lm)

README and Licensing

See the original README file in README-OpenLibm.md. OpenLibm contains code covered by various licenses, see LICENSE.md.