> 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

Reply via email to