Short: gcc-2.5.7 update to 2.5.6 full distribution (gcc-2.5.7/libg++-2.5.2) Type: dev/gcc Uploader: phb@colombo.telesys-innov.fr Author: phb@colombo.telesys-innov.fr This directory contains the version 2.5.7 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. This is still a beta test release, but aside from the Objective C run-time, it ought to be close to reliable. The GNU C compiler is free software. See the file COPYING for copying permission. ======= WARNING ======= This version of Amiga GCC-2.5.7 should be considered as BETA, as GCC itself is still BETA since 2.0. It has succesfully compiled itself 3 times (up to stage 3) and was used to compile some utilities such as perl 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 ======= 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 ========================== What's new in this release ========================== -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. ======= 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. If you're interested in the sources required to rebuild gcc, get the original GNU sources (gcc-2.5.7.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). Then apply the gcc patch-file in src-patches/, and configure for `amigados'. Same thing goes for libg++-2.5.1. If you want (ie. you don't have to) get libg++-2.5.1.tar.gz (again, from the same ftp site you got this distribution from) 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). ===== Where ===== **** GCC 2.2.2, 2.3.3, 2.4.5, 2.5.2, 2.5.3, 2.5.4 & 2.5.7 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: - gnu.prep.ai.mit.edu 18.71.0.38 in /pub/gnu - Ramses The Amiga Flying BBS in Topic AmigaUnix/Unix/Linux/NetBSD, Areas Gnu ====== 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.7 is splited into 5 archives: gcc256-1.lha basic gcc distribution, all what you need to begin is there. gcc256-2.lha C++, Objective-C binaries, headers and libraries. gcc256-3.lha documentation in man & TexInfo formats, includes InfoView & man gcc256-4.lha extra binaries in /usr/bin (UN*X utilities). gcc256to257.lha update from 2.5.6 to 2.5.7. Name What Where ---- ---- ----- COPYING GNU LICENSE, read!! All archives README.2.5.7 this file All archives NEWS_gcc-2.5.7 What's new in gcc-2.5.7 gcc256-1.lha NEWS_libg++-2.5.2 What's new in libg++-2.5.1 gcc256-1.lha Installer Commodore installer utility gcc256-1.lha GCC-Install Installer script to configure gcc gcc256-1.lha InfoView this is a viewer for .info-* files as you find them in info/. Please read gcc256-3.lha InfoView.info thru this README before trying to use gcc256-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 gcc256-1.lha environment include/ non-amiga specific C/C++ headers gcc256-1.lha os-include/ amiga specific C/C++ headers. Add gcc256-1.lha Commodore headers!! os-lib/ amiga specific libraries gcc256-1.lha lib/g++-include/ C++ headers (for libg++) gcc256-2.lha info/ manuals for the compiler, libg++, etc. gcc256-3.lha ixpipe/ a pipe handler needed by the library gcc256-1.lha libauto/ experimental lib to open shared libs gcc256-1.lha at startup dev/ empty as for now, but needed. gcc256-1.lha libs/ ixemul.library and ixemul.trace gcc256-1.lha rexx/ ARexx wrappers for gcc and g++ gcc256-1.lha src-patches/ source patches gcc256-1.lha etc/ this is /etc, and contains a config gcc256-1.lha file for `man' lib/ normal (not base relatives) libraries gcc256-1.lha gcc256-2.lha lib/gcc-lib/ home of compilers called by gcc gcc256-1.lha gcc256-2.lha bin/ this is /bin, and contains all gcc256-1.lha binaries of this distribution that gcc256-2.lha are meant to be directly invoked by gcc256-3.lha the user (contrary to the executables gcc256-4.lha in compilers/, that are meant to be invoked by a driver program like gcc) geninline/ Perl scripts to generate inline headers gcc256-1.lha and -lamy glue man/ this is the root for tons of man pages gcc256-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 gcc256-x.lha (where x stands for 1 through 4). 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 *));