===== TDM-GCC Source Distribution README =====
>>>>> COPYING
To the extent possible under law, the author(s) have dedicated all copyright and
related and neighboring rights to this software to the public domain worldwide.
This software is distributed without any warranty.
You should have received a copy of the CC0 Public Domain Dedication along with
this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
>>>>> PACKAGE CONTENTS
This is the base source distribution for all editions of TDM-GCC. It includes a
Makefile with targets for the TDM and TDM64 editions of GCC and all support
libraries, .sh script files that invoke the Makefile with appropriate arguments
for each TDM-GCC edition, and patches for the following items:
GCC:
* [gcc/buildsys.patch] Minor build system hacks for building GCC in MSYS
* [gcc/make-rel-pref.patch] A patch to fix make_relative_prefix() semantics and
a little-encountered relocation bug
* [gcc/lfs.patch] Enable large file support in libstdc++
* [gcc/libgomp.patch] Allow libgomp to interoperate with user-generated
pthreads
* [gcc/libgcceh.patch] Reintegrate libgcc_eh into libgcc
* [gcc/defstatic.patch] Make static versions of libgcc and libstdc++ the
default, instead of the shared versions
* [ada-lfs.patch] Allow Ada to build for older versions of the MSVCRT without a
stat64 equivalent.
* [ssp-mingw32.patch] Allow libssp to build for older versions of the MSVCRT
without CryptAcquireContext.
* [gcc/relocate.patch] Make GCC fully relocatable, not searching any fixed
paths that aren't relative to the current installation path
* [gcc/eh_shmem.patch] Allow exceptions from DLLs without shared GCC libraries
* [gcc/threads.patch] Support winpthreads for the 32-bit mingw32 target and
use a static version of winpthreads
* [gcc/more-gnattools.patch] Enable building gnatdll for mingw* targets
* [gcc/windows-lrealpath.patch] Allow forward slashes in libiberty as path
separators on Windows
* [gcc/mutex-leak.patch] Fix memory leak when using C++11 mutexes
* [lto-binary.patch] Fix LTO reader to open files in binary mode
* [xmmintrin.patch] Add C++ include guards to xmmintrin.h
* [crtbegin.patch] Remove static modifier from __EH_FRAME_BEGIN__ to allow
visibility across compilation units
* [gnat-implibs.patch] Create import libraries for the DLL versions of libgnat
and libgnarl
* [mcrtdll.patch] Allow specifying newer MSVCRT versions with -mcrtdll=
* [dw2-reg-frame.patch] Prevent DW2 frame register/unregister from getting
mistakenly stripped
* [gcc/dw2.patch] Modify the GCC version string when building the DW2 unwinding
flavor
* [gcc/libs64.patch] Append "_64" to names of 64-bit runtime DLLs
GMP:
* [gmp/gmp-4.3.2-w64.patch] Fixes for GMP 4.x under x86_64-w64-mingw32
winpthreads:
* [winpthreads/fullstatic.patch] Add a preprocessor flag to force non-DLL
function declarations even in the presence of DLL compilation
* [winpthreads/lib64.patch] Append "_64" to name of 64-bit runtime DLL
* [winpthreads/mingw32.patch] Make winpthreads buildable for mingw32
* [winpthreads/shmem.patch] Allow sharing pthreads handles among DLLs and EXEs
even when compiled statically
>>>>> ADDITIONAL REQUIREMENTS
In order to duplicate the build process used for TDM's binaries, you will need
the following packages:
* For the TDM edition, the MinGW project's "binutils", "mingwrt" and "w32api"
bin and dev packages
* For the TDM64 edition, the GNU binutils sources, the MinGW-w64 project's
runtime sources, expat sources, and GDB sources
* The GCC source package
* The GMP, MPFR, and MPC sources
* For support for character sets other than UTF-8, the libiconv sources
* For support for the Graphite loop optimizations, the ISL and CLooG sources
* For OpenMP and pthreads support, the winpthreads sources from the MinGW-w64
libraries tree
All necessary packages are available from the same download site as this
package, or from the packages' original download sites.
>>>>> BUILD NOTES
This TDM-GCC binary distribution was built as a native bootstrap in Windows 7
64-bit using the official MinGW toolchain and the MSYS environment. The build
scripts that are included in this source package will therefore probably not
work in a different environment (such as Cygwin or GNU/Linux) without some
modification.
Generally, building GCC consists of first building its support libraries (gmp,
mpfr, mpc, isl, cloog, libiconv, and winpthreads), combining these with
binutils and the runtime API into the "staging prefix", and then building GCC
itself. GCC is built to expect it will be installed to the staging prefix but
for the installation step is actually staged into a different directory.
Building the TDM edition typically looks like this:
* [Extract all sources to /crossdev/src]
* [Copy or build a previous MinGW installation to a "build toolchain"]
* [Extract the binutils, mingwrt, and w32api bin/dev packages to the prefix]
* ./tdm32.sh
Building the TDM64 edition typically looks like this:
* [Extract all sources to /crossdev/src]
* [Copy or build a previous multilib MinGW-w64/GCC installation to a "build
toolchain"]
* [Ensure the prefix is empty]
* ./tdm64.sh
* Fix up the staging toolchain by getting rid of the support libraries' headers
and .a files and adding the support library DLLs into
libexec/gcc/<target>/<version>.
* ./tdm64.sh gdb-pkg-install