]> sjero.net Git - linphone/blob - README.mingw
Merge branch 'master' of git.linphone.org:linphone into tunnel
[linphone] / README.mingw
1 Software to install
2 *******************
3
4 Download lastest mingw-get-inst.exe from http://www.mingw.org
5 Run mingw-get-inst.exe. Choose "download lastest catalogues".
6 In the feature list, select:
7 * C compiler
8 * C++ compiler
9 * Mingw developer toolkit
10 Let the installer fetch and install everything.
11
12 In mingw shell, run
13
14 mingw-get install msys-zip
15 mingw-get install msys-unzip
16 mingw-get install msys-wget
17
18 mkdir -p /opt/perl/bin
19 cp /bin/perl /opt/perl/bin/.
20
21 cd ~
22 #Download intltool
23 wget http://ftp.acc.umu.se/pub/GNOME/binaries/win32/intltool/0.40/intltool_0.40.4-1_win32.zip
24
25 Download lastest linphone-deps-win32 zip from  
26 http://download.savannah.gnu.org/releases-noredirect/linphone/misc
27 using your browser. 
28
29 Download lastest gtk+ win32 bundle from http://www.gtk.org 
30
31 Install all these three package in /:
32
33 cd /
34 unzip ~/intltool_0.40.4-1_win32.zip
35 unzip <path to gtk bundle zip>
36 unzip <path to linphone-deps>
37
38 #Install GTK+ Outcrop theme, the one used by linphone for distribution.
39 cd /share/themes
40 wget http://art.gnome.org/download/themes/gtk2/1122/GTK2-Outcrop.tar.gz
41 tar -xvzf GTK2-Outcrop.tar.gz
42
43 #To get the translations working, remove from C:/MinGW/lib :
44 libintl.a libintl.la libintl.dll.a
45
46 * Download and install Inno Setup Compiler (required only if you run 'make setup.exe'). Add it to your windows Path environment variable.
47
48 Get Linphone source code
49 ************************
50
51 Install msys-git from (http://code.google.com/p/msysgit/). During installation you are asked to make a choice about how line endings are treated by git.
52 Choose "Checkout line endings as they are, commit as they are". THIS CHOICE IS VERY IMPORTANT. OTHERS BREAK AUTOMAKE.
53
54 It is recommended that you create a directory somewhere with a path without any spaces or ~ characters, for example
55 c:\sources\
56 Within msys-git bash, do
57 cd /c/sources
58 git clone git://git.savannah.nongnu.org/linphone.git --recursive
59
60
61 Building
62 ********
63
64 WARNING: During the build, windows might slow down suddenly. Using ctl+alt+del to start the windows system monitor,
65  you might see a process 'LVpSRV.exe' or something like this that eats 90% of cpu.
66 Kill it. Don't know what it is, but once killed, windows runs normally.
67
68 #Compile and install tunnel
69 cd tunnel && ./autogen.sh && ./configure --prefix=/opt/linphone && make && make install
70 #run autogen.sh after a git checkout or update
71 ./autogen.sh
72 ./configure --prefix=/opt/linphone --enable-shared --disable-static
73 make
74 #will install to /opt/linphone, required for compilation of plugins.
75 make install
76 #make a binary zip of linphone
77 make zip
78 #additionally you can make binary installer if you have Inno Setup 5 installed in its default path
79 make setup.exe
80 #now you're done, you have a fresh linphone windows installer in the current directory.
81
82 #build plugins
83 cd mediastreamer2/plugins/msx264
84 ./autogen.sh
85 PKG_CONFIG_PATH=/opt/linphone/lib/pkgconfig ./configure --prefix=/opt/linphone --enable-shared --disable-static
86 #make a binary zip of this plugin
87 make zip
88 #or make an installer
89 make setup.exe
90
91 #the buddylookup plugin enables lookup of buddies in a remote database using xml-rpc over http/https.
92 cd coreapi/plugins/buddylookup
93 ./autogen.sh
94 PKG_CONFIG_PATH=/opt/linphone/lib/pkgconfig ./configure --prefix=/opt/linphone --enable-shared --disable-static 
95 make
96 #make a binary zip of this plugin
97 make zip
98
99
100 ******************************************************
101 *      Notes about linphone-deps generation          *
102 ******************************************************
103
104 Linphone-deps is a collection of linphone dependencies, that are for some of them difficult
105 to find as windows binaries.
106 These notes are useful if you want to upgrade part of the software that is included in the
107 linphone-deps packages.
108
109 List of software included in linphone-deps:
110 libosip2  (compiled)
111 libeXosip2 (compiled)
112 libavcodec, libavutil, libavformat, libavdevice, libswscale (compiled, all these from ffmpeg)
113 libtheora (from the web)
114 libx264 (compiled from the version distributed from linphone's web site)
115 libogg (from the web)
116 libspeex, libspeexdsp (compiled, statically to workaround a dll-related crash)
117 libgnutls (from the web)
118 libgsm (from the web)
119 libxml2 (compiled)
120 libsoup (compiled)
121
122 Remarks:
123 For every package compiled that goes into linphone-deps, .la files (libtool files) must be removed to avoid libtool errors.
124 When running "make install DESTDIR=<somepath>", somepath must be absolute and should not contain any ~ or space.
125
126 - building ffmpeg 
127   ./configure --enable-shared --disable-static --enable-memalign-hack --extra-cflags="-fno-common" --enable-gpl && make
128   make install DESTDIR=/home/<myuser>/ffmpeg-install
129   Copy to ~/ffmpeg-install/usr/local/* to linphone-deps/.
130   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.
131
132 - building libxml2: the binaries found on the internet are generated with MSVC++, and for obscure reason they are not suitable for building libsoup 
133   (that requires libxml2).
134   ./configure --enable-shared --disable-static && make && make install DESTDIR=/home/<myuser>/libxml2-install
135   copy ~/libxml2-install/usr/local/* into linphone-deps/.
136
137 - building x264:
138  
139   * download yasm normal version windows executable from yasm project page:
140   http://www.tortall.net/projects/yasm/wiki/Download
141   copy it as /usr/local/bin/yasm.exe
142
143   cd into x264/ dir then run:
144   ./configure --enable-pic
145   make
146   make install DESTDIR=/home/<myuser>/x264-install
147   then copy the content of ~/x264-install/usr/local/ into linphone-deps/.
148
149 - libgnutls (required for libsoup https support)
150         - download binary zip from http://josefsson.org/gnutls4win.org
151         - add to linphone-deps
152
153 - building libsoup (only required for buddylookup plugin)
154         - download source from gnome ftp (warning: at the time of the writing only version 2.26.x can compile with the 
155                 glib version supplied in the gtk-bundle, 2.27 requires a new version of glib)
156         - uncompress libgnutls zip in /
157         - make sure you have libxml2 installed in /
158         - apply a bugfix patch (fix gnutls support on windows, completely broken otherwise). The patch
159                 is in linphone-deps/src, apply it this way:
160                 cd libsoup-2.26.*
161                 cd libsoup
162                 patch -p0 < libsoup-gnutls-bugfix.patch
163         - run:
164                 ./configure --prefix=/usr --enable-shared --disable-static
165                 make
166                 make install
167                 make install DESTDIR=/home/<myuser>/libsoup-install
168         - copy ~/libsoup-install/usr/* into linphone-deps/
169
170 Once you have everything in linphone-deps, remove .la files from lib:
171         cd lib && rm -f *.la