How to build a Mingw-w64 x86_64-w64-mingw32 cross-compiler.

== About this document ==

(At this time, building a native compiler is suggested.  Documentation
to follow.  This is all still required to be able to build it.)
Top-level configure to do this all with one command is also to follow.

As of 2009-05-31, x86_64-pc-mingw32 has been replaced by x86_64-w64-mingw32.
The change allows for mingw-w64 to have a host/target type independent of
mingw.org's MinGW.

All default libraries work!  We are now in a functional beta stage.

This file describes how to build the Mingw-w64 GCC toolchain as a cross-compiler
on Cygwin, MinGW with MSys, and *nix shells.

Cygwin 1.5 and 1.7 currently in beta testing are both supported. This document
recommends and assumes Bash (for Cygwin, Unix), or MSys core sh default shells
are used.

== Targeted audience ==

This document is written to help those new to building the mingw-w64 cross
compilers on Windows using MSYS/MinGW and Cygwin. It can also be adapted
slightly for building the mingw-w64 cross compiler on Linux.

The mingw-w64 cross compilers consists in a few basic packages, among which
binutils, gcc, and windows headers, compiled in a special way. Once it is
operational, it forms the base to compile the packages of your project.
A collection of packages built on top of mingw-w64 can be found in fedora,
opensuse. Prebuilt version of mingw-w64 can also be found in the mingw-w64
website.

For a more advanced guide on building the mingw-w64 cross compiler including
the optional dependencies, please refer to the "mingw-w64-howto-build-adv.txt"
guide.

== Version changes ==

Date /          Version /  Author
2007-07-31      1.0        Kai Tietz <Kai.Tietz at onevision.com>
2007-08-20      1.1        Kai Tietz <Kai.Tietz at onevision.com>
2007-08-21      1.2        NightStrike <nightstrike at gmail.com>
2007-10-01      1.3        NightStrike <nightstrike at gmail.com>
2007-11-27      1.4        NightStrike <nightstrike at gmail.com>
2009-05-31      1.5        Xenofears <xenofears at gmail.com>
2009-06-06      1.6        Xenofears <xenofears at gmail.com>
2009-08-28      1.7        Xenofears <xenofears at gmail.com>
2009-08-30      1.8        Ozkan Sezer <sezeroz at gmail dot com>
2009-10-09      1.9        Jonathan Yong <jon_y[a]users.sourceforge.com>
2010-02-28      1.10       Ozkan Sezer <sezeroz at gmail dot com>
2010-08-31      1.11       Jonathan Yong <jon_y[a]users.sourceforge.com>
2012-03-06      1.12       William <r.3[a]libertysurf.fr>
2013-01-27      1.13       Jonathan Yong <jon_y[a]users.sourceforge.com>

== Table of Contents ==

	* Requirements                                                          [RQRMTS]
	* Optional                                                              [OPTNLB]
	* Download new packages                                                 [DWNWPK]
	* Build type options                                                    [BTYOPT]
	* Building binutils cross toolchain                                     [CRSBNT]
	* Install the Mingw-w64 header set and create required symlinks         [HDRSYM]
	* Building the GCC core cross-compiler                                  [BDGCOR]
	* Building the crt                                                      [BLDCRT]
	* Finishing GCC                                                         [FNSHGC]
	* Path update and using your new cross-compiler                         [PTHUPD]

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

== Requirements == [RQRMTS]

You will need a complete GCC toolchain for the host system (Cygwin, MinGW/MSys
or Linux), which usually includes all of the required components:

	* GCC (for the native platform)
	* Binutils (for the native platform)
	* Bison
	* Flex
	* gperf (Optional, for developing on GCC)
	* Coreutils
	* Make (3.81 or newer)
	* GMP 4.3.1 or newer
	  [found on Cygwin setup under math]
	* MPFR 2.4.1 or newer
	  [found on Cygwin setup under math]
	* Perl (optional for pod2man)

== Optional == [OPTNLB]

Optional for source download / version management:

	* CVS
	* Subversion (SVN)
	* wget
	* tar & gzip/bzip2

