X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=INSTALL;h=dbe25a7a57fe40de7f0a0fe2660d1edb57ca7e92;hb=0f722282089c80f5d3ac2829fe216eb306080137;hp=5713cd49baf74224dc0246bd7067b36923ae2772;hpb=60276b995e6916bab7d8803b37260500a691c7ec;p=android-x86%2Fexternal-musl-libc.git diff --git a/INSTALL b/INSTALL index 5713cd49..dbe25a7a 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 @@ -67,28 +62,44 @@ and ABI combinations: * MIPS2 or later, or kernel emulation of ll/sc (standard in Linux) is required +* MIPS64 + * ABI is n64 (LP64) + * 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 -* Microblaze - * Big-endian default; little-endian variants also supported - * Soft-float - * Requires support for lwx/swx instructions +* 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 -The following additional targets are available for build, but may not -work correctly and may not yet have ABI stability: +* S390X (64-bit S390) * 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 supported (musl always - requires IEEE single and double to be supported) + single-precision-only FPU ABI is not + +* Microblaze + * Big-endian default; little-endian variants also supported + * Soft-float + * Requires support for lwx/swx instructions + +* 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