> because
> something had to be used to compile Plan 9 itself, etc and I figure it's
> not being done as a cross-compiler).
> --
ken thompson wrote a nice little C compiler.
cross-compilation is trivial: if 8c is the x86 compiler and qc is the power pc
compiler, you get a cross
compiler from x86 to powerpc by compiling qc with 8c. unchanged. that's it.
no nest of peculiar configuration files just to make a given compiler into a
cross-compiler.
to cross-compile the whole system for (say) PowerPC on any architecture,
including itself, use
objtype=power mk install
on an x86, sparc, amd64, powerpc, ... . you can also build all of them in the
same tree:
objtype=power mk install
objtype=386 mk install
objtype=arm mk install
and simultaneously. no peculiar `buildroot' environments. and so on.
the mkfiles are essentially configured for a target platform by
/$objtype/mkfile.
here's /386/mkfile:
</sys/src/mkfile.proto
CC=8c
LD=8l
O=8
AS=8a
here's /power/mkfile:
</sys/src/mkfile.proto
CC=qc
LD=ql
O=q
AS=qa
and so on.
there are similarly a few lines of machine-specific includes in
/$objtype/include and that's it: all of the system's
includes in /sys/include are completely portable.
wc -l /386/include/*.h
65 /386/include/u.h
25 /386/include/ureg.h
90 total
it's not just system source. if i include /sys/src/cmd/mkone in my own mkfile,
and follow the
appropriate pattern, my own C software will build the same way. {mk
installall} will build and install it
in my own bin directories, for all supported architectures.
it's complete cross-compilation not completely cross compilation