Optional for optimization enhancements: (Math toolchain dependencies are
elaborated on GMP)

	* PPL 0.10 or newer
	* ClooG-PPL 0.15 or newer (must be ppl) 
	* MPC 0.7 or newer

To build with MSys (Minimal SYStem for Win32), to satisfy the requirements
download and install functional MinGW (GCC toolchain), MSYS (sh shell), bison,
and flex.

If your host OS is Vista, you must install SP1 or SP2!  If you can't, you must
use an unoptimized collect2.exe as a workaround, but you are on your own.

Win32 installers to use with mingw msys available for download at MinGW's
sourceforge page: http://sourceforge.net/project/showfiles.php?group_id=23617

GMP & MPFR sources may be placed in the GCC source tree root in directories
with their names and they will be built automatically by GCC's configure (as
static libs).  You might need to make install from inside the directories if
GCC doesn't do it for you.


== Download new packages == [DWNWPK]

You need to download the following packages:

	* At least CVS snapshot (2.20.51). Note that 2.20.1 is not supported
	  due to ABI changes.

	* GCC version 4.5.1 release for stable, or latest GCC (4.6) snapshot
	  or svn co for experimental. GCC-4.3 support is no longer maintained.

	* Current Mingw-w64 release available at
	  http://sourceforge.net/projects/mingw-w64 .  Snapshot, even better
	  from SVN (refer below), recommended until stable issuance.

Official releases of GCC and binutils may be downloaded from a GNU FTP mirror
from <http://www.gnu.org/prep/ftp.html>.  GCC snapshots may be found at
<ftp://gcc.gnu.org/pub/gcc/snapshots/>.  Binutils snapshots may be found at
<ftp://sourceware.org/pub/binutils/snapshots/>.  Extract the tarballs (i.e.
tar -xf filename.tar.gz) to a temporary folders.

You can also download the latest working version using SVN & CVS.  Both source
control systems are available to Cygwin via Setup, and available to MSys in the
MSys/MinGW Packages. To use them:

	* For Mingw-w64:
	svn co https://mingw-w64.svn.sourceforge.net/svnroot/mingw-w64 mingw-w64

	* For GCCs latest development snapshot (4.5.0):
	svn checkout svn://gcc.gnu.org/svn/gcc/trunk gcc45x
	  or for GCC 4.4.x:
	svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_4-branch gcc44x

	* For Binutils latest development snapshot (2.20.51):
	cvs -z9 -d:pserver:anoncvs@sourceware.org:/cvs/src co binutils
	  or for binutils-2.20 stable branch:
	cvs -z9 -d:pserver:anoncvs@sourceware.org:/cvs/src co -r binutils-2_20-branch binutils
	(a directory named 'src' will be created and will hold the sources
	for either of the cases.)


=== Build type options === [BTYOPT]

When building binutils, GCC and Mingw-w64, you will be using standard autotools
configure scripts.  It is not a good idea to build in the source directory, so
you will make a sibling directory next to the source tree, enter it, and invoke
configure with '../path/to/configure' (which is then followed by 'make' and
then 'make install'.) You will be providing options to the configure script,
in the syntax of ../path/to/configure --flag[=setting].  This will be further
detailed below.

Note: Do not build GCC in the source tree or in a subdirectory contained in
	source tree.  This generally applies to many other autotools based
	packages too, unless specifically specified by the package developers
	or maintainers.

You have two main choices to make building the cross-compiler toolchain:

