musl-cross-make/README.md

47 lines
1.8 KiB
Markdown
Raw Normal View History

2015-08-25 21:58:17 +02:00
musl-cross-make
===============
This is a quick and simple makefile-based alternative for producing
musl-based cross compilers. The current focus is on SH2/J2 Core
targets and NOMMU (where PIE or FDPIC is mandatory) since these are
not adequately supported by other musl cross-compiler toolchain build
systems, but all musl-supported targets are intended to work.
2015-08-25 21:58:17 +02:00
In addition to the build system, musl-cross-make provides a number of
patches, including:
2015-08-25 21:58:17 +02:00
- Updated versions of the musl target patches going into upstream GCC
- Static-PIE support and optionally defaulting to PIE
2015-08-25 21:58:17 +02:00
- Fixes for SH-specific bugs and bitrot in GCC
- Support for J2 Core CPU target in GCC & binutils
- SH/FDPIC ABI support
Most of these patches are integrated in gcc trunk/binutils master.
They should also be usable with Gregor's original musl-cross or other
build systems, if desired.
Some functionality (SH/FDPIC, and support for J2 specific features) is
presently only available with gcc 5.2.0 and binutils 2.25.1.
2015-08-25 21:58:17 +02:00
Usage
-----
The build system make be configured by providing a config.mak file in
the top-level directory. The only mandatory variable is TARGET, which
should contain a gcc target tuple (such as sh2eb-linux-musl), but many
more options are available. The top-level config.mak.dist file shows
examples, and several full configurations are available in presets/*.
For recent gcc versions that need gmp/mpfr/mpc, suitable versions need
to be installed in the default library path, or the appropriate --with
configure options need to be added to GCC_CONFIG in config.mak so that
the gcc configure process can find them.
2015-08-25 21:58:17 +02:00
After setting up config.mak, simply run make. Parallel builds are
supported.
2015-08-25 21:58:17 +02:00
The resulting toolchain will be placed ./output by default, or the
OUTPUT directory specified in config.mak. It is sysrooted and can be
freely moved to a different location.