This is the DJGPP port of gcc-4.9.3

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-4.9.3 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-@DJVER@.
    -  binutils-2.22 or above (Earlier versions may NOT work and are not tested)

Requirements to build gcc-4.9.3 from sources:

Source archives
===============


Archive djcross-gcc-4.9.3.tar.bz2 contains script which modifies
original gcc-4.9.3 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-4.9.3.tar.gz, then You don't
need gcc493s.zip. Running these scripts under DJGPP has not been
tested for a long time and is unlikely to succeed.
    
The source archive gcc493s.zip contains all the sources to build
all compilers (C, C++, Objective C, Objective C++, GNU Fortran) and also C++
and Fortran libraries (libstdcxx.a, libgpp.a and libg2c.a). 

Most users don't need source archives at all.

Binary archives
================

Binary archives are split into 5 parts:

  gcc493b.zip  : The gcc.exe driver program and the C compiler.
                 It also contains the documentation.

  gpp493b.zip  : The C++ compiler and libstdcxx.a together 
                 with needed header files. Please note that one must
                 recompile all C++ sources built with any earlier GCC version

  objc493b.zip : The Objective C and Objective C++ compilers and 
                 libobjc.a and the needed header files.

  gfor493b.zip : GNU Fortran compiler

  ada493b.zip  : GNU Ada compiler

The archive gcc493b.zip is required by all other binary packages

Binary packages includes following documentation files:
  
  Archive gcc493b.zip:  
        info/gcc.info - the use and the internals of the GNU compiler
        info/cpp.info - documentation of the GNU C preprocessor.
        info/cppinternals.info  - internals of the GNU C Preprocessor.
        info/gccinstall.info
        info/gccint.info
                (NEW: use install-info to add it to info/dir)
  Archive gpp493b.zip:
        gnu/gcc-4.93/libstdcxx/* - some documentation of libstdc++-v3
                (HTML and text formats)
  Archive gfor493b.zip:
        info/gfortran.info - documentation of the GNU Fortran compiler


Installing binaries of gcc-4.9.3
=================================

Needed archives for different programming languages
        C                       : gcc493b.zip

        C++                     : gcc493b.zip, gpp493b.zip

        Fortran 95              : gcc493b.zip, gfor493b.zip

        Objective C             : gcc493b.zip, objc493b.zip

        Objective C++           : gcc493b.zip, objc493b.zip

        Ada                     : gcc493b.zip, ada493b.zip

Of course for ALL languages You also need at least binutils (bnu222b.zip
or newer) and @DJDEV@.zip (or newer when it will be released)

Unzip all the zip files from that directory, preserving the
directory structure.  For example:

        pkunzip -d @DJDEV@
or
        unzip386 @DJDEV@


NOTE:   For debugging GDB version 7.7.1 or newer is recommended. 
        (gdb-6.3 is not released for DJGPP yet though).


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 C++ IO classes fstream, ifstream, ofstream
============================================================

There is a regression against earlier versions of GCC (gcc-2.95.3 and
earlier): Member functions tellp(), tellg(), seekp() and seekg()
are broken when stream is opened not in binary mode. If You are going
to use any similar functions You should open stream in binary mode.

Don't ask me when it will be fixed as I don't know that. I'm also 
not sure I'll spend much time trying to fix that.


Rebuilding gcc-4.9.3 from the sources
======================================

Requirements
------------

-  Long filename support. I built it in DOS session under Windows Vista
   Business SP3. Other 32 bit Windows versions beginning with Win95
   should be hopefully OK. I have not however tested that myself.

-  plenty of physical RAM available. I guess that 1 GB should
   be enough (I had more on build machine)

-  Much of free disk space: the total size of all directories after build
   was about 3 GB. Perhaps one need more to be safe.

-  Amount of available DPMI memory for DOS session should
   be set to auto.

-  On windows Vista (and perhaps later versions) a registry hack to
   allow DPMI clients to use more that 32 MB of memory must be used

-  DJGPP version v2.05 or above

-  many GNU utilities and libraries (the list may be incomplete)

        last version of DJGPP port of bash-2.0.5b
        GNU Diffutils 2.8 or above
        GNU Fileutils-4.1
        GNU Find 4.1.7 or above
        GNU grep 2.5.1 or above
        GNU Awk 3.1.1 or above
        GNU Make 3.80 or above
        GNU Sed 4.0.7 or above
        GNU shell utils 2.0.11
        GNU Textutils 2.0
        GNU Texinfo 4.8 or above
        GNU tar 1.1.2 or above
        GNU binutils 2.22 (required, older versions cannot be used!!!)
        recent GNU GMP 5.0.1 version (versions 5.0.X or newer are OK)
        recent MPFR versions (versions 3.0.0 or newer are OK)
        recent MPC versions (versions 1.0.0 or newer are OK)
        Zlib-1.2.5 or above (Warning configure does not check for presence
             one only gets build error later)
        working GNU C compiler (perhaps not earlier than gcc-4.1). 

-  one may need to increase DOS transfer buffer size to 24 KB or
   32 KB for some executables (GNU Make and ld) to optimize lower
   memory use as having to allocate additional lower memory block
   for long parameter lists when invoking child process wastes
   much of memory. I had transfer buffer size increased to 24 KB
   for GNU Make only 

-  INFO-ZIP binary (compiled with DJGPP v2!!!) is needed for using build.sh 
   to create binary distribution archives. There is no problems to compile 
   it. See http://www.info-zip.org for additional information
   about INFO-ZIP. You can find DJGPP compiled binary there. 

-  Working DJGPP installation of course:
   -  DJGPP v2.05 require

Earlier requirement to have rebuilt stubify.exe with default stack size
increased to 1.5 MB or more is no more required as the stack size
reserving is now done using _stklen where required. 

If You modify some source files You may also need
        autoconf-2.64
        automake-1.11
        (No ports available for DJGPP yet. I did all patching GCC sources
        and updating autoconf and automake related stuff in Linux)
        
Building using using DJGPP v2.03 patchlevel 2 is not supported and is expected
to fail.

-  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 gcc493s.zip. The sources are _NOT_
the complete sources like the original gcc-4.9.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 and DJGPP hosted cross-compilers
(I haven't tested it).


Compiling gcc
-------------

Directory gnu/gcc-4.93 contains all sources of gcc-4.9.3

Sources are NOT configured. 
        
Change to directory gnu/build.gcc and configure sources
by running script djconfig.sh. 

        sh djconfig.sh

When this is done You can build gcc-4.9.3 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 successfully ends run script djinsttmp.sh which installs
all into directory gnu/install.gcc

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 
by makepkg.sh



Available resources
===================

See following URL for additional information:
gcc:              http://gcc.gnu.org



Reporting bugs
==============

If you found a bug in gcc-4.9.3 (gcc, gfortran, libstdc++, etc) please report it to 
the GCC bug addresses and to the DJGPP mailing list (djgpp@delorie.com). We may not
notice bug reports sent to GCC bug reporting system only due to large amount of
other bugs there. 

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, bug-fixes to GCC
(see http://gcc.gnu.org/thanks.html) and also who helped with DJGPP port of 
gcc-4.9.3


Have fun with gcc

Andris Pavenis <andris.pavenis@iki.fi>
