richfelker / musl-cross-make

Simple makefile-based build for musl cross compiler
MIT License
1.29k stars 266 forks source link

[Discussion] Would it be feasible to port this for other libc implementations/generalize? #187

Closed Haringat closed 7 months ago

Haringat commented 7 months ago

I have tried to dig into the source code but sadly, my Makefile knowledge did not suffice to actually understand most of it.

But I wondered how heavily is this geared towards musl? Would it be possible/feasible to replace musl with another libc implementation to build other toolchains?

ryanwoodsmall commented 7 months ago

this repo is owned by the maintainer of musl libc. if you're looking for something more general with multiple libc/compiler/etc. support, there are other choices.

these are both geared towards generating full OS deployments/system images, with buildroot being easy to get started with and yocto being the ahh let's say "most enterprise ready." but the compilers from either should be generally usable.

Haringat commented 7 months ago

Thanks. I am not really looking into building my own OS. What I am going for is creating docker images with cross-compilers.

rofl0r commented 7 months ago

the approach used here is fairly generic.i basically copied it in shell-form in the mingw recipe in sabotage linux. this spared me from having to install stuff during the build of the single components.

Haringat commented 7 months ago

Okay, thanks. Then I will try it again and see what I can come up with.

ryanwoodsmall commented 7 months ago

As an aside, Debian provides cross-compilers for systems the project supports.

root@8fb02abdb197:~# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 12 (bookworm)
Release:        12
Codename:       bookworm

root@8fb02abdb197:~# ( apt search linux.*arm64 2>/dev/null ; apt search g.*aarch64 2>/dev/null ) |& grep -iE '^(g(\+\+|cc)|linux)'
linux-libc-dev-arm64-cross/stable 6.1.4-1cross1 all
g++-11-aarch64-linux-gnu/stable 11.3.0-11cross1 amd64
g++-12-aarch64-linux-gnu/stable 12.2.0-14cross1 amd64
g++-aarch64-linux-gnu/stable 4:12.2.0-3 amd64
gcc-11-aarch64-linux-gnu/stable 11.3.0-11cross1 amd64
gcc-11-aarch64-linux-gnu-base/stable 11.3.0-11cross1 amd64
gcc-11-plugin-dev-aarch64-linux-gnu/stable 11.3.0-11cross1 amd64
gcc-12-aarch64-linux-gnu/stable 12.2.0-14cross1 amd64
gcc-12-aarch64-linux-gnu-base/stable 12.2.0-14cross1 amd64
gcc-12-plugin-dev-aarch64-linux-gnu/stable 12.2.0-14cross1 amd64
gcc-aarch64-linux-gnu/stable 4:12.2.0-3 amd64
gccgo-11-aarch64-linux-gnu/stable 11.3.0-11cross1 amd64
gccgo-12-aarch64-linux-gnu/stable 12.2.0-14cross1 amd64
gccgo-aarch64-linux-gnu/stable 4:12.2.0-3 amd64