The shortest and fastest script to build working cross compilers targeting musl libc
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) <[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.