buildworld may be unstable tomorrow morning
Matthew Dillon
dillon at apollo.backplane.com
Mon Mar 22 01:06:22 PST 2004
It's too late tonight, but monday morning I will likely be committing
a major revamping of the buildworld code. It will do a number of things:
STAGE1:
* It compartmentalizes the bootstrap/buildtools from the cross-build
setup from the world stage. Instead of unfathomable subdirectory
names in /usr/obj/usr/src/* the stage directories are now flattened
out and better named . e.g. btools_<currentarch> for bootstrap and
build tools, ctools_<currentarch>_<targetarch> for the cross compiler
tools, and world_<targetarch> for the main buildworld.
* The build-tools will contain all tools required by the build, not
just the ones which might have version/portability problems. This
is so I can remove the base system path (e.g. like /usr/bin) from
the main world build, which in turn prevents buildworld from
accidently using programs that it isn't supposed to be using. I'd
like to remove it from the cross-build stage too but I'd have to
build the compiler in the build-tools stage to be able to do that and
I haven't decided whether its worth the extra time yet or not.
* The buildworld target will properly remove the entire buildworld
object hierarchy. It turns out that it was only removing the world
stage before, it wasn't removing the build tools and cross tools stages.
* New targets to make incremental buildworlds easier will be introduced,
e.g. quickworld and realquickworld. quickworld skips the build and
cross tools, realquickworld skips the build tools, cross tools, and
depend step.
* The concept of platform-native compiled programs which are uneffected
by the cross-build, and all Makefile's that generate these little
helper programs now use the new concept. New suffixes have been
introduced: '.no' for 'native object module' and '.nx' for
'native executable'. This is replacing the build-tools: target that
existed in the tree. The problem is that the build-tools stage in
the old build was polluting the world stage's namespace a bit more
then it should have.
This will primarily make cross-building less hackish, once we start
doing cross builds.
* Fix a bug in 'wmake', which simulates the buildworld environment for
piecemeal compilation/testing. It was not using /usr/src/share/mk.
* Additional .ORDER: constraints (not finished)
STAGE2:
* Fix .c.o and friends in sys.mk (specify -o ${.TARGET} instead of
assuming that the target is named the same).
* Continued messing around with .ORDER for -j N builds.
* Cleanup passes
-Matt
More information about the Kernel
mailing list