X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=INSTALL;h=c583691d750472fc7af337caed26506586febb75;hb=36b72cd6fdfed2cac6b6ff1ed58a96d8265785cf;hp=2994630a403d6f41f6828d65db85b1ec2db639ec;hpb=1cc69faa5c2f0a189c35cf980ff4fa526ce866f4;p=musl diff --git a/INSTALL b/INSTALL index 2994630a..c583691d 100644 --- a/INSTALL +++ b/INSTALL @@ -18,26 +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 is known to have a serious bug (#61144) which -affects musl and is not supported. - Supported Targets @@ -51,42 +43,64 @@ 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 + * ABI is o32, fp32/fpxx (except on r6 which is fp64) * Big-endian default; little-endian variants also supported * Default ABI variant uses FPU registers; alternate soft-float ABI that does not use FPU registers or instructions is available * MIPS2 or later, or kernel emulation of ll/sc (standard in Linux) is required + * MIPS32r6, an incompatible ISA, is supported as a variant "mipsr6" + +* MIPS64 + * ABI is n64 (LP64) or n32 (ILP32) + * Big-endian default; little-endian variants also supported + * Default ABI variant uses FPU registers; alternate soft-float ABI + that does not use FPU registers or instructions is available * PowerPC - * Only 32-bit is supported * Compiler toolchain must provide 64-bit long double, not IBM double-double or IEEE quad * For dynamic linking, compiler toolchain must be configured for "secure PLT" variant +* PowerPC64 + * Both little and big endian variants are supported + * Compiler toolchain must provide 64-bit long double, not IBM + double-double or IEEE quad + * Compiler toolchain must use the new (ELFv2) ABI regardless of + whether it is for little or big endian + +* S390X (64-bit S390) + +* SuperH (SH) + * Standard ELF ABI or FDPIC ABI (shared-text without MMU) + * Little-endian by default; big-endian 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) +* OpenRISC 1000 (or1k) -* x32 (x86_64 ILP32 ABI) +* RISC-V 64 + * Little endian + * Hard, soft, and hard-single/soft-double floating point ABIs + * Standard ELF; no shared-text NOMMU support