Subject: gcc/binutils/gdb import proposal
To: None <tech-toolchain@netbsd.org>
From: Todd Vierling <tv@pobox.com>
List: tech-toolchain
Date: 07/16/2000 16:32:27
Here's a revision of the toolchain update layout, available for comment.  
No date is yet set for the import, as I do anticipate several comments.  8^)

Note that this will require careful importing, for which I'll create some
scripts to make the job less human-error-prone--and have a checked-in text
file documenting the procedures for the future (...so we don't end up with a
frazzled mess like we have now in gnu/dist).

***** SOURCE LAYOUT *****

gnusrc/gnu/dist/toolchain/

    Top level directory.  This keeps the tools that can be built
    as a "bulk cross-tools unit" together.

    The files in this directory, and in config/, will be taken on a
    datestamped basis from source.redhat.com:/cvs/src
    (formerly sourceware.cygnus.com).  This keeps us as up to date as
    possible with config.guess and the other "non-source-specific" files.

    Once integrated, a complete set of cross tools should be creatable
    on any host platform simply by using this directory tree.

gnusrc/gnu/dist/toolchain/{gcc,contrib,INSTALL,install,
                           libio,libstdc++,libobjc,libchill,libf2c}

    These will come from gcc-2.95.2, and track gcc versions.

    The testsuites will be imported, and a test Makefile structure
    created to make use of them.

gnusrc/gnu/dist/toolchain/{libjava,boehm-gc,zip}

    These will come from libgcj-2.95.1, and track libgcj as it is updated
    alongside gcc.  This will use the NetBSD-supplied zlib.  I am
    researching the license on a "minizip" program to allow for the creation
    of the zip (jar) files with zlib without needing the infozip code.

gnusrc/gnu/dist/toolchain/{bfd,opcodes,gas,ld,gprof,include,libiberty}

    These will come from binutils-2.10.  The testsuites will be imported.

gnusrc/gnu/dist/toolchain/{gdb,sim}

    These will come from gdb-5.0.  gdb will use libedit's readline
    emulation.

gnusrc/gnu/usr.bin/gcc/frontend/{cc,c++,cpp,c89,fort77,gcj}
gnusrc/gnu/usr.bin/gcc/backend/{collect2,common,cc1,cc1plus,cc1obj,f771,jc1}
gnusrc/gnu/usr.bin/gcc/runtime/{libgcc,libgccP,libgcj,libstdc++,
                                libobjc,libchill}

    Build structure for gcc-2.95.2.  "libgcc" is compiled -fpic;
    "libgccP" is compiled -fPIC, only on platforms needing an alternate.

    This layout comes from several requests to group gcc's build structure
    into one top-level tree.

gnusrc/gnu/usr.bin/binutils/{addr2line,ar,as,c++filt,common,gprof,ld,nm,
                             objcopy,objdump,ranlib,size,strings,strip,
                             libbfd,libopcodes,gdb}

    Build structure for binutils-2.10 and gdb-5.0.  gdb is grouped here
    based on two factors (grouping of the libbfd-using programs, and the
    fact that Cygnus/Redhat actually maintains binutils and gdb together
    in the same source tree).

    Note the split of libbfd and libopcodes; some binutils tools
    do not need the overhead of resolving the libopcodes objects.

***** INSTALL LAYOUT *****

/usr/bin/

    Contains all command line executable programs.

/usr/lib/{libbfd,libopcodes}.so

    Shared objects for commonly reused code.

/usr/libexec/gcc/

    Contains collect2, cc1*, f771, and jc1.

/usr/share/ldscripts/

    Contains ld scripts for all platforms.

/usr/share/locale/*/

    Contains the multilanguage files for gcc and binutils.

-- 
-- Todd Vierling (tv@pobox.com)