G N U G E N E R A L I N F O R M A T I O N (Updated 7/12/94) ======== OVERVIEW ======== This is the root directory of a set of utilities which started with Amiga ports of important GNU (GNU's Not Unix) tools, such as the GNU C compiler, and then has gradually expanded to encompass other tools. For information about what has changed since the previous release, see the CHANGES topic later in this file. One of the goals of this set of utilities is to have a completely self hosting environment. I.E. that everything within it be compilable by the GNU C compiler or other provided compilers. It should be possible for the recipient of these utilities to make whatever changes or bug fixes they want in any piece of code, and then rebuild and use that fixed version (and hopefully send those changes back for integration into future releases). ========== STACK SIZE ========== *** IMPORTANT *** Some of the GNU utilities, gcc in particular, require a very large stack. You need to arrange that the CLI/Shell or whatever you run these programs from has a large stack set. In a CLI you can set this with a command of the form "stack 100000" (100000 is what I use). You can also put this command in your S:Shell-Startup file to get large stacks for all CLI/Shell startups, without having to remember to manually set the stack each time. Really huge compiles, like recompiling the compiler itself, may require even more stack space (like 300Kb or more). ========= STRUCTURE ========= Important subdirectories are: amigados ? (gcc/g++ uses this for something...) bin Where the GNU executables go. etc Equivalent to /etc on UNIX. guide AmigaGuide versions of info files. include Include files used by gcc. info Info files. lib Library tree, like /usr/lib on UNIX. man Manual pages. manifests Lists that subdivide this tree up into important subsets for individual distribution, such as all the files that comprise a binary distribution of the GNU C compiler. os-include System specific include files. These are Commodore proprietary and are distributed under license from Commodore. os-lib System specific library files. These are derived from Commodore proprietary libraries and are distributed under license from Commodore. src All the source code, including the original FSF distributions, patches to the FSF distributions, and the fully patched AmigaDOS sources. ============== GENERAL STATUS ============== Distribution Prev This Latest Name CD-ROM CD-ROM FSF Status ------------ ------ ------ ------ ----------------- a++ * 1.01 n/a Added autoconf * 1.11 1.11 Added bash 1.13.4 1.13.4 1.13.4 Port incomplete bc 1.02 1.02 1.02 No change binutils 1.8.x 1.8.x 2.3 No change bison 1.22 1.22 1.22 No change calc * * 2.02b No port integrated yet cpio 2.3 2.3 2.3 No change cvs * * 1.3 No port integrated yet dc 0.2 0.2 0.2 No change dejagnu * * 1.1.1 No port integrated yet diffutils 2.6 2.6 2.6 No change doschk 1.1 1.1 1.1 No change ed * 0.1 0.1 Added elvis * * 1.7 No port integrated yet emacs 18.59 18.59 19.22 No change f2c 930428 930428 930428 No change fileutils 3.9 3.9 3.9 No change find 3.8 3.8 3.8 No change finger * * 1.37 No port integrated yet flex 2.4.6 2.4.6 2.4.6 No change fontutils * * 0.6 No port integrated yet gas 1.38 1.38 2.2 No change gawk 2.15.4 2.15.5 2.15.5 Updated gcc 2.5.8 2.5.8 2.5.8 No change gdb 4.12 4.12 4.12 No change - Port incomplete gdbm 1.7.1 1.7.3 1.7.3 Updated ghostscript 2.6.1 2.6.1 2.6.1 No change ghostview * * 1.5 No port integrated yet glibc * * 1.06 No port integrated yet gmp 1.3.2 1.3.2 1.3.2 No change gnat * 1.80 n/a Added gnuchess * * 4.0.62 No port integrated yet gnugo * * 1.1 No port integrated yet grep 2.0 2.0 2.0 No change groff 1.09 1.09 1.09 No change gzip 1.2.4 1.2.4 1.2.4 No change indent 1.9.1 1.9.1 1.9.1 No change ispell 4.0 4.0 4.0 No change less * * 177 No port integrated yet libg++ 2.5.3 2.5.3 2.5.3 No change m4 1.1 1.1 1.1 No change make 3.70 3.71 3.71 Updated mm * * 1.07 No port integrated yet mtools * * 2.0.7 No port integrated yet nethack * * 3.1.3 No port integrated yet oleo * * 1.3.1b No port integrated yet patch 2.1 2.1 2.1 No change pdksh 4.5 4.9 n/a Updated perl 4.036 4.036 4.036 No change (not working) rcs 5.6.0.1 5.6.0.1 5.6.0.1 No change readline * * 1.1 No port integrated yet recode * * 3.2.4 No port integrated yet regex * * 0.12 No port integrated yet sed 2.03 2.05 2.05 Updated shellutils 1.9.4 1.10 1.10 Updated tar 1.11.2 1.11.2 1.11.2 No change termcap 1.2 1.2 1.2 No change texinfo 3.1 3.1 3.1 No change textutils 1.9 1.9 1.9 No change time * * 1.6 No port integrated yet tput * * 1.0 No port integrated yet uucp * * 1.04 No port integrated yet uuencode 1.0 1.0 1.0 No change wdiff * * 0.04 No port integrated yet ============== GNU C COMPILER ============== All the versions of gcc look for local header files in LOCAL:include and LOCAL:os-include, and look for local library files in LOCAL:lib and LOCAL:os-lib. This allows you to add local packages that will be found automatically by gcc, in a location that is writable by you. Simply reassign LOCAL: to point to the correct location. Gcc now automatically includes -lamiga in the command line to the linker, so you can use AmigaDOS specific calls in your code without having to remember to link with libamiga.a. As of this date, all releases of gcc since 2.3.3 have had broken support for the -resident option. This is one reason why gcc 2.3.3 is still included on the CD-ROM. To demonstrate the problem, try to bootstrap using "make bootstrap RESIDENT=-resident". ========== GNU LINKER ========== A new option "-f" or "-flavor" is used to inform the linker to look in additional subdirectories for particular "flavors" of libraries, like libraries compiled with -fresident, libraries compiled with -g, libraries compiled with -p, etc. All the flavor args are collected in a list, sorted, and then used to create additional sudirectories at the end of the standard library search paths. For example, given the args "-L mystuff:lib -flavor libx -flavor libb -lmylib" the linker will search for libmylib.a in "mystuff:lib/libb/libx/". In particular, this is the mechanism that is now used to locate the base relative libraries, which have moved from gcc:blib to gcc:lib/libb. Eventually there will be other standard flavors of libraries, like -p compiled and -g compiled libraries, in a subtree like: gcc:lib/libb/libc.a -resident gcc:lib/libb/libg/libc.a -resident -g gcc:lib/libb/libg/libp/libc.a -resident -g -p gcc:lib/libp/libc.a -p gcc:lib/libg/libp/libc.a -g -p etc. ============ GNU DEBUGGER ============ GDB 4.12 has been ported to the extent that you can build an AmigaDOS executable that knows how to load and examine executables from non-AmigaDOS systems. Much work remains. See the gnu:src/diffs/gdb-4.12-README file. ======= CHANGES ======= This is a summary of things that have changed since the last release. * It is now possible to configure and build most of the GNU tree using a single command, and to do so in a directory that is total separate from the GNU tree (commonly called the "build" directory. I.E. makedir junk:build cd junk:build sh /gnu/src/amiga/configure amigados ; make * Added a port of GNU ada (gnat) done by Pass Travis. Thanks Pass! See gnu:src/amiga/gnat-1.80/README-amiga for details. For examples of how to run the compiler, and test your installation, try the examples in the gnat-1.80/examples directory. * GNU sed updated to version 2.05. * GNU "ed" version 0.1 added. * GNU autoconf 1.11 added. * GNU gawk updated to version 2.15.5. * GNU gdb updated with patches for reading AmigaDOS "hunk" format. * GNU gdbm updated to version 1.7.3. * GNU make updated to version 3.71. * GNU shell utils updated to version 1.10 (and renamed). * Pdksh updated from version 4.5 to version 4.9, the latest public release, and autoconf support added. * Added "autoconf" support to most tools that didn't already have autoconf support, and rebuild the automatically generated configure scripts for those tools that did come with autoconf support, using the latest version of autoconf. * Merged in some GNU ld bug fixes and other changes. * Merged a patch in ls.c so that ls will handle international characters better. * Version 1.01 of Armin Vogt's A++ library has been added to the GNU source tree. It hasn't yet been integrated as part of the standard GNU C environment though. The A++ library is a library written in C++ that consists of classes assigned to the task of encapsulating the Amiga system software, to given them a proper C++ class interface. See the documentation and examples in the source directory "src/amiga/APlusPlus". ==== TODO ==== This is a list of things that still remain to be done for future releases, and/or comments about future directions. * Beta versions of gcc that use separate 68020/030/040 binaries and libraries are currently in testing. They should be integrated in the next release. * New versions of ixemul.library (40.X) are in beta test. Once they are stable, they will be integrated into a future release. * Look at adding AmigaDOS style version strings to all binaries. * Look at redoing documentation files (such as this one) as AmigaGuide documents, or as texinfo files that can be used to generate both AmigaGuide and plain-text files. * Integrate an "info-to-AmigaGuide" converter into the standard build and install process, in order to generate and install AmigaGuide versions of all info files. * Ensure that the standard documentation browsing tools are present and work correctly (man, info, etc). * Continue integrating selected tools now that the "GNU tree" has been opened up to non-GNU tools as well as GNU tools. One fertile source of material may be the BSD-lite distributions. * Finish the GNU emacs 18.XX port so that it can be compiled with the GNU C compiler. * Port GNU emacs 19.XX. * In cpio-2.3, the "mt" program is not getting built, possibly because "rmt" support is not provided by default. Fix this. * Provide documentation in both *.dvi and *.ps formats.