The Advance Guide to
    Building the Mingw-w64 x86_64-w64-mingw32 cross-compiler

== About this document ==

This document describes more advanced methods in building the mingw-w64
cross compiler. It also includes details about the toolchain
dependencies and relevant options that can be passed to the GCC
configure.

The commands are run under a MSYS/MinGW setup unless specified otherwise.
Using Cygwin or any other POSIX compatible shell should work.

== Targeted audience ==

This document assumes readers are familiar with the UNIX Command Line
and building the GNU toolchain in general, but would want a more fine
grained control over the capabilities of the cross compiler. 

For a basic guide on building the mingw-w64 toolchain, please refer to
"mingw-w64-howto-build.txt".

== Notes about LTO ==

LTO is curently disabled for non-ELF targets, that includes MinGW and
Cygwin. libelf can't read PE/COFF objects correctly, so it doesn't do
anything. You may skip building libelf and LTO. Using --enable-lto with
GCC configure may result in an error.

== Version changes ==

Date /        Version /    Author
2009-10-09    1.0          Jonathan Yong <jon_y[a]users.sourceforge.com>
2010-01-03    1.1          Jonathan Yong <jon_y[a]users.sourceforge.com>
2010-05-18    1.11         Jonathan Yong <jon_y[a]users.sourceforge.com>

== Table of Contents ==

	* Some Basic Info about mingw-w64                         [SBSCINF]
	* Host Support Libraries                                  [HOSTLIB]
	    * The GNU MP Bignum Library                           [BGMPLIB]
	    * MPFR                                                [BMPFRLB]
	    * Multiprecision                                      [BMPCLIB]
	    * The Parma Polyhedra Library                         [BPPLLIB]
	    * The Clunky Loop Generator (PPL port)                [BCLGLIB]
	    * Libelf                                              [BELFLIB]
	* Target Support Libraries                                [TGTSPLB]
	    * pthreads-win32                                      [PTHRW32]
	* Building the Multilib Cross MinGW-w64 GCC the
	    lazy way(With ADA support and libgomp)                [LAZYW64]
	    * ADA Bootstrap Phase                                 [ADABOOT]
	    * MinGW-w64 cross Binutils                            [CRSBINU]
	    * Install mingw-w64 Headers                           [MGW64HD]
	    * Setup Symlinks                                      [SETSYML]
	    * Build Core GCC                                      [BCORGCC]
	    * Build the mingw-w64 CRT                             [BMGWCRT]
	    * Build libgcc                                        [BLIBGCC]
	    * Build pthreads                                      [BPTHR32]
	    * Continue the build                                  [CTNTBLD]

You can search the keys (i.e. [BMPCLIB]) to jump to that section.

== Some Basic Info about MinGW-w64 == [SBSCINF]

MinGW-w64 began as a fork of mingw.org MinGW to support 64bit windows as
a target.

Canonical Triplet info:
	mingw.org MinGW:    i686-pc-mingw32
	mingw-w64 64bit:    x86_64-pc-mingw32   (obsolete triplet)
	                    x86_64-w64-mingw32  (preferred triplet)
	mingw-w64 32bit:    i686-pc-mingw32     (mingw.org compatibility mode)
	                    i686-w64-mingw32    (preferred triplet)

== Host Support Libraries == [HOSTLIB]

These libraries are used by GCC on the "host" side. It means that these
should be built for the system that will run the newly built GCC.

=== The GNU MP Bignum Library (GMP) === [BGMPLIB]

