mirror of git://git.musl-libc.org/musl
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:
parent
d150764697
commit
40891ae6db
48
INSTALL
48
INSTALL
|
@ -18,28 +18,18 @@ Build Prerequisites
|
||||||
|
|
||||||
The only build-time prerequisites for musl are GNU Make and a
|
The only build-time prerequisites for musl are GNU Make and a
|
||||||
freestanding C99 compiler toolchain targeting the desired instruction
|
freestanding C99 compiler toolchain targeting the desired instruction
|
||||||
set architecture and ABI, with support for gcc-style inline assembly,
|
set architecture and ABI, with support for a minimal subset of "GNU C"
|
||||||
weak aliases, and stand-alone assembly source files.
|
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 system used to build musl does not need to be Linux-based, nor do
|
||||||
the Linux kernel headers need to be available.
|
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
|
Supported Targets
|
||||||
|
@ -53,12 +43,17 @@ and ABI combinations:
|
||||||
the `cmpxchg` instruction is added
|
the `cmpxchg` instruction is added
|
||||||
|
|
||||||
* x86_64
|
* x86_64
|
||||||
|
* ILP32 ABI (x32) is available as a separate arch but is still
|
||||||
|
experimental
|
||||||
|
|
||||||
* ARM
|
* ARM
|
||||||
* EABI, standard or hard-float VFP variant
|
* EABI, standard or hard-float VFP variant
|
||||||
* Little-endian default; big-endian variants also supported
|
* Little-endian default; big-endian variants also supported
|
||||||
* Compiler toolchains only support armv4t and later
|
* Compiler toolchains only support armv4t and later
|
||||||
|
|
||||||
|
* AArch64
|
||||||
|
* Little-endian default; big-endian variants also supported
|
||||||
|
|
||||||
* MIPS
|
* MIPS
|
||||||
* ABI is o32
|
* ABI is o32
|
||||||
* Big-endian default; little-endian variants also supported
|
* Big-endian default; little-endian variants also supported
|
||||||
|
@ -74,21 +69,18 @@ and ABI combinations:
|
||||||
* For dynamic linking, compiler toolchain must be configured for
|
* For dynamic linking, compiler toolchain must be configured for
|
||||||
"secure PLT" variant
|
"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
|
* Microblaze
|
||||||
* Big-endian default; little-endian variants also supported
|
* Big-endian default; little-endian variants also supported
|
||||||
* Soft-float
|
* Soft-float
|
||||||
* Requires support for lwx/swx instructions
|
* Requires support for lwx/swx instructions
|
||||||
|
|
||||||
The following additional targets are available for build, but may not
|
* OpenRISC 1000 (or1k)
|
||||||
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)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue