- Notifications
You must be signed in to change notification settings - Fork15
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.44gcc
: 14.2.0gmp
: 6.3.0isl
: 0.27linux
: 6.13.7 (Optional Linux Headers Support) (Disabled by default)mpc
: 1.3.1mpfr
: 4.2.2musl
: 1.2.5pkgconf
: 2.4.3 (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, RichFelker,qword,The Managarm Project,glaucus andmusl-cross-make
Firas 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>
- Rida Antoinette (vibrantrida) <vibrantsmug@gmail.com>
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
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Contributors7
Uh oh!
There was an error while loading.Please reload this page.