Update configure script

* add early "-h" and "--help" handling
* replace "--support-<ABI_NAME>" flags by "--support=<target>,<target>,..."
* rename libraries name:
	* "libfxlibc-casio-abi-fx9860g" -> "libfxlibc-fx9860g"
	* "libfxlibc-casio-abi-fxcg5" -> "libfxlibc-fxcg50"

Update the README.md
This commit is contained in:
Yatis 2020-10-24 21:48:45 +02:00
parent e9984365eb
commit 47e79813d9
3 changed files with 58 additions and 35 deletions

View file

@ -14,7 +14,7 @@ system.
## Dependencies
Fx C library depends on a suitable GCC toolchain in the PATH. You can absolutely
not build gint with your system compiler!
not build `fxlibc` with your system compiler!
* The tutorial on Planète Casio builds an sh-elf that works everywhere.
* For fx-9860G II, `sh3eb-elf` is strongly advised.
@ -35,14 +35,14 @@ the wiki)
#### Configuration and support
The Fx C library supports these ABI:
* `casio-abi-fx9860g` for the support of Casio ABI used by fx9860g-like devices.
* `casio-abi-fxcg50` for the support of Casio ABI used by the fxcg50 device.
* `vhex-kernel` for the support of Vhex kernel ABI.
* `fx9860g` for the support of Casio ABI used by fx9860g-like devices.
* `fxcg50` for the support of Casio ABI used by the fxcg50 device.
* `vhex` for the support of Vhex kernel ABI.
* (nothing) compile only standing functions.
The Fx C library support these format:
* `static` generate static libraries.
* `shared` generate shared libraries (Only for the Vhex kernel).
* `dynamic` generate dynamic libraries (Only for the Vhex kernel).
Note that the shared feature is not currently implemented because of
non-support of the shared library generation by the GCC compiler for SuperH
@ -50,13 +50,13 @@ architecture. A workaround can be used but it requires a static library to do
the dynamic symbols resolving (Thanks Kristaba).
For more information about library build configuration, you can use the
`../configure --help` command.
`./configure --help` command.
#### Building
Create a build directory and configure in it:
```
% mkdir build && cd build
% ../configure
% ../configure --static --support=vhex,fx9860g,fxcg50
```
Then build the source and install the library files to the selected directory.
@ -95,10 +95,10 @@ To use Fx C library as your runtime environment, the bare minimum is:
* You must add `fxlibc/` instead of each include file (for example, if you want
to include `stdio.h` you mush use `#include <fxlibc/stdio.h>`.
* Link with:
* `-lfxlibc` for standalone feature
* `-lfxlibc-casio-abi-fx9860g` for Casio ABI support for monochrome devices
* `-lfxlibc-casio-abi-fxcg50` for Casio ABI support for primz devices
* `-lfxlibc-fx9860g` for Casio ABI support for monochrome devices
* `-lfxlibc-fxcg50` for Casio ABI support for primz devices
* `-lfxlibc-vhex` for Vhex kernel support.
* `-lfxlibc` for standalone features
---
@ -106,3 +106,9 @@ To use Fx C library as your runtime environment, the bare minimum is:
This work is licensed under a CC0 1.0 Universal License. To view a copy of this
license, visit: https://creativecommons.org/publicdomain/zero/1.0/legalcode.txt
Or see the LICENSE file.
---
### Special thanks to
* Lephenixnoir - For all <3
* Kristaba - For the idea with the shared libraries workaround !

61
configure vendored
View file

@ -1,9 +1,5 @@
#! /bin/bash
#
# -= TODO =-
# * check if the wanted lib exist (check lib verion too)!
# * option to list all installed libraries with their versions
# * each ABI options define one specific libs (fxlibc-common, fxlibc-vhex, fxlibc-fx9860g, fxlibc-fxcg50)
# Fx C standard library configuration script
# output file
confile='fxlibc.cfg'
@ -18,7 +14,6 @@ makefile='Makefile.default'
# configuration
debug=false
valgrind=false
# ABI support
support_vhex_kernel=false
@ -52,20 +47,24 @@ Build options:
--prefix=PREFIX Install prefix (PREFIX/lib and PREFIX/include are used)
ABI support:
--support-vhex
--support=<target>,<target>, ...
Support all <target> ABI if supported by the library.
target-list:
* vhex
Enable the Vhex kernel support
--support-casio-fx9860,
--support-casio-fxcg50
Enable the support of the Casio' ABI (used by malloc, free, ...)
* fx9860g, fxcg50
Enable the support of the Casio' ABI
fx9860 covers all fx-9860G II-like monochromes models that support add-ins
or can be flashed with an OS that does. This includes SH3 and SH4 machines.
fx9860 covers all fx-9860G II-like monochromes models that support
addins or can be flashed with an OS that does. This includes SH3 and
SH4 machines.
fxcg50 covers just the fx-CG 50; there is some unofficial compatibility with
fx-CG 10/20. All of these are SH4-only.
fxcg50 covers just the fx-CG 50; there is some unofficial compatibility
with fx-CG 10/20. All of these are SH4-only.
The 'ABI support' is used to allow some part of the code, in particular the 'unistd'
part, I/O management and additionals feature. (like process, fs, ...).
The 'ABI support' is used to allow some part of the code, in particular the
'unistd' part, I/O management and additionals feature. (like process, fs, ...).
Format:
--static Generate static libraries (default)
@ -89,6 +88,13 @@ EOF
exit 0
}
#---
# Check early help options
#---
if [[ $# -lt 1 ]] || [[ "$1" = "-h" ]] || [[ "$1" = "--help" ]]; then
help
fi
#---
# Check mandatory build location
@ -125,12 +131,23 @@ for arg; do case "$arg" in
cflags=${arg#*=};;
# ABI support
--support-vhex)
support_vhex_kernel=true;;
--support-casio-abi-fx9860)
support_casio_abi_fx9860=true;;
--support-casio-abi-fxcg50)
--support=*)
IFS=',' read -ra target_abi <<< "${arg#*=}"
for abi in "${target_abi[@]}"; do case "$abi" in
all)
support_vhex_kernel=true
support_casio_abi_fx9860=true
support_casio_abi_fxcg50=true;;
vhex)
support_vhex_kernel=true;;
fx9860g)
support_casio_abi_fx9860=true;;
fxcg50)
support_casio_abi_fxcg50=true;;
*)
echo "error: unreconized target '$abi', giving up." >&2
exit 1
esac; done;;
# format options
--static)
@ -168,11 +185,11 @@ then
prefix=$inst
fi
# TODO
# TODO: check if the wanted lib exist (check lib verion too)!
# TODO
#---
# Dump appropriate Makefile
# @note:

View file

@ -35,7 +35,7 @@
#---
MAJOR := 0
MINOR := 3
PATCH := 0
PATCH := 1
EXTRAVERSION :=