| Index: fusl/INSTALL
|
| diff --git a/fusl/INSTALL b/fusl/INSTALL
|
| deleted file mode 100644
|
| index 5713cd49baf74224dc0246bd7067b36923ae2772..0000000000000000000000000000000000000000
|
| --- a/fusl/INSTALL
|
| +++ /dev/null
|
| @@ -1,179 +0,0 @@
|
| -
|
| -Quick Installation Guide for musl libc
|
| -======================================
|
| -
|
| -There are many different ways to install musl depending on your usage
|
| -case. This document covers only the build and installation of musl by
|
| -itself, which is useful for upgrading an existing musl-based system or
|
| -compiler toolchain, or for using the provided musl-gcc wrapper with an
|
| -existing non-musl-based compiler.
|
| -
|
| -Building complete native or cross-compiler toolchains is outside the
|
| -scope of this INSTALL file. More information can be found on the musl
|
| -website and community wiki.
|
| -
|
| -
|
| -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.
|
| -
|
| -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
|
| ------------------
|
| -
|
| -musl can be built for the following CPU instruction set architecture
|
| -and ABI combinations:
|
| -
|
| -* i386
|
| - * Minimum CPU model is actually 80486 unless kernel emulation of
|
| - the `cmpxchg` instruction is added
|
| -
|
| -* x86_64
|
| -
|
| -* ARM
|
| - * EABI, standard or hard-float VFP variant
|
| - * Little-endian default; big-endian variants also supported
|
| - * Compiler toolchains only support armv4t and later
|
| -
|
| -* MIPS
|
| - * ABI is o32
|
| - * 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
|
| -
|
| -* 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
|
| -
|
| -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)
|
| -
|
| -
|
| -
|
| -Build and Installation Procedure
|
| ---------------------------------
|
| -
|
| -To build and install musl:
|
| -
|
| -1. Run the provided configure script from the top-level source
|
| - directory, passing on its command line any desired options.
|
| -
|
| -2. Run "make" to compile.
|
| -
|
| -3. Run "make install" with appropriate privileges to write to the
|
| - target locations.
|
| -
|
| -The configure script attempts to determine automatically the correct
|
| -target architecture based on the compiler being used. For some
|
| -compilers, this may not be possible. If detection fails or selects the
|
| -wrong architecture, you can provide an explicit selection on the
|
| -configure command line.
|
| -
|
| -By default, configure installs to a prefix of "/usr/local/musl". This
|
| -differs from the behavior of most configure scripts, and is chosen
|
| -specifically to avoid clashing with libraries already present on the
|
| -system. DO NOT set the prefix to "/usr", "/usr/local", or "/" unless
|
| -you're upgrading libc on an existing musl-based system. Doing so will
|
| -break your existing system when you run "make install" and it may be
|
| -difficult to recover.
|
| -
|
| -
|
| -
|
| -Notes on Dynamic Linking
|
| -------------------------
|
| -
|
| -If dynamic linking is enabled, one file needs to be installed outside
|
| -of the installation prefix: /lib/ld-musl-$ARCH.so.1. This is the
|
| -dynamic linker. Its pathname is hard-coded into all dynamic-linked
|
| -programs, so for the sake of being able to share binaries between
|
| -systems, a consistent location should be used everywhere. Note that
|
| -the same applies to glibc and its dynamic linker, which is named
|
| -/lib/ld-linux.so.2 on i386 systems.
|
| -
|
| -If for some reason it is impossible to install the dynamic linker in
|
| -its standard location (for example, if you are installing without root
|
| -privileges), the --syslibdir option to configure can be used to
|
| -provide a different location
|
| -
|
| -At runtime, the dynamic linker needs to know the paths to search for
|
| -shared libraries. You should create a text file named
|
| -/etc/ld-musl-$ARCH.path (where $ARCH matches the architecture name
|
| -used in the dynamic linker) containing a list of directories where you
|
| -want the dynamic linker to search for shared libraries, separated by
|
| -colons or newlines. If the dynamic linker has been installed in a
|
| -non-default location, the path file also needs to reside at that
|
| -location (../etc relative to the chosen syslibdir).
|
| -
|
| -If you do not intend to use dynamic linking, you may disable it by
|
| -passing --disable-shared to configure; this also cuts the build time
|
| -in half.
|
| -
|
| -
|
| -
|
| -Checking for Successful Installation
|
| -------------------------------------
|
| -
|
| -After installing, you should be able to use musl via the musl-gcc
|
| -wrapper. For example:
|
| -
|
| -cat > hello.c <<EOF
|
| -#include <stdio.h>
|
| -int main()
|
| -{
|
| - printf("hello, world!\n");
|
| - return 0;
|
| -}
|
| -EOF
|
| -/usr/local/musl/bin/musl-gcc hello.c
|
| -./a.out
|
| -
|
| -To configure autoconf-based program to compile and link against musl,
|
| -set the CC variable to musl-gcc when running configure, as in:
|
| -
|
| -CC=musl-gcc ./configure ...
|
| -
|
| -You will probably also want to use --prefix when building libraries to
|
| -ensure that they are installed under the musl prefix and not in the
|
| -main host system library directories.
|
|
|