1) To build a cross-compiler that will generate 32 bits binaries, 64 bits
binaries, or that will be multilib enabled (so that the toolchain can target
both, using Mingw-w64's lib32).

    * 32 bits only : use options such as '--host=i686-w64-mingw32',
	'--target=i686-w64-mingw32' with '--disable-multilib'

	* 64 bits only : use options such as '--host=x86_64-w64-mingw32',
	'--target=x86_64-w64-mingw32' with '--disable-multilib'

	* multilib enabled : use options such as '--host=x86_64-w64-mingw32',
	'--target=x86_64-w64-mingw32','--enable-targets=all','--enable-lib32' or
	'--enable-targets=x86_64-w64-mingw32,i686-w64-mingw32'

It is recommanded to use the two first options, as the third one will require
more knowledge to use it properly. In the rest of this howto, examples will be
provided for the '64 bits only' option and for the 'multilib enabled' option.
For the '32 bits' option, please replace 'x86_64-w64-mingw32' by
'i686-w64-mingw32' wherever you see it.

2) Using standard settings of configure, which installs to /usr/local and
requires no setting changes, or to build to a sysroot you designate. /usr/local
is universally used as the default install point, and you may wish to keep all
the Mingw-w64 (64-bit) in a separate sysroot instead.  In the example in these
instructions, the sysroot is '/mypath'.  To use a sysroot, pass
--with-sysroot=/mypath and --prefix=/mypath as configure flags, i.e.
	../path/to/configure --with-sysroot=/mypath --prefix=/mypath


== Building binutils cross toolchain == [CRSBNT]

Step 1) Create a build directory (e.g. 'build'), where binutils compiled object
	files will be stored. Then enter into it.

Step 2) Run configure.
	For multilib:
		../path/to/configure --target=x86_64-w64-mingw32  \
		  --enable-targets=x86_64-w64-mingw32,i686-w64-mingw32

	For non-multilib:
		../path/to/configure --target=x86_64-w64-mingw32  \
		 --disable-multilib

	If using a sysroot, add "--with-sysroot=/mypath --prefix=/mypath" to
	your configure command, i.e., for multilib:
		../path/to/configure --target=x86_64-w64-mingw32  \
		  --enable-targets=x86_64-w64-mingw32,i686-w64-mingw32  \
		  --with-sysroot=/mypath --prefix=/mypath

Step 3) Run make (type 'make').  This will take a while.

Step 4) Run make install (type 'make install')

Step 5) You may optionally delete the "build" directory to save disk space.

Step 6) If you are using "--prefix" to install binutils to a directory not in
	your $PATH environmental variable, you should add the "bin" directory
	to you $PATH, i.e., for binutils installed to /home/luser/mingw64, use
	the following command to make new cross binutils visible by issuing:
		export PATH="$PATH:/home/luser/mingw64/bin"
	This step is required for building GCC later.

== Install the Mingw-w64 header set and create required symlinks == [HDRSYM]
 
Step 1) The source directory for the headers can be
	mingw-w64/trunk/mingw-w64-headers, or mingw-w64/mingw-w64-headers
	depending on your source.

Step 2) Create another "build" directory, and enter it.
	To install the headers, run:
		../path/to/configure --build=<your build machine> \
		--host=x86_64-w64-mingw32 --prefix=/mypath
	Then run "make install" to install the headers.

NOTE: For v3 (trunk as of writing, you MUST append x86_64-w64-mingw32 to your prefix, such as --prefix=/mypath/x86_64-w64-mingw32
NOTE: You MUST also do this for the CRT 

Step 3) GCC requires the x86_64-w64-mingw32 directory be mirrored as a
	directory 'mingw' in the same root.  So, if using configure default
	/usr/local, type:
	    ln -s /usr/local/x86_64-w64-mingw32 /usr/local/mingw
	or, for sysroot, type:
	    ln -s /mypath/x86_64-w64-mingw32 /mypath/mingw

Step 4) Manually create the x86_64-w64-mingw32/lib directory:
	    mkdir -p /usr/local/x86_64-w64-mingw32/lib
	or, for sysroot:
	    mkdir -p /mypath/x86_64-w64-mingw32/lib
	If it already exists and you get an error, ignore it.

Step 5) Symlink x86_64-w64-mingw32/lib directory as x86_64-w64-mingw32/lib64:
    ln -s /usr/local/x86_64-w64-mingw32/lib /usr/local/x86_64-w64-mingw32/lib64
  or, for sysroot:
    ln -s /mypath/x86_64-w64-mingw32/lib /mypath/x86_64-w64-mingw32/lib64

Note: On Windows systems or other systems that do not support UNIX type
softlinks, you may copy the entire directory to mirror it. It will
have the same effect as a symlink.

Note: The header-set and crt contains the standard-c and the windows platform
headers. Therefore it is not necessary to install an additional package.


