Fork of the OpenLibm math library with fx-9860G and fx-CG 50 support.
Find a file
Lephenixnoir d241d4f77a
fix aliases not using underscore prefixes in assembler code
long double functions, that are identical to double functions, usually
define themselves as weak references to their double counterpart.
However, the piece of assembler written for that produces

  .equ <name>l, <name>

but on SuperH C-exported symbols have leading underscores. This commit
adds an SH3 exception to use instead

  .equ _<name>l, _<name>

which fixes a number of long double functions.
2021-05-20 21:27:38 +02:00
.github Update FUNDING.yml 2020-02-06 05:11:46 -05:00
aarch64 Cleanup ARCH handling, reorganize AArch64 and Make.inc. 2017-01-16 11:44:14 -08:00
amd64 Export fenv functions on all platforms (#213) 2020-09-02 12:33:04 -04:00
arm Remove unused Symbol.map files. 2015-02-01 19:41:55 +05:30
bsdsrc WIP: Enable build on aarch64 2016-04-08 19:37:13 +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 sh3eb: add suport for the sh3eb softfp platform 2020-10-24 13:55:39 +02: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 Support powerpc 2016-02-23 11:08:14 +00:00
s390 s390(x) port 2018-11-07 12:11:15 +01:00
sh3eb sh3eb: add suport for the sh3eb softfp platform 2020-10-24 13:55:39 +02:00
src fix aliases not using underscore prefixes in assembler code 2021-05-20 21:27:38 +02:00
test update ULPs for s390 (#187) 2018-11-12 12:04:56 -08: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 add support for quick build with GiteaPC 2021-01-25 17:57:54 +01:00
LICENSE.md Update references to JuliaLang to point to JuliaMath (#182) 2018-06-18 14:48:23 -07:00
Make.inc sh3eb: add suport for the sh3eb softfp platform 2020-10-24 13:55:39 +02:00
Makefile sh3eb: add suport for the sh3eb softfp platform 2020-10-24 13:55:39 +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 add CMake instructions in the README 2021-05-02 15:07:48 +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 fx-9860G and fx-CG 50.

Installing with GiteaPC

This library can be installed automatically 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.

First locate the compiler's install directory. This is normally the lib/gcc/sh3eb-elf/<version>/ folder inside the install path of the compiler.

% PREFIX=$(sh-elf-gcc --print-search-dirs | grep install | sed 's/install: //')

You can then build and install the static libopenlibm.a archive and the headers.

% make USEGCC=1 TOOLPREFIX=sh-elf- libdir="$PREFIX" includedir="$PREFIX/include" install-static install-headers

Using in a Makefile-based add-in

Link with -lopenlibm as you would do with -lm. Since OpenLibm headers reference themselves by file name (#include <openlibm_complex.h>) even though they are installed in a subfolder, you need a -I flag:

CFLAGS += -I $(shell sh-elf-gcc -print-file-name=include/openlibm)
LDFLAGS += -lopenlibm

Using in a CMake-based add-in

When using CMake with the fxSDK, add the include folder and library like this.

target_include_directories(<TARGET> PRIVATE "${FXSDK_COMPILER_INSTALL}/include/openlibm")
target_link_libraries(<TARGET> -lopenlibm)

README and Licensing

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