Homepage:               <http://gmplib.org/>
Depends on:             None
Depended by:            MPC, MPFR, PPL, CLooG
GCC dependency type:    Hard (GCC won't build without it)

GMP is primarily written in C and assembly, but it comes with C++ bindings.
The asm part is selected by the $host_cpu detected by configure. If your
platform is not detected properly, you can use --host=none-none-none to
disable asm optimizations. Be sure to set the correct CC, CXX, NM, RANLIB
and AR variables.

The C++ bindings are not built by default, but it is required by PPL. To fix
this, use "--enable-cxx" and "CPPFLAGS=-fexceptions". PPL needs the
-fexceptions part to throw exceptions properly, but it is not strictly
required.

On Windows hosts, only static or shared builds can be used at a time, but not
both. This is reasoned by the incompatible header set used by static/shared
builds. If you do use static builds, you should build any libs that depend on
it as static to prevent accidentally exporting GMP symbols in other dlls.

=== MPFR === [BMPFRLB]

Homepage:               <http://www.mpfr.org/>
Depends on:             GMP
Depended by:            None
GCC dependency type:    Hard (GCC won't build without it)

MPFR isn't particularly fussy about configure options, so the usual:
	./configure
	make
	make install
is fine.

=== Multiprecision (MPC) === [BMPCLIB]

Homepage:               <http://www.multiprecision.org/>
Depends on:             GMP
Depended by:            None
GCC dependency type:    Hard (GCC won't build without it)

MPC isn't particularly fussy about configure options, so the usual:
	./configure
	make
	make install
is fine.

=== The Parma Polyhedra Library (PPL) === [BPPLLIB]

Homepage: <http://www.cs.unipr.it/ppl/>
Depends on:     GMP
Depended by:    ClooG
GCC dependency type: None (GCC does not use it directly)

PPL requires that GMP be built with C++ bindings (--enable-cxx) and
-fexceptions (to allow exceptions to be thrown across GMP).

=== The Clunky Loop Generator (PPL port) === [BCLGLIB]

Homepage: <http://repo.or.cz/w/cloog-ppl.git>
Depends on:             GMP, PPL
Depended by:            None
GCC dependency type:    Soft (GCC can build without it)
If you are planning to use CLooG with static PPL, remeber to add
'--with-host-libstdcxx="-lstdc++ -lsupc++"' to configure.
CLooG needs to be told to use the PPL backend, so use:
	./configure --with-ppl=<PPL install prefix>
	make
	make install

=== Libelf === [BELFLIB]

Homepage: <http://www.mr511.de/software/english.html>
Depends on:             None
Depended by:            None
GCC dependency type:    Soft (Required for GCC lto support)
Libelf isn't particularly fussy about configure options, so the usual:
	./configure
	make
	make install
is fine.

== Target Support Libraries == [TGTSPLB]

Target support libraries are for use with mingw-w64 itself. It should not
be used by the host directly. Hence the target libs will need to be compiled
with a compiler targeting mingw-w64.

=== pthreads-win32 === [PTHRW32]
Homepage: <http://sourceware.org/pthreads-win32/>
Depends on:             None
Depended by:            None
GCC dependency type:    Soft (Required for GCC libgomp support)

Download instructions:
	cvs -d :pserver:anoncvs@sourceware.org:/cvs/pthreads-win32 login
	{enter ``anoncvs'' for the password}
	cvs -d :pserver:anoncvs@sourceware.org:/cvs/pthreads-win32 checkout pthreads

Patch: <http://sourceware.org/ml/pthreads-win32/2009/msg00030/w64sup.patch>

Note: pthreads-win32 does not come with a autotools based build system. It
    uses a Makefile "GNUmakefile" to build the pthreads dll.

Note: To allow win64 support, apply the patch from the mailing list.

General Build and install instructions:
	Step 1) type "make clean GC CROSS=x86_64-w64-mingw32-"
		Note: The CROSS variable specifies your win64/win32 toolchain
		    triplet prefix. To prevent dll clobbering by 32bit/64bit
		    builds having the same names, you can edit GC_DLL in the
		    GNUmakefile (line 440) to produce differently named dlls
		    based on its "bitness"
		    (eg. pthreadGC2-64.dll, pthreadGC2-32.dll).
	Step 2) copy pthreadGC2.dll (or $GC_DLL) to your path
	Step 3) Install the lib by copying pthreadGC2.dll as libpthread.a to
	    your GCC libdir (eg. PREFIX/x86_64-w64-mingw32/lib)
	Step 4) Copy pthread.h, sched.h and semaphore.h to the GCC include dir
	    (eg. PREFIX/x86_64-w64-mingw32/include)
	Step 5) Edit the pthread.h in your include dir and change the following
	    section from:
=======================================================================
		#if HAVE_CONFIG_H
		#include "config.h"
		#endif /* HAVE_CONFIG_H */
=======================================================================
			to:
=======================================================================
		/* #if HAVE_CONFIG_H */
		#include "pconfig.h"
		/* #endif HAVE_CONFIG_H */
=======================================================================
	This is needed to prevent conflicts with other autotools based packages
	that actually use "config.h" for options.
	Step 6) Copy the pthread-win32 config.h to your include dir as pconfig.h

32bit build instructions (assuming mutilib 64bit default GCC)
	* Edit the GNUmakefile, and change:
