mussel
mussel
is the shortest and fastest script available today to build working cross
compilers that target musl
libc.
musl
libc, and runs fully under dash
install-strip
where applicableDOCUMENTATION.md
file that includes state of the art information explaining what is being done
and whyTo 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.
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 (Optional pkg-config
Support) (Disabled by default)mussel
Doing It?musl
headersbinutils
gcc
(with libgcc-static
)musl
libgcc-shared
libstdc++-v3
(Optional C++ Support) (Enabled by default)libgomp
(Optional OpenMP Support) (Disabled by default)libquadmath
(Optional Quadruple-precision Support)
(Disabled by default, Enabled for Fortran)libgfortran
(Optional Fortran Support) (Disabled by default)linux-headers
(Optional Linux Headers Support) (Disabled by default)pkgconf
(Optional pkg-config
Support)
(Disabled by default)mussel
With Host's pkg-config
or pkgconf
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
With Host's meson
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
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) <firasuke@glaucuslinux.org>
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.