update INSTALL file with new archs, compiler info

add aarch64 and or1k archs, upgrade sh from experimental, and note
that sh now supports the FDPIC ABI.

the old advice on compiler versions was outdated and more specific
than made sense. presence of compiler bugs varies a lot by arch, so
it's hard to make any good recommendations beyond "recent". if we want
to document specific known-good/bad compiler versions, a much larger
section in the documentation than what's appropriate for the INSTALL
file would be needed.
This commit is contained in:
Rich Felker 2016-02-02 17:35:06 -05:00
parent d150764697
commit 40891ae6db
1 changed files with 20 additions and 28 deletions

48
INSTALL
View File

@ -18,28 +18,18 @@ Build Prerequisites
The only build-time prerequisites for musl are GNU Make and a
freestanding C99 compiler toolchain targeting the desired instruction
set architecture and ABI, with support for gcc-style inline assembly,
weak aliases, and stand-alone assembly source files.
set architecture and ABI, with support for a minimal subset of "GNU C"
extensions consisting mainly of gcc-style inline assembly, weak
aliases, hidden visibility, and stand-alone assembly source files.
GCC, LLVM/clang, Firm/cparser, and PCC have all successfully built
musl, but GCC is the most widely used/tested. Recent compiler (and
binutils) versions should be used if possible since some older
versions have bugs which affect musl.
The system used to build musl does not need to be Linux-based, nor do
the Linux kernel headers need to be available.
If support for dynamic linking is desired, some further requirements
are placed on the compiler and linker. In particular, the linker must
support the -Bsymbolic-functions option.
At present, GCC 4.6 or later is the recommended compiler for building
musl. Any earlier version of GCC with full C99 support should also
work, but may be subject to minor floating point conformance issues on
i386 targets. Sufficiently recent versions of PCC and LLVM/clang are
also believed to work, but have not been tested as heavily; prior to
Fall 2012, both had known bugs that affected musl. Firm/cparser is
also believed to work but lacks support for producing shared
libraries. GCC 4.9.0 and 4.9.1 are known to have a serious bug
(#61144) which affects musl. Beginning with version 1.1.4 musl
attempts to work around the bug, but these compiler versions are still
considered unstable and unsupported.
Supported Targets
@ -53,12 +43,17 @@ and ABI combinations:
the `cmpxchg` instruction is added
* x86_64
* ILP32 ABI (x32) is available as a separate arch but is still
experimental
* ARM
* EABI, standard or hard-float VFP variant
* Little-endian default; big-endian variants also supported
* Compiler toolchains only support armv4t and later
* AArch64
* Little-endian default; big-endian variants also supported
* MIPS
* ABI is o32
* Big-endian default; little-endian variants also supported
@ -74,21 +69,18 @@ and ABI combinations:
* For dynamic linking, compiler toolchain must be configured for
"secure PLT" variant
* SuperH (SH)
* Standard ELF ABI or FDPIC ABI (shared-text without MMU)
* Little-endian by default; big-engian variant also supported
* Full FPU ABI or soft-float ABI is supported, but the
single-precision-only FPU ABI is not
* Microblaze
* Big-endian default; little-endian variants also supported
* Soft-float
* Requires support for lwx/swx instructions
The following additional targets are available for build, but may not
work correctly and may not yet have ABI stability:
* SuperH (SH)
* Little-endian by default; big-engian variant also supported
* Full FPU ABI or soft-float ABI is supported, but the
single-precision-only FPU ABI is not supported (musl always
requires IEEE single and double to be supported)
* x32 (x86_64 ILP32 ABI)
* OpenRISC 1000 (or1k)