=======================================================================
AR      = $(CROSS)ar
DLLTOOL = $(CROSS)dlltool
CC      = $(CROSS)gcc
CXX     = $(CROSS)g++
RANLIB  = $(CROSS)ranlib
RC      = $(CROSS)windres
=======================================================================
to
=======================================================================
AR      = $(CROSS)ar
DLLTOOL = $(CROSS)dlltool -m i386
CC      = $(CROSS)gcc -m32
CXX     = $(CROSS)g++ -m32
RANLIB  = $(CROSS)ranlib
RC      = $(CROSS)windres -F pe-i386
=======================================================================
	* You can also use a patch for 32bit builds such as 
	    <http://mingw-w64.pastebin.com/pastebin.php?dl=f7b38df38>
	* Next, follow the General Build and install instructions

== Building the Multilib Cross MinGW-w64 GCC the lazy way ==
    (With ADA support and libgomp)                        [LAZYW64]

Its a lazy method because it involves building GCC with all enabled
front ends only once, without restarting the cross GCC build.

First of all, your host compiler (native system "gcc") must support ADA.
If your platform does not have GNAT binaries, use the binaries from: 
    <https://libre.adacore.com/libre/download/>

If you do not want ADA support, or confident about your host ADA support,
you can skip the ADA bootstrap phase.

=== ADA Bootstrap Phase === [ADABOOT]

Bootstrapping ADA is needed if ADA is to be supported by the mingw-w64
cross GCC.

To begin bootstrap ADA, you must grab the GCC source that will be used
for the mingw-w64 cross GCC, so that the ADA support is as close as
possible with the target GCC version.

Use the source to build a native compiler for your host machine. You must
enable at least C, ADA, and C++ support. It is advisable to prefix
(i.e. using --prefix=/opt/test) the entire native bootstrap toolchain
in order to avoid overwriting the compiler provided by your host system.
You should also build a prefixed native Binutils for use with the new
bootstrap compiler.

Remember to build GCC OUTSIDE its source directory, NOT inside it and
certainly NOT in a sub-directory.

=== MinGW-w64 cross Binutils === [CRSBINU]

The official method to build the mingw-w64 toolchain is to set --prefix
and --with-sysroot to the same directory to allow the toolchain to be
relocatable. To make Multilib support possible, you need to use
"--enable-targets=x86_64-w64-mingw32,i686-w64-mingw32".

An example configure line for Binutils is:
../path/to/binutils/configure --prefix=<prefix> --with-sysroot=<prefix> \
	--enable-targets=x86_64-w64-mingw32,i686-w64-mingw32 \
	--host=<build triplet> --build=<build triplet> \
	--target=x86_64-w64-mingw32

=== Install mingw-w64 Headers === [MGW64HD]

When you checkout the svn trunk from the mingw-w64 developer repository, there
should be a directory called mingw-w64-headers. Install it with:
	../path/to/mingw-w64-headers/configure --prefix=<prefix> \
	--enable-sdk=none --build=<host triplet> --host=x86_64-w64-mingw32
	make install

To view the available sdks, use --help. The prefix should be similar to the
prefix used for cross Binutils. Although the mingw-w64 cross GCC is not
installed yet, configure will not fail it as it only checks the --host option.
It is important to set the --host option correctly, failing to do so will
cause the cross GCC to fail to find the expected system headers.

=== Setup Symlinks === [SETSYML]

Your install root for the mingw-w64 cross toolchain should contain the
following directories. Create the directories if missing. It is easier
to use "ln -s" softlinks to link directories than to copy them over.

	<root>/x86_64-w64-mingw32
	<root>/x86_64-w64-mingw32/include [headers previously installed here]
	<root>/x86_64-w64-mingw32/lib
	<root>/x86_64-w64-mingw32/lib32
	<root>/x86_64-w64-mingw32/lib64 [link to neighbor lib]
	<root>/mingw [link to x86_64-w64-mingw32]
	<root>/mingw/include
	<root>/mingw/lib
	<root>/mingw/lib32
	<root>/mingw/lib64 [link to neighbor lib]

On Windows, you can use "ntfs link" <http://elsdoerfer.name/=ntfslink>
to create "junction points" to link directories. These junction points
are transparent to user mode applications such as GCC.

Make sure the "mingw" directory mirrors "x86_64-w64-mingw32" exactly. Ditto
for "lib64" and "lib"

=== Build Core GCC === [BCORGCC]

GCC can be configured in many ways, the following is an example that worked.
Make sure to add your cross Binutils binaries to your $PATH before continuing.

If you did use the ADA compiler from adacore to produce a bootstrap ADA
compiler, make sure to add the prefix in such a way that it is found
before your default host compiler.
(i.e. export PATH=/opt/adaboot/bin:$PATH:/mingw64/path/bin)

