mussel
is the shortest and fastest script available today to build working cross
compilers that target musl
libc.
- Up-to-date: uses latest available upstream sources for packages
- Fast: probably the fastest script around to build a cross compiler
targeting
musl
libc, and runs fully underdash
- Short: has the least amount of steps (see below) required to build a cross compiler targeting musl libc (even less than musl-cross-make)
- Small: all installation steps use
install-strip
where applicable - Simple: easy to read, modify and extend
- POSIX Compliant: the entire script is POSIX compliant
- Well Documented: the script comes with a
DOCUMENTATION.md
file that includes state of the art information explaining what is being done and why
To confirm you have all required packages, please execute ./check
.
./mussel (arch) (flags)
(arch): See Supported Architectures below
(flags):
f | -f | --enable-fortran Enable optional Fortran support
k | -k | --enable-pkg-config Enable optional pkg-config support
l | -l | --enable-linux-headers Enable optional Linux Headers support
o | -o | --enable-openmp Enable optional OpenMP support
p | -p | --parallel Use all available cores on the host system
q | -q | --enable-quadmath Enable optional libquadmath support (default for Fortran)
x | -x | --disable-cxx Disable optional C++ support
./mussel (command)
(command):
c | -c | --clean Clean mussel's build environment
h | -h | --help Display this help message
Sources will be preserved.
- aarch64
- armv4t
- armv5te
- armv6
- armv6kz (Raspberry Pi 1 Models A, B, B+, the Compute Module, and the Raspberry Pi Zero)
- armv7
- i486
- i586
- i686
- m68k
- microblaze
- microblazeel
- mips64
- mips64el
- mipsisa64r6
- mipsisa64r6el
- or1k
- powerpc
- powerpcle
- powerpc64
- powerpc64le
- riscv64
- s390x
- sh2
- sh2be
- sh2-fdpic
- sh2be-fdpic
- sh4
- sh4be
- x86-64
binutils
: 2.42gcc
: 13.2.0gmp
: 6.3.0isl
: 0.26linux
: 6.5.3 (Optional Linux Headers Support) (Disabled by default)mpc
: 1.3.1mpfr
: 4.2.1musl
: 1.2.4pkgconf
: 2.1.0 (Optionalpkg-config
Support) (Disabled by default)
- Install
musl
headers - Configure, build and install cross
binutils
- Configure, build and install cross
gcc
(withlibgcc-static
) - Configure, build and install
musl
- Build, and install
libgcc-shared
- Build and install
libstdc++-v3
(Optional C++ Support) (Enabled by default) - Build and install
libgomp
(Optional OpenMP Support) (Disabled by default) - Build and install
libquadmath
(Optional Quadruple-precision Support) (Disabled by default, Enabled for Fortran) - Build and install
libgfortran
(Optional Fortran Support) (Disabled by default) - Install
linux-headers
(Optional Linux Headers Support) (Disabled by default) - Configure, build and install
pkgconf
(Optionalpkg-config
Support) (Disabled by default)
The reason we included pkgconf
with mussel
as an optional step is
because we can easily configure the host's pkg-config
or pkgconf
to work
with mussel
without having to build our own version of pkg-config
or
pkgconf
.
Here are the five magical environment variables that we need to set to configure
the host's pkg-config
or pkgconf
to work with mussel
:
export PKG_CONFIG_PATH=$MSYSROOT/usr/lib/pkgconfig:$MSYSROOT/usr/share/pkgconfig
export PKG_CONFIG_LIBDIR=$MSYSROOT/usr/lib/pkgconfig:$MSYSROOT/usr/share/pkgconfig
export PKG_CONFIG_SYSROOT_DIR=$MSYSROOT
export PKG_CONFIG_SYSTEM_INCLUDE_PATH=$MSYSROOT/usr/include
export PKG_CONFIG_SYSTEM_LIBRARY_PATH=$MSYSROOT/usr/lib
The last two I believe are pkgconf
specific but setting them won't do any harm.
mussel
now provides cross-compilation configuration files for meson
that
support all listed architectures, and a wrapper around host's meson
(mussel-meson
) in an effort to make dealing with meson
a bit easier.
mussel
is possible thanks to the awesome work done by Aurelian, Rich Felker,
qword, The Managarm Project, glaucus (where
it's actually implemented) and musl-cross-make.
Firas Khalil Khana (firasuke) <[email protected]>
- Alexander Barris (AwlsomeAlex) <[email protected]>
- Andrew Blue <[email protected]>
- ayb <[email protected]>
- Luiz Antônio Rangel at Pindorama (takusuman) <[email protected]>
mussel
is licensed under the Internet Systems Consortium (ISC) license.
mussel
is dedicated to all those that believe setting up a cross compiler
targeting musl libc is a complicated process.