- Notifications
You must be signed in to change notification settings - Fork13
The shortest and fastest script to build working cross compilers targeting musl libc
License
firasuke/mussel
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
mussel
is the shortest and fastest script available today to build working crosscompilers that targetmusl
libc
- Up-to-date: uses latest available upstream sources for packages
- Fast: probably the fastest script around to build a cross compilertargeting
musl
libc, and runs fully underdash
- Short: has the least amount of steps (seebelow) requiredto build a cross compiler targeting musl libc (even less thanmusl-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 doneand why
To confirm you have all required packages, please execute./check
./mussel (arch) (flags)
(arch): SeeSupportedArchitecturesbelow
(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) s | -s | --min-size Optimize for minimum size x | -x | --disable-cxx Disable optional C++ support g | -g | --disable-isl Disable isl Library support (Graphite loop optimisations) T | -T | --custom-vendor Sets a custom vendor for tuple, requires architecture to be set before
./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 RaspberryPi Zero)
- armv7
- i486
- i586
- i686
- m68k
- microblaze
- microblazeel
- mips
- mipsel
- mips64
- mips64el
- mipsisa64r6
- mipsisa64r6el
- or1k
- powerpc
- powerpcle
- powerpc64
- powerpc64le
- riscv64
- s390x
- sh2
- sh2be
- sh2-fdpic
- sh2be-fdpic
- sh4
- sh4be
- x86-64
binutils
: 2.43.1gcc
: 14.2.0gmp
: 6.3.0isl
: 0.27linux
: 6.11.8 (Optional Linux Headers Support) (Disabled by default)mpc
: 1.3.1mpfr
: 4.2.1musl
: 1.2.5pkgconf
: 2.3.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 includedpkgconf
withmussel
as anoptional step isbecause we can easily configure the host'spkg-config
orpkgconf
to workwithmussel
without having to build our own version ofpkg-config
orpkgconf
.
Here are the five magical environment variables that we need to set to configurethe host'spkg-config
orpkgconf
to work withmussel
:
export PKG_CONFIG_PATH=$MSYSROOT/usr/lib/pkgconfig:$MSYSROOT/usr/share/pkgconfigexport PKG_CONFIG_LIBDIR=$MSYSROOT/usr/lib/pkgconfig:$MSYSROOT/usr/share/pkgconfigexport PKG_CONFIG_SYSROOT_DIR=$MSYSROOTexport PKG_CONFIG_SYSTEM_INCLUDE_PATH=$MSYSROOT/usr/includeexport PKG_CONFIG_SYSTEM_LIBRARY_PATH=$MSYSROOT/usr/lib
The last two I believe arepkgconf
specific but setting them won't do any harm.
mussel
now provides cross-compilation configuration files formeson
thatsupport all listed architectures, and a wrapper around host'smeson
(mussel-meson
) in an effort to make dealing withmeson
a bit easier.
mussel
is possible thanks to the awesome work done by Aurelian, Rich Felker,qword,The Managarm Project,glaucus (whereit's actually implemented) andmusl-cross-make
Firas Khalil Khana (firasuke) <firasuke@glaucuslinux.org>
- Alexander Barris (AwlsomeAlex) <alex@awlsome.com>
- Andrew Blue <andy@antareslinux.org>
- ayb <ayb@3hg.fr>
- Luiz Antônio Rangel at Pindorama (takusuman) <luiz.antonio.rangel@outlook.com.br>
mussel
is licensed under the Internet Systems Consortium (ISC) license
mussel
is dedicated to all those that believe setting up a cross compilertargeting musl libc is a complicated process.
About
The shortest and fastest script to build working cross compilers targeting musl libc