Software to install
*******************

Download lastest mingw-get-setup.exe from http://www.mingw.org
Run mingw-get-setup.exe.
In the package list, select and install:
* mingw-developer-toolkit
* mingw32-base
* mingw32-gcc-g++
* mingw32-pthreads-w32
* msys-base
* msys-zip
* msys-unzip
* msys-wget

For more information:
http://www.mingw.org/wiki/Getting_Started

In mingw shell (also refered as msys), run

mkdir -p /opt/perl/bin
cp /bin/perl /opt/perl/bin/.

cd ~
#Download intltool
wget http://ftp.acc.umu.se/pub/GNOME/binaries/win32/intltool/0.40/intltool_0.40.4-1_win32.zip

Download lastest linphone-deps-win32 zip from  
http://download.savannah.gnu.org/releases-noredirect/linphone/misc
using your browser. 

Download gtk+-2.24.10 win32 _bundle_ from http://www.gtk.org, direct link:
http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/gtk+-bundle_2.24.10-20120208_win32.zip 

Install all these three package in /:

cd /
unzip ~/intltool_0.40.4-1_win32.zip
unzip <path to gtk bundle zip>
unzip <path to linphone-deps>

#Install GTK+ Outcrop theme, the one used by linphone for distribution.
cd /share/themes
wget ftp://ftp.gnome.org/mirror/gnome.org/teams/art.gnome.org/themes/gtk2/GTK2-Outcrop.tar.gz
tar -xvzf GTK2-Outcrop.tar.gz

#To get the translations working, remove from C:/MinGW/lib :
libintl.a libintl.la libintl.dll.a

* Download and install Inno Setup Compiler (required only if you run
'make setup.exe'). Add it to your windows Path environment variable.

