This is the port of gcc-3.0.3 for DJGPP. Please read this file up to end (maybe skipping sections You don't need, for example You don't need to read how to build gcc-3.0 from sources if You only intend to use binary archives). Also consult DJGPP documentation and FAQ where needed. Requirements to use this binary release: DJGPP-2.03 or above (If You are still using earlier version then please upgrade immediatelly). binutils-2.11.2 or above. Command line option -mno-bnu210 to provide compatibility with binutils-2.8.1 or 2.9.1 is no more supported Requirements to build gcc-3.0.3 from sources: Long filename support. I built it in DOS session under Win98SE. Win95 and (I hope) WinME should be Ok. I myself haven't tested whether it can be build under Win2k or WinXP. at least 128Mb of RAM for building under Win9X (Amount of available DPMI memory for DOS session should be set to auto). at least DJGPP-2.03 required other GNU utilities (see below) Source archives =============== Archive gcc303s2.zip contains script which modifies original GCC-3.0.3 and sources for DJGPP. You don't need it unless You want to recreate GCC source archive for DJGPP. If You are using this archive and original sources of gcc-3.0.3.tar.gz, then You don't need gcc303s.zip. The source archive gcc303s.zip contains all the sources to build all compilers (C, C++, Objective C, GNU Fortran) and also C++ and Fortran libraries (libstdcxx.a, libgpp.a and libg2c.a). libg++ is no more supported. Most users don't need source archives at all. Binary archives ================ Binary archives are split into 5 parts: gcc303b.zip : The gcc.exe driver program and the C compiler. It also contains the documentation. gpp303b.zip : The C++ compiler and libstdcxx.a together with needed header files objc303b.zip : The Objective C compiler and libobjc.a and the needed header files. g77303b.zip : GNU Fortran compiler and libg2c.a and g2f.h. The archive gcc303b.zip is required by all other binary packages Binary packages includes following documentation files: Archive gcc303b.zip: info/gcc.i* - the use and the internals of the GNU compiler info/cpp.i* - documentation of the GNU C preprocessor. info/cppinternals.i* - internals of the GNU C Preprocessor. (NEW: use install-info to add it to info/dir) Archive gpp303b.zip: gnu/gcc-3.03/libstdcxx/* - some documentation of libstdc++-v3 (HTML and text formats) Archive g77303b.zip: info/g77.i* - documentation of the GNU Fortran compiler Before you install gcc-3.0.3 binaries ====================================== You should remove previous installation of gcc or egcs completely (unless You really know what You are doing). Make sure You don't have following files from earlier versions (relative paths againt to DJGPP directory are given): bin/cc1.exe (from gcc272b.zip or gcc2721b.zip) bin/cc1plus.exe (from gpp272b.zip or gpp2721b.zip) bin/f771.exe (from g7705XXb.zip, XX are 2 digits) lib/libgcc.a (from gcc272b.zip or gcc2721b.zip) lib/libobjc.a lib/specs (from djdev201.zip or djdev202.zip) lib/libstdcxx.a lib/libgpp.a Following packages are required for binaries: binutils-2.11.2 or above (Versions before 2.11 will not work) DJGPP-2.03 (djdev203.zip) or above. Installing binaries of gcc-3.0.3 ================================= Needed archives for different programing languages C : gcc303b.zip C++ : gcc303b.zip, gpp303b.zip Fortran : gcc303b.zip, g77303b.zip Of course for ALL languages You also need at least binutils (bnu2112b.zip or newer) and djdev203.zip (or newer when it will be released) Unzip all the zip files from that directory, preserving the directory structure. For example: pkunzip -d djdev203 or unzip386 djdev203 NOTES: I suggest to avoid using command line option -fomit-frame-pointer with gcc-3.0.3 as this option is rather broken. 1. Only long filenames ---------------------- Unzip the binaries with an unzip program, which can restore the long filenames stored in the zip archive. 2. Only short filenames ----------------------- Unzip the binaries with an unzip program which doesn't know about long filenames, or if your unzipper knows about them, please follow first the steps described in the DJGPP FAQ in the section about setting the NameNumericTail to 0 __BEFORE__!!! unzipping the archives. 3. Long and short filenames at the same time -------------------------------------------- Use an unzip program which can restore the long filenames and follow the instructions under 2. when the unzipper knows about long filenames. Note for users of GNU Fortran compiler ====================================== If You are getting assembler warnings like: foo.s: Assembler messages: foo.s:1011: Warning: rest of line ignored; first ignored character is `+' foo.s:1012: Warning: rest of line ignored; first ignored character is `+' when compiling FORTRAN sources, please use stabs debugging info instead of COFF one, for example: gcc -c -O2 -gstabs foo.f -o foo.o or gcc -c -O2 -gstabs+ foo.f -o foo.o Rebuilding gcc-3.0.3 from the sources ====================================== Requirememts ------------ - Long filename support is required. It means You should build gcc-3.0.3 under Win95 or Win98. I myself have not tested building under Win2k and WinXP - Much of free disk space (perhaps 300Mb or more, especially if You are using FAT16). - 128Mb RAM (or more) to build gcc-3.0.3 under Win9X. DPMI memory amount for DOS session should be set to "Auto" as genattrtab requires more than 64Mb to run. - Many GNU packges. Please check whether You really have them: bsh204b.zip GNU BASH 2.0.4 or above. dif272b.zip fil316b.zip or newer find41b.zip grep24b.zip gwk306b.zip or newer mak3791b.zip sed303b.zip or newer shl112b.zip txt122b.zip or newer txi40b.zip tar112b.zip bnu2112b.zip binutils-2.11.2 or above working GNU C compiler (perhaps not earlier than gcc-2.95). If You modify some source files You may also need acnf213b.zip (using autoconf-2.50 is not tested and is not recommended) amak14b.zip (using autoconf-1.5 is not tested and is not recommended) You need autoconf and automake also if You are using gcc303s2.zip. However it's normally not needed for most users who builds gcc-3.0.3 from contents of gcc303s.zip. Usually newer versions of these packages should also work unless otherwise stated above - INFO-ZIP binary (compiled with DJGPP v2!!!) is needed for using build.bat to create binary distrubution archives. There is no problems to compile it. See http://www.info-zip.org for additional informtion about INFO-ZIP. You can find DJGPP compiled binary there. - Working DJGPP installation of course: DJGPP-2.03 and above (I applied Win2k related patches for DJGPP v2.03 from http://clio.rice.edu/djgpp/win2k/main.htm); binutils-2.11.2 or above, working gcc installation (gcc-2.95 or above) - You should have sh.exe in DJGPP bin directory as symbolic link to bash.exe (type 'ln -s bash.exe sh.exe' in that directory) Extracting the sources ---------------------- At first you should unzip the archive gcc303s.zip. The sources are _NOT_ the complete sources like the original gcc-3.0.3 distribution. I have removed many files to save disk space which are not needed for the DJGPP port. However I left configuration of other machines in to make archives usable to build cross-to-DJGPP compilers Compiling gcc ------------- Directory gnu/gcc-3.03 contains all sources of gcc-3.0.3 Sources are NOT configured. Change to directory gnu/gcc-3.03/build.djg and configure sources by running script djconfig.sh. sh djconfig.sh When this is done You can build gcc-3.03 by running script djmake.sh Under Win9X You'll have to restart it some times when it will crash due to Win9X DPMI descriptor leaks. You may use redir to get output in file. sh djmake.sh bootstrap When this sucessfully ends run script djinsttmp.sh which installs all into directory gnu/gcc-3.03/install.djg After that change to this directory and run script makepkg.sh to create binary distribution packages Installing newly compiled gcc ----------------------------- It's recommended to install binary packages which are generated bu makepkg.sh Available resources =================== See also following URL for additional information: gcc: http://gcc.gnu.org/gcc-3.0/ Reporting bugs ============== If you found a bug in GCC-3.0.3 (gcc, g77, libstdc++, etc) please report it to the GCC bug adresses and _NOT_ (or at least not only) in the DJGPP news group. But if you think you found a bug in the DJGPP related things, then please report it in comp.os.msdos.djgpp (the news group) or mail it to djgpp@delorie.com, which is the gateway to the news group. Some possible situations: - gcc says 'Internal compiler error' (or something similar) more likely it is error of gcc if it is reproducible. It would be nice to test on some other system (e.g. Linux) and also with different version of compiler if possible and submit report to gcc bug address. - gcc crashes or freezes. In this situation it's hard to guess where is the problem. It may be problem with gcc itself but it may be also DJGPP specific one. Please email me directly only in rare cases, if you think it is only of interest to me, since I'll see the reports in DJGPP mailing list. Thanks to ========= To all who have contributed new features, test results, bugfixes to GCC (see http://gcc.gnu.org/thanks.html) and also who helped with DJGPP port of GCC-3.0.3 Have fun with gcc Andris Pavenis