mirror of
https://git.planet-casio.com/Lephenixnoir/OpenLibm.git
synced 2024-12-28 04:23:41 +01:00
meta: update build instructions
This commit is contained in:
parent
65aaba96e1
commit
9828d2e3f2
1 changed files with 32 additions and 29 deletions
61
README.md
61
README.md
|
@ -1,57 +1,60 @@
|
||||||
# Soft-FP sh3eb port of OpenLibm
|
# Soft-FP sh3eb port of OpenLibm
|
||||||
|
|
||||||
This is a fork of [OpenLibm](https://github.com/JuliaMath/openlibm) with
|
This is a fork of [OpenLibm](https://github.com/JuliaMath/openlibm) with support for the sh3eb architecture, intended for add-in programming on SuperH CASIO calculators.
|
||||||
support for the sh3eb architecture, intended for add-in programming on fx-9860G
|
|
||||||
and fx-CG 50.
|
|
||||||
|
|
||||||
## Installing with GiteaPC
|
## Installing with GiteaPC
|
||||||
|
|
||||||
This library can be installed automatically with [GiteaPC](https://gitea.planet-casio.com/Lephenixnoir/GiteaPC).
|
This library can be installed automatically as part of the fxSDK with [GiteaPC](https://gitea.planet-casio.com/Lephenixnoir/GiteaPC):
|
||||||
|
|
||||||
```
|
```bash
|
||||||
% giteapc install Lephenixnoir/OpenLibm
|
% giteapc install Lephenixnoir/OpenLibm
|
||||||
```
|
```
|
||||||
|
|
||||||
## Building manually
|
## Building manually
|
||||||
|
|
||||||
You will need a GCC toolchain built with `--target=sh3eb-elf`, such as the
|
You will need a GCC toolchain built with `--target=sh3eb-elf`, such as the [`sh-elf-gcc`](https://gitea.planet-casio.com/Lephenixnoir/sh-elf-gcc) commonly used on Planète Casio.
|
||||||
`sh-elf-gcc` commonly used on Planète Casio.
|
|
||||||
|
|
||||||
First locate the compiler's install directory. This is normally the
|
You can install directly in the internal folder of your compiler, or somewhere else if you have a more detailed setup.
|
||||||
`lib/gcc/sh3eb-elf/<version>/` folder inside the install path of the compiler.
|
|
||||||
|
|
||||||
```
|
```bash
|
||||||
% PREFIX=$(sh-elf-gcc --print-search-dirs | grep install | sed 's/install: //')
|
# 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 `libopenlibm.a` archive and the headers.
|
You can then build and install the static library and the headers.
|
||||||
|
|
||||||
```
|
```bash
|
||||||
% make USEGCC=1 TOOLPREFIX=sh-elf- AR=sh-elf-ar CC=sh-elf-gcc libdir="$PREFIX" includedir="$PREFIX/include" install-static install-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
|
||||||
```
|
```
|
||||||
|
|
||||||
## Using in a Makefile-based add-in
|
The `-superh` targets differ from the the normal targets in the following ways:
|
||||||
|
|
||||||
Link with `-lopenlibm` as you would do with `-lm`. Since OpenLibm headers
|
* `install-static-superh` also creates a symlink `libm.a -> libopenlibm.a`.
|
||||||
reference themselves by file name (`#include <openlibm_complex.h>`) even though
|
* `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.
|
||||||
they are installed in a subfolder, you need a `-I` flag:
|
|
||||||
|
## 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](https://gitea.planet-casio.com/Vhex-Kernel-Core/fxlibc/), include directly the standard headers `<complex.h>`, `<fenv.h>` and `<math.h>`.
|
||||||
|
|
||||||
|
Link with `-lm`. In a Makefile, update your `LDFLAGS`:
|
||||||
|
|
||||||
```
|
```
|
||||||
CFLAGS += -I $(shell sh-elf-gcc -print-file-name=include/openlibm)
|
LDFLAGS += -lm
|
||||||
LDFLAGS += -lopenlibm
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Using in a CMake-based add-in
|
In CMake, use [`target_link_libraries()`](https://cmake.org/cmake/help/latest/command/target_link_libraries.html):
|
||||||
|
|
||||||
When using CMake with the fxSDK, add the include folder and library like this.
|
```cmake
|
||||||
|
target_link_libraries(<TARGET> PUBLIC -lm)
|
||||||
```
|
|
||||||
target_include_directories(<TARGET> PRIVATE "${FXSDK_COMPILER_INSTALL}/include/openlibm")
|
|
||||||
target_link_libraries(<TARGET> -lopenlibm)
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## README and Licensing
|
## README and Licensing
|
||||||
|
|
||||||
See the original README file in [README-OpenLibm.md](README-OpenLibm.md).
|
See the original README file in [README-OpenLibm.md](README-OpenLibm.md). OpenLibm contains code covered by various licenses, see [LICENSE.md](LICENSE.md).
|
||||||
OpenLibm contains code covered by various licenses, see
|
|
||||||
[LICENSE.md](LICENSE.md).
|
|
||||||
|
|
Loading…
Reference in a new issue