* Install msys-git from (http://msysgit.github.io/). During installation you
are asked to make a choice about how line endings are treated by git. Choose
"Checkout line endings as they are, commit as they are". THIS CHOICE IS VERY
IMPORTANT. OTHERS BREAK AUTOMAKE.


General rules for compilation
*****************************

* It is recommended that you create a directory somewhere with a path without
  any spaces or ~ characters, for example c:\sources\. This is the place where
  source code must be compiled.
* git commands (to retrieve source code) must be performed within msys-git
  terminal.
* all other commands (configure, autogen.sh, make) must be done within the
  mingw shell (msys). In both msys and msys-git windows, change into the
  directory you created for sources:
	cd /c/sources

* make sure pkg-config works by adding this env variable to your terminal:
	export PKG_CONFIG_PATH=/usr/lib/pkgconfig

Building belle-sip
******************
  * make sure that java version 1.6 is available in the PATH. java-1.7 will
    not work with antlr generator.
  * download the sources with msys-git shell using the following command:
    $ git clone git://git.linphone.org/belle-sip.git
  * compile and install 
    $ ./autogen.sh
    $ ./configure --prefix=/usr --enable-shared --disable-static
    $ make && make install

Building Linphone
*****************

  * download the sources using the following command:
    $ git clone git://git.linphone.org/linphone.git --recursive

  * compile  
    #always run autogen.sh after a git checkout or update
    $ ./autogen.sh

    $ ./configure --prefix=/usr --enable-shared --disable-static
    #note: in order to use the tunnel (commercial extension), append
    #--enable-tunnel to the configure line above.

    $ make
    $ make install

    #Option: make a portable binary zip of linphone
    $ make zip

    #additionally you can make binary installer if you have Inno Setup 5
    installed in its default path

    $ make setup.exe
    #now you're done, you have a fresh linphone windows installer in the
    current directory.

Building plugins (optional)
***************************

  This the example for msx264 (H264 plugin), the same applies for other
  linphone plugins.
  $ git clone git://git.linphone.org/msx264.git
  $ cd msx264
  $ ./autogen.sh
  $ PKG_CONFIG_PATH=/usr/lib/pkgconfig ./configure --prefix=/usr --enable-shared --disable-static
  #make a binary zip of this plugin
  $ make zip
  #or make an installer
  $ make setup.exe


******************************************************
*      Notes about linphone-deps generation          *
******************************************************

Linphone-deps is a collection of linphone dependencies, that are for some of
them difficult to find as windows binaries. These notes are useful if you want
to upgrade part of the software that is included in the linphone-deps packages.

List of software included in linphone-deps:
antlr3c (compiled)
bzrtp (compiled)
polarssl (compiled
libsrtp (compiled)
libavcodec, libavutil, libavformat, libavdevice, libswscale (compiled, all
these from ffmpeg)
libtheora (from the web)
libx264 (compiled from the version distributed from linphone's web site)
libogg (from the web)
libspeex, libspeexdsp (compiled)
libgnutls (from the web)
libgsm (from the web)
libxml2 (compiled)
libsoup (compiled)
libsqlite3 (compiled)

Remarks:
For every package compiled that goes into linphone-deps, .la files (libtool
files) must be removed to avoid libtool errors. When running "make install
DESTDIR=<somepath>", somepath must be absolute and should not contain any ~ or
space.

- building antlr3c
  * download the sources with:
    $ git clone -b linphone git://git.linphone.org/antlr3.git
  * compile and install
    $ cd runtime/C
    $ ./autogen.sh
    $ ./configure --prefix=/usr --enable-shared --disable-static
    $ make
    $ make install
    $ make install DESTDIR=/home/<myuser>/antlr3c-install
    $ cp 

- building polarssl
  * download the sources with:
    $ git clone -b linphone git://git.linphone.org/polarssl.git
  * compile and install:
    $ cd polarssl
    $ make lib SHARED=1 WINDOWS=1
    $ make install DESTDIR=/usr
    $ make install DESTDIR=/home/<myuser>/polarssl-install

- building libsrtp
  *  download the sources with
    $ git clone git://git.linphone.org/srtp.git
  * compile with 
    $ autoconf
    $ ./configure --prefix=/usr
    $ make libsrtp.a
    $ make install
    $ make install DESTDIR=/home/<myuser>/libsrtp-install

- building bzrtp
 * download the sources with msys-git shell using the following command:
    $ git clone git://git.linphone.org/bzrtp.git
  * compile and install 
    $ ./autogen.sh
    $ ./configure --prefix=/usr --enable-shared --disable-static
    $ make && make install

- building sqlite3
  * download the sources on the following website:
  http://www.sqlite.org/download.html (choose the sqlite-autoconf-3XXX.tar.gz)
  
  * install: 
  ./configure
  make && make install DESTDIR=/home/<myuser>/sqlite3-install
  then copy the content of ~/sqlite3-install/usr/local/ into linphone-deps/. 	

- building ffmpeg 
  ./configure --enable-shared --disable-static --enable-memalign-hack --extra-cflags="-fno-common" --enable-gpl && make
  make install DESTDIR=/home/<myuser>/ffmpeg-install
  Copy to ~/ffmpeg-install/usr/local/* to linphone-deps/.
  Copy also all *.dll.a files from the build tree to lib/ directort of
  linphone-deps. These are the implibs necessary to link a program against the
  dlls.

- building libxml2: the binaries found on the internet are generated with
  MSVC++, and for obscure reason they are not suitable for building libsoup 
  (that requires libxml2).
  ./configure --enable-shared --disable-static && make && make install DESTDIR=/home/<myuser>/libxml2-install
  copy ~/libxml2-install/usr/local/* into linphone-deps/.


- building x264:
 
  * download yasm normal version windows executable from yasm project page:
  http://www.tortall.net/projects/yasm/wiki/Download
  copy it as /usr/local/bin/yasm.exe

  cd into x264/ dir then run:
  ./configure --enable-pic
  make
  make install DESTDIR=/home/<myuser>/x264-install
  then copy the content of ~/x264-install/usr/local/ into linphone-deps/.

- libgnutls (required for libsoup https support)
	- download binary zip from http://josefsson.org/gnutls4win.org
	- add to linphone-deps

- building libsoup (only required for buddylookup plugin)
	- download source from gnome ftp (warning: at the time of the writing
	  only version 2.26.x can compile with the glib version supplied in the
	  gtk-bundle, 2.27 requires a new version of glib)
	- uncompress libgnutls zip in /
	- make sure you have libxml2 installed in /
	- apply a bugfix patch (fix gnutls support on windows, completely
	  broken otherwise). The patch is in linphone-deps/src, apply it this
	  way:
		cd libsoup-2.26.*
		cd libsoup
		patch -p0 < libsoup-gnutls-bugfix.patch
	- run:
		./configure --prefix=/usr --enable-shared --disable-static
		make
		make install
		make install DESTDIR=/home/<myuser>/libsoup-install
	- copy ~/libsoup-install/usr/* into linphone-deps/

Once you have everything in linphone-deps, remove .la files from lib:
	cd lib && rm -f *.la
