diff options
Diffstat (limited to 'INSTALL')
-rw-r--r-- | INSTALL | 48 |
1 files changed, 20 insertions, 28 deletions
diff --git a/INSTALL b/INSTALL index 5713cd49..9f33910b 100644 --- a/INSTALL +++ b/INSTALL @@ -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) |