== Building the GCC core cross-compiler(s) == [BDGCOR]

There are no GCC patches required anymore.  We keep up with GCC and get any
fixes applied upstream.

Step 1) Enter into the GCC root folder and generate a folder within (e.g.
	'build'), then enter it.

Step 2) Run configure.
	For multilib:
		../path/to/configure --target=x86_64-w64-mingw32 --enable-targets=all
	To disable multilib:
		../path/to/configure --target=x86_64-w64-mingw32 --disable-multilib

	Note: Remember to add the --prefix=/mypath and --with-sysroot=/mypath flags
	to match the binutils build if you are using a sysroot.

Step 3) Type 'make all-gcc'.  This will build the GCC core.

Step 4) Type 'make install-gcc'.  This will install the GCC core.

Step 5) You can leave the "build" directory alone for now, so you can
	resume building the rest of GCC later after installing the CRT.

Now the core stuff of GCC is present and we can build the crt itself.


== Building the crt (Mingw-w64 itself) == [BLDCRT]

Step 1) Create a new "build" directory for the crt. Enter the "build" directory.

Step 2) Run configure.
	For multilib:
		../path/to/configure --host=x86_64-w64-mingw32 --enable-lib32
		(NOTE: This won't work if you disabled multilib!)

	Without multilib:
		../path/to/configure --host=x86_64-w64-mingw32

	If using sysroot/prefix, again add the the --prefix=/mypath and
	--with-sysroot=/mypath flags.

NOTE: For v3 (trunk as of writing, you MUST append x86_64-w64-mingw32 to your prefix, such as --prefix=/mypath/x86_64-w64-mingw32
NOTE: You MUST also do this for the HEADERS

Step 3) Type make.  This will take a while.

Step 4) Type make install

Step 5) Make sure you have the following directories in the directory you
	have installed the mingw-w64 toolchain to:
		<root>/x86_64-w64-mingw32
		<root>/x86_64-w64-mingw32/include
		<root>/x86_64-w64-mingw32/lib
		<root>/x86_64-w64-mingw32/lib32
		<root>/x86_64-w64-mingw32/lib64 [link to lib]
		<root>/mingw [link to x86_64-w64-mingw32]
		<root>/mingw/include
		<root>/mingw/lib
		<root>/mingw/lib32
		<root>/mingw/lib64 [link to lib]
	If you are using MSys/MinGW on Windows, remember to copy the "linked"
	directories to simulate the use of a symbolic link.

Note: For non-multilib builds, you can omit the "lib32" and "lib64"
	directories and only have "lib".

Note: Currently there are no dlls built. As long as we use static crt import
	libraries we won't need a ctor/dtor dll (mingwm10.dll).


== Finishing GCC (the libraries built using GCC core and Mingw-w64) == [FNSHGC]

Now you are ready to build the rest of GCC:

Step 1) Enter back into your GCC "build" directory.

Step 2) Type 'make'. This will take a while.

Step 3) Type 'make install'


== Path update and using your new cross-compiler == [PTHUPD]

Permanently update your path to use your new cross-compiler:

The binaries are all prefixed with the Mingw-w64 triplet x86_64-w64-mingw32-,
so there are no file name clashes.

* If you are using Cygwin or *nix, you will add the directory to your path
  in .bashrc in your home directory (the file may be hidden).

* If you are using MSys, you will need to add the directory to your path in
  /etc/profile.

* To reiterate, for default /usr/local, add /usr/local/bin to your PATH (this
  should not be necessary.) If using a sysroot, add /mypath/bin to your path.

You are finished.

To use your cross-compiler, simply use --host=x86_64-w64-mingw32 as a
configure option.  Be sure to -I/usr/local/include or -I/mypath/include
and -L/usr/local/lib or -L/mypath/lib to your CFLAGS to link your builds.

Often you must --enable-shared if you want DLLs as opposed to static libs,
but it is not always the case.

Simply use the -mwindows option for windows GUI applications.  By default,
-mconsole is used and produce console applications.  Also, you can use the
-mdll option for generating shared objects (dll), however normal gcc/g++
with the -shared flag or a proper ld (linker) command will do this.

