Short: gcc-2.5.8 full dist. Type: dev/gcc Uploader: phb@colombo.telesys-innov.fr Author: phb@colombo.telesys-innov.fr This directory contains the 2.5.8 release of the GNU C compiler. It includes all of the support for compiling C++ and Objective C, including a run-time library for Objective C. The GNU C compiler is free software. See the file COPYING for copying permission. ======= WARNING ======= This version of gcc has succesfully compiled itself 3 times (up to stage 3) and was used to compile some utilities such as perl, bison and C++ library. Please test it and reports any bugs to: Philippe BRAND Fidonet: Ramses The Amiga Flying BBS 2:320/104.21 Email: phb@colombo.telesys-innov.fr Ftp: 192.70.117.81 (sorry, DNS messed up at our regional coord). /pub/incoming/uploads. ========================== What's new in this release ========================== 2.5.8: -Read FSF NEWS-2.5.8 file included. -More internal compiler bugs fixed (see ChangeLogs in gcc sources for details), some for C++ support. -GCC-Install script fixed by Claus Deckhut (to be used with full distrib). -Upgrade to libg++-2.5.3. -trace.c updated by J. Hoehle to avoid buffer overflows. 2.5.7: -Read FSF NEWS file included. -More internal compiler bugs fixed (see ChangeLogs in gcc sources for details), a lot for C++ support. -Fred Fish seems to have finally found an annoying bug which prevented to compile a resident version of GCC, or to compile resident programs. But don't try it anyway 'cause there's still lack of library support as for now. -Man command now works, this one was my fault (well in fact like others ;-), fix done by Tom Haiko. -Infoview works also, it was an internal path problem. -libamy.a HAS TO BE RENAMED to libamiga.a because new ld won't find libamy.a -upgrade to new C++ library v2.5.1. =================== EXTREMELY IMPORTANT =================== I'd like to create a new gcc-2.5.8 development tree, based on users wishes. So now take your favorite mailer program and send me mail with wishes, bug fixes (example is for the installer script, already done, or headers), ideas, etc... I had a major hard-disk crash (backup ? somebody said backup ? Okay now I'll do backup ;-) So I've lost some fixed headers like time.h (author will know) and other stuff. So any ideas are welcome. Remember that YOU use gcc so it should at least please YOU. ========= IMPORTANT ========= NEW: well, old but I've never thought about this before: there's an amiga-gcc mailing list running in Finland, to which I'm subscribed: amiga-gcc-port@lists.funet.fi This should be the PREFERED place to send comments/bugs/flames/etc... I'm quite tired of forwarding x times same answer to people so I really think this mailing list is the right thing. I'll forward any question to this mailing-list, but please use it directly, except when you send files, in this case send them to my ftp site. ======= History ======= Gcc v2.2.2 port: Markus Wild Gcc v2.3.3 port: Markus Wild Gcc v2.4.5 port: Philippe Brand ,Lars Hecking, Fred Fish Gcc v2.5.0 and up: Philippe Brand, Fred Fish ======= Sources ======= This archive should contain everything necessary to get you going, it doesn't include the sources for ixemul.library (should be available RSN as a different distribution, or ask Markus Wild), and it doesn't include full sources to gcc. As stated by Richard Stallman of the FSF: "The GPL says that any distribution of binaries must contain either the source code or a written offer to supply source code (see the GPL for details of what is required)." If you're interested in the sources required to rebuild gcc, get the original GNU sources (gcc-2.5.8.tar.gz, somewhat 6MB), which should be stored on the same ftp site you got this binary distribution from (if they're not, tell the manager of that ftp site, as this is a requirement of the GNU Copyright LICENSE), or at ftp.gnu.ai.mit.edu:/pub/gnu, or on Ramses BBS (phone numbers listed below), otherwise ask me by smail then we'll manage to find a solution for you to get full sources. Then apply the gcc patch-file in src-patches/, and configure for `amigados'. Same thing goes for libg++-2.5.3. If you want (ie. you don't have to) get libg++-2.5.3.tar.gz (again, locations are explained below) and apply the libg++ diff from the src-patches directory, then configure for amigados and give it a try. Please note that you should have at least 40MB left or your HD and 8MB of memory minimum in order to rebuild gcc up to stage3. An accelerated Amiga is welcome, as it took me 4,5 hours to generate a single pass. So 3 passes makes 4,5 x 3 = 13,5 hours. Sources for other tools only included as binaries are available separately in self-contained archives (such as for example gnuinfo-920712.lha for InfoView), same locations, as described below. NOTE: gcc258src.lha has been posted to Aminet sites so you don't have to look for sources elsewhere and diffs have already been aplied. ===== Where ===== **** All GCC binaries (from 2.2.2 upto 2.5.8) are available on: - Aminet sites (wuarchive.wustl.edu and mirrors such as ftp.luth.se) in /pub/aminet/dev/gcc - Ramses The Amiga Flying BBS +33-1-60037015 HST Dual v32 terbo 4800-21600 +33-1-60037713 SupraFax v32bis 4800-14400 +33-1-60037716 Tornado v22bis 1200-2400 in Topic "Development", Area "Gcc" **** GNU source code is available on: - same FTP site you've taken these archives - gnu.prep.ai.mit.edu 18.71.0.38 in /pub/gnu - Ramses The Amiga Flying BBS in Topic "AmigaUnix/Unix/Linux/NetBSD", Area "Gnu Source Code" ====== Layout ====== WARNING: Locations of files have changed from 2.4.5 to conform FSF tree. WARNING2: g++-include directory has moved to /lib/g++-include Gcc-2.5.8 is splited into 5 archives: gcc258-1.lha basic gcc distribution, all what you need is there. gcc258-2.lha C++, Objective-C binaries, headers and libraries. gcc258-3.lha docs in man & TexInfo formats, includes InfoView & man gcc258-4.lha extra binaries in /bin (UN*X utilities). gcc258-5.lha Full Gcc sources amiga ready. gcc258.lha update from 2.5.6+ to 2.5.8. Name What Where ---- ---- ----- COPYING GNU LICENSE, read!! All archives README.2.5.8 this file All archives NEWS_gcc-2.5.8 What's new in gcc-2.5.8 gcc258-1.lha NEWS_libg++-2.5.3 What's new in libg++-2.5.3 gcc258-2.lha Installer Commodore installer utility gcc258-1.lha GCC-Install Installer script to configure gcc gcc258-1.lha InfoView this is a viewer for .info-* files as you find them in info/. Please read gcc258-3.lha InfoView.info thru this README before trying to use gcc258-3.lha it, you need to setup some things for it to work! envarc/ global environment variables you should have set when using this programming gcc258-1.lha environment include/ non-amiga specific C/C++ headers gcc258-1.lha os-include/ amiga specific C/C++ headers. Add gcc258-1.lha Commodore headers!! os-lib/ amiga specific libraries gcc258-1.lha lib/g++-include/ C++ headers (for libg++) gcc258-2.lha info/ manuals for the compiler, libg++, etc. gcc258-3.lha ixpipe/ a pipe handler needed by the library gcc258-1.lha libauto/ experimental lib to open shared libs gcc258-1.lha at startup dev/ empty as for now, but needed. gcc258-1.lha libs/ ixemul.library and ixemul.trace gcc258-1.lha rexx/ ARexx wrappers for gcc and g++ gcc258-1.lha src-patches/ source patches gcc258-1.lha etc/ this is /etc, and contains a config gcc258-1.lha file for `man' lib/ normal (not base relatives) libraries gcc258-1.lha gcc258-2.lha lib/gcc-lib/ home of compilers called by gcc gcc258-1.lha gcc258-2.lha bin/ this is /bin, and contains all gcc258-1.lha binaries of this distribution that gcc258-2.lha are meant to be directly invoked by gcc258-3.lha the user (contrary to the executables gcc258-4.lha in compilers/, that are meant to be invoked by a driver program like gcc) geninline/ Perl scripts to generate inline headers gcc258-1.lha and -lamy glue man/ this is the root for tons of man pages gcc258-3.lha ============== Inline-Headers ============== Since I'm not able to redistribute amiga header files, you will have to get them directly from Commodore, unless you're an official registrated Amiga developper. In order to generate inline-headers, follow these steps (provided amiga headers and fd files are in os-include). You don't have to generate them if you use OS3.1 (40.13 headers). CLI> Assign INCLUDE: GCC:os-include CLI> Assign FD: INCLUDE:fd CLI> Makedir INCLUDE:inline CLI> cd USR:bin/geninline CLI> gen31 This will create all inline-headers. If you have 2.0 headers, use gen20 instead, if you have 3.0, use gen30, if you have 6.4, send it to me ;-) NOTE: perl scripts do not handle correctly AmigaDOS include files, which seems to mean they are somewhat broken. If someone could work on this... ============ Installation ============ 1) If this is your first installation of GCC: CLI> cd Disk_with_lot_space: CLI> lha x gcc258-x.lha (where x stands for 1 through 4, 5 if you need sources) Now from the Workbench, invoke GCC-Install. This is what people wanted, e.g. an Installer based configuration script for GCC. Thus you only have to unpack archives and the installer script will do the rest, creating environment variables, adding assigns to user-startup, copy library and handler. BTW: Installer and Installer project icon (c) Copyright 1991-93 Commodore-Amiga, Inc. All Rights Reserved. Reproduced and distributed under license from Commodore. 2) If you "upgrade" your gcc environment from v2.x.x, well just erase gcc directory then go back to step 1. Too many stuff have changed. Just make sure you've backuped all what you've added to the GCC tree before. Note that you MUST use ixemul.library revision 45 and NOT revision 47, has the latter doesn't check for ENV: ===== ARexx ===== The provided ARexx scripts have been contributed by Loren J. Rittle. If you like ARexx, they're an alternate way of calling gcc. They automatically make sure you're using a large enough stack setting, and enable you to compile C++ programs with less obscure options. This approach is furthermore useful if you're not able to use the g++ /bin/sh script. =============== gcc versus gccv =============== gccv stands for a gcc using vfork() to spawn a new process, and then calling the new execve() function in ixemul.library to call its subcompilers. Gcc continues to using the more system friendly RunCommand() function in dos.library to start subcompilers. Gccv has the advantage of being able to work with interprocess pipes, thus (provided you have the memory ;-)), you're able to do gccv -pipe your_program.c causing the preprocessor (cpp), the C-compiler (cc1) and the assembler (as) to run at the same time, passing intermediate files thru internal pipes instead of using temporary files. As long as you don't want that feature (ok, playing with certain make tools also requires gccv) you're safe using gcc. ========== stack size ========== You need to have a 50.000 stack size in order to compile with GCC. This should be enough for most projects. Note than while recompiling gcc with itself it didn't take more than 71KB stack. But stack can grow due to source complexity. Don't be afraid of it. To use ar and/or ranlib, you should have a much larger stack, between 200.000 and 300.000, depending on library size. =========== C++ headers =========== Because AmigaDOS way of handling filenames, making no difference if file has capitals or not, you'll certainly run into problems with some headers, including String.h and normal string.h. My suggestion for now is to add to C++ "faulty" header filename an "_" in front of it, thus String.h would become _String.h. Sorry for inconvenience. (thanks to Dirk Nehring for reminding me this anoying "feature"). ======= Patches ======= Includes: Jörg Höhle hoehle@inf-wiss.uni-konstanz.de There is a conflict between the Amiga and the UNIX definition of the timeval structure. Markus Wild proposed in gcc233 to patch the Amiga devices/timer.h file so that it loads the UNIX sys/time.h file (and thus tons of other files) (see os-include/devices/timer.mwild.path). I suggest that sys/time.h and devices/timer.h be modified to detect each other and use whichever structure was declared first (see os-include/devices/timer.jch.patch). The supplied include/sys/time.h file works this way. You can apply the patches with the program patch or by hand. The original devices/timer.h file is copyrighted by Commodore-Amiga and not included. The sys/types.h defined BPTR causing conflicts with Amiga includes. I removed the BPTR definition from sys/types.h and sys/proc.h. In gcc233, there was no such definition either. I moved the ixemul.h file from include/ to the ixemlib/library/ directory. The ixemlib/ directory could contain the ixemul.library sources. In the ixemul source tree, ixemul.h is found in the library/ directory. Furthermore I patched it so that it is now able to compile a working ixconfig. It was broken (because of the broken ixemul.h) in gcc252/3/4. It previously worked in gcc233 but didn't provide the -e option. The ixemlib/library/version.h is an empty fake. I don't have a newer ixemul.h file. Never ixemul.library versions are said to always ignore the global AmigaDOS environment. There's yet another minor patch I'd like to suggest: *** include/stdlib.h.orig Mon Aug 10 15:28:54 1992 --- include/stdlib.h Fri Dec 09 17:12:38 1993 *************** *** 72,76 **** --- 72,80 ---- void *calloc __P((size_t, size_t)); div_t div __P((int, int)); + #if 0 void volatile exit __P((int)); + #else /* new ANSI-C interpretation */ + typedef void exit_t __P((int)); volatile exit_t exit; + #endif void free __P((void *)); char *getenv __P((const char *));