|
7 months ago | |
---|---|---|
.github | 3 years ago | |
aarch64 | 2 years ago | |
amd64 | 2 years ago | |
arm | 8 years ago | |
bsdsrc | 2 years ago | |
docs | 3 years ago | |
i387 | 7 years ago | |
include | 7 months ago | |
ld80 | 7 years ago | |
ld128 | 6 years ago | |
mips | 5 years ago | |
powerpc | 2 years ago | |
s390 | 4 years ago | |
sh3eb | 2 years ago | |
src | 2 years ago | |
test | 2 years ago | |
wasm32 | 4 years ago | |
.gitignore | 2 years ago | |
.mailmap | 11 years ago | |
.travis.yml | 5 years ago | |
LICENSE.md | 5 years ago | |
Make.inc | 2 years ago | |
Makefile | 7 months ago | |
README-OpenLibm.md | 2 years ago | |
README.md | 7 months ago | |
appveyor.yml | 5 years ago | |
giteapc.make | 7 months ago | |
openlibm.pc.in | 5 years ago |
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 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 symlinklibm.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.