|
@@ -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)
|
|
|
|
|
|
|
|
|
|