Lephenixnoir
d241d4f77a
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. |
||
---|---|---|
.github | ||
aarch64 | ||
amd64 | ||
arm | ||
bsdsrc | ||
docs | ||
i387 | ||
include | ||
ld80 | ||
ld128 | ||
mips | ||
powerpc | ||
s390 | ||
sh3eb | ||
src | ||
test | ||
wasm32 | ||
.gitignore | ||
.mailmap | ||
.travis.yml | ||
LICENSE.md | ||
Make.inc | ||
Makefile | ||
README-OpenLibm.md | ||
README.md | ||
appveyor.yml | ||
giteapc.make | ||
openlibm.pc.in |
README.md
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.