Some of the configure options do not sound possible with a stage-1 cross,
but be assured that it has been tested.

Remember to build GCC OUTSIDE its source directory, NOT inside it and certainly
NOT in a sub-directory.

Example:
	../gcc-trunk/configure --{host,build}=<build triplet> \
	--target=x86_64-w64-mingw32 --enable-multilib --enable-64bit \
	--{prefix,with-sysroot}=<prefix> --enable-version-specific-runtime-libs \
	--enable-shared --with-dwarf --enable-fully-dynamic-string \
	--enable-languages=c,ada,c++,fortran,objc,obj-c++ --enable-libgomp \
	--enable-libssp --with-host-libstdcxx="-lstdc++ -lsupc++" \
	--with-{gmp,mpfr,mpc,cloog,ppl,libelf}=<host dir>

Explanation:
	--enable-version-specific-runtime-libs
	Installs libgcc/libstdc++ and other target support libraries in such a
	way that multiple GCC installs can coexist simultaneously.

	--enable-shared
	Builds shared support libraries

	--with-dwarf
	Use Dwarf debugging format by default

	--enable-fully-dynamic-string
	Enable dynamic std::string class to work around lazy initialization.

	--enable-libgomp
	Enable OpenMP support, it is not enabled by default on MinGW platforms.
	Requires pthreads-win32 (target) installed.

	--enable-libssp
	Enable Stack Smash Protection, a buffer overrun detector.

	--with-host-libstdcxx
	Lists down the C++ support libraries to link with. This is useful
	when using static PPL and CLooG.

	--with-{gmp,mpfr,mpc,cloog,ppl,libelf}=<host dir>
	Tells GCC where the host support libraries are installed to.
	(i.e. search <host dir>/include & <host dir>/lib)

Use "make all-gcc" to build the standalone GCC compiler without target
support libs. Install it with "make install-gcc".

Remember, this is a standalone gcc, it won't actually be able to link
executables, but it is already suitable to compile the CRT.

Do not delete the GCC build directory, we can continue later.

=== Build the mingw-w64 CRT === [BMGWCRT]

When you checkout the svn trunk from the mingw-w64 developer repository, there
should be a directory called mingw-w64-crt. 
Example configure:
	../path/to/crt/configure --prefix=<prefix> --enable-lib32 \
	--enable-lib64 --build=<build triplet> --host=x86_64-w64-mingw32

Explanation:
	--enable-lib32
	If you enabled multilib support in x86_64-w64-mingw32-gcc, this will build
	32bit libs for use with win32 programming. For $host_cpu i686-w64-mingw32,
	it is enabled by default.

	--enable-lib64
	Enable building 64bit libs for use with win64 programming. For $host_cpu
	x86_64-w64-mingw32, it is enabled by default.

Once the configure ends successfully, run "make && make install".

If you used symlinks or ntfs junction points to link the "lib*" directories,
you should be fine. If you manually copied x86_64-w64-mingw32 to mingw, you
must copy the "lib*" directories so that "lib64" mirrors "lib" and
"lib32" in "mingw" mirrors "x86_64-w64-mingw32/lib32"

=== Build libgcc === [BLIBGCC]

Reenter the build directory used earlier in [BCORGCC], and issue
"make all-target-libgcc", then "make install-target-libgcc".

This will install libgcc. As of writing, there is a minor bug when
--enable-version-specific-runtime-libs is used, libgcc_s.a is
installed incorrectly.

Move it from:
<prefix>/lib/gcc/<arch>/lib32/libgcc_s.a to 
<prefix>/lib/gcc/<arch>/<version>/32/libgcc_s.a
and
<prefix>/lib/gcc/<arch>/lib64/libgcc_s.a to
<prefix>/lib/gcc/<arch>/<version>/libgcc_s.a

The libgcc dll is also clobbered during install, search the build
directory for the dll and install it to separate directories as you
see fit. Make sure 32bit apps only see the 32bit variant, same for
64bit apps.

=== Build pthreads === [BPTHR32]

pthread-win32 is required for libgomp to work. Now that the CRT and
libgcc is installed, we can proceed with building the pthread dll.

Please refer to the pthreads-win32 section [PTHRW32] for instructions.
Make sure to build for both win32 and win64 variants.

=== Continue the build === [CTNTBLD]

Reenter the build directory used earlier in [BCORGCC] and continue
the build with "make". Finally, install with "make install".

