From 40891ae6dbc1c6113c4a826656a28143648df159 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Tue, 2 Feb 2016 17:35:06 -0500 Subject: 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. --- INSTALL | 48 ++++++++++++++++++++---------------------------- 1 file changed, 20 insertions(+), 28 deletions(-) (limited to 'INSTALL') 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) -- cgit v1.2.1