This represents a major update to the buildworld subsystem.
authorMatthew Dillon <dillon@dragonflybsd.org>
Mon, 22 Mar 2004 20:58:27 +0000 (20:58 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Mon, 22 Mar 2004 20:58:27 +0000 (20:58 +0000)
commit1397f94aa1ea2d43221112b01475edd90c2b1be4
tree601bb0f51f084457d7ecbb74c4e7999eb876e391
parent7fc47c8fb8b91850da9ebda86c1826efe5c46992
This represents a major update to the buildworld subsystem.

    Compartmentalize the bootstrap/buildtools, the cross-build setup,
    and the world stage.  /usr/obj/usr/src is now far more readable
    (e.g. /usr/obj/usr/src/{btools_i386,ctools_i386_i386,world_i386}).

    Use a completely private command path for the world stage of the build.
    The bootstrap/buildtools stage compiles all required system programs
    (like rm, ln, chmod, etc).   At the moment the build compiles everything
    it needs, but this can be augmented later to 'cp' the required binaries
    into btools_<arch> instead of building them, including potentially copying
    the compiler binaries so the ctools_<arch> build could use a private
    path too).

    The 'buildworld' target now properly removes all object modules for
    all major stages.  Several new targets have been added to reduce
    build times, the most useful of which is 'quickworld', which skips
    the btools and ctools stages (they must have already been built).

    sys.mk has been augmented to support .nx binaries and .no object
    modules, which are built using ${NXCC} and friends, which always uses
    the system's native compiler rather then potentially using the
    cross-build compiler, for generating helper programs during the build.
    This way we do not have to special-case building the helper programs in
    an earlier stage as FreeBSD does.

    Fix a bug in 'wmake', which simulates the buildworld environment for
    piecemeal compilation/testing.  It was not using /usr/src/share/mk.

    Add additional .ORDER: constraints to better support make -j N
    (incomplete).  Note that recent changes to the DragonFly scheduler make
    it more likely for buildworld to trip over parallel make races.

    TOOLS_PREFIX was used to generate cross-compiler directory targets
    for exec'd utility binaries and access to libraries and include
    files.  However, in the new compartmentalized breakdown the cross
    compiler's utility binaries will reside in ctools_* while the
    include files and libraries are expected to be installed and accessed
    in world_*.  Add a USRDATA_PREFIX which defaults to TOOLS_PREFIX to
    allow the cross compilation stage to separate the two entities.
48 files changed:
Makefile
Makefile.inc1
bin/csh/Makefile
bin/sh/Makefile
etc/mtree/BSD.usr.dist
games/adventure/Makefile
games/hack/Makefile
games/phantasia/Makefile
gnu/lib/gcc2/Makefile
gnu/lib/gcc3/Makefile
gnu/lib/gcc3/libgcc/Makefile
gnu/usr.bin/Makefile
gnu/usr.bin/binutils/Makefile
gnu/usr.bin/binutils/ld/Makefile.alpha
gnu/usr.bin/binutils/ld/Makefile.i386
gnu/usr.bin/binutils214/Makefile
gnu/usr.bin/binutils214/ld/Makefile.amd64
gnu/usr.bin/binutils214/ld/Makefile.i386
gnu/usr.bin/cc/Makefile
gnu/usr.bin/cc/Makefile.inc
gnu/usr.bin/cc/cc1plus/Makefile
gnu/usr.bin/cc/cc_tools/Makefile
gnu/usr.bin/cc/cc_tools/dragonfly-native.h
gnu/usr.bin/cc/f771/Makefile
gnu/usr.bin/cc3/Makefile
gnu/usr.bin/cc3/Makefile.inc
gnu/usr.bin/cc3/cc_tools/Makefile
gnu/usr.bin/cc3/cc_tools/dragonfly-native.h
gnu/usr.bin/cc3/f771/Makefile
kerberos5/Makefile.inc
kerberos5/lib/libasn1/Makefile
kerberos5/lib/libhdb/Makefile
kerberos5/lib/libroken/Makefile
kerberos5/lib/libsl/Makefile
kerberos5/lib/libvers/Makefile
lib/libncurses/Makefile
release/sysinstall/Makefile
share/mk/bsd.cpu.mk
share/mk/bsd.info.mk
share/mk/bsd.init.mk
share/mk/bsd.lib.mk
share/mk/bsd.own.mk
share/mk/bsd.prog.mk
share/mk/bsd.subdir.mk
share/mk/sys.mk
share/syscons/scrnmaps/Makefile
usr.bin/awk/Makefile
usr.bin/file/Makefile