[Aboriginal] bootstrapping llvm
Rob Landley
rob at landley.net
Sat Oct 5 14:27:31 PDT 2013
On 10/04/2013 10:19:34 PM, Alain Toussaint wrote:
> > On 09/25/2013 02:45:03 PM, Alain Toussaint wrote:
> >> At the moment, I have built llvm 3.3 under gentoo with all the
> targets enabled
> >> but tonight when I get back home, I'll try to build a
> cross-compiler in my homedir.
> >
> > I note my record-command.sh and report-recorded-commands.sh scripts
> (see the FAQ) are useful work working out build prerequisites.
> They're available in the build on the host, and get installed into
> the system images as a command line wrapper.
> >
> > Rob
>
> Ok, I'll look into their sources. For the moment, I've been looking
> at building
> llvm with musl using this page:
> http://wiki.musl-libc.org/wiki/BuildingLLVM
Cool.
> I don't know yet if I'll follow the howto to the letter or adapt it
> to use a llvm
> userland (the instruction refer to a libgcc & libstdc++ build and I
> actually want
> to build with their clang/llvm counterpart) but I will decide later
> next week.
The history of llvm involves creating a new code generation backend
using the gcc frontend (llvm), then creating a new frontend (clang),
then creating new libgcc and libstdc++, then creating a new assembler
and linker, then fixing various packages that had upstream
assumptions...
It's always been an incremental process to get to the desired result. I
usually try to get something working then swap out parts one at a time
with a known-good base to compare against. Once I get a knew known-good
base, archive it and iterate with the next change. Often the first "get
something working" is really crappy, from just "build it on my ubuntu
host with their gcc and glibc and $PATH of tools" through "boot
somebody else's image under qemu and poke around".
If you've played with Linux From Scratch, you'll see where I got the
"populate a chroot with tools, then build another chroot using _that_
chroot" approach. It's an excellent way to encapsulate your
dependencies; if the first chroot is missing something it can't build
the second. I'd make it work on x86 with just chroot, and _then_ worry
about other targets and qemu. (You could even do actual linux from
scratch using the gnu tools and then worry about swapping them out for
busybox after you have a known working baseline. I doubt the llvm guys
have been testing busybox/toybox as their build environment. :)
Rob
1381008451.0
More information about the Aboriginal
mailing list