Windows build » History » Version 48

pospelov, 20 Sep 2013 09:51

1 1 herck
h1. Windows build
2 1 herck
3 47 pospelov
Experimental compilation under Windows using Microsoft Visual Studio or Mingw.
4 47 pospelov
For -whose who wants to see the devil- developers only.
5 1 herck
6 47 pospelov
In the next sections we explain
7 1 herck
8 47 pospelov
* Bulding of BornAgain using using Microsoft Visual Studio 2012 (MSVC2012)
9 47 pospelov
> Works fully for: Core + Fit + UnitTests + FunctionalTests + App + GUI
10 47 pospelov
* Making Windows installer package using results of MSVC2012 build
11 47 pospelov
* Bulding of BornAgain using using Mingw
12 47 pospelov
> Works partially: Core + Fit + UnitTests + FunctionalTests
13 1 herck
14 47 pospelov
Before we start
15 47 pospelov
16 47 pospelov
h5. Install optional packages for happier life
17 47 pospelov
18 6 pospelov
* Atlassian SourceTree (v0.9.2.3) 
19 6 pospelov
> https://www.atlassian.com/software/sourcetree/overview
20 1 herck
* Kate from KDE 
21 45 pospelov
> http://download.kde.org/stable/kdewin/installer/kdewin-installer-gui-latest.exe.mirrorlist 
22 9 pospelov
* far manager
23 14 pospelov
> http://www.farmanager.com/download.php?l=en
24 9 pospelov
* WinSCP
25 1 herck
> http://winscp.net/eng/index.php
26 6 pospelov
* Dependency Walker
27 1 herck
> http://www.dependencywalker.com/
28 1 herck
29 1 herck
30 47 pospelov
h2. MSVC2012 build
31 1 herck
32 47 pospelov
h5. Install VS.NET2012
33 47 pospelov
34 47 pospelov
* Install Visual Studio using our VS.NET2012 package
35 47 pospelov
> Install En language pack
36 47 pospelov
> install "stop build on error" plugin http://visualstudiogallery.msdn.microsoft.com/91aaa139-5d3c-43a7-b39f-369196a84fa5
37 47 pospelov
38 1 herck
h5. Install Qt, cmake
39 20 pospelov
40 47 pospelov
* Install Qt 5.1.1
41 47 pospelov
> Dwonload and install Qt 5.1.1 for Windows 32-bit (VS 2012) from http://qt-project.org/downloads to C:\Qt
42 47 pospelov
> Add to PATH  C:\Qt\5.1.1\msvc2012\bin
43 47 pospelov
> Create environment variable  QTDIR=C:\Qt\5.1.1\msvc2012
44 1 herck
45 1 herck
* install cmake
46 1 herck
> http://www.cmake.org/cmake/resources/software.html by running cmake-2.8.11.2-win32-x86.exe
47 1 herck
48 1 herck
49 48 pospelov
h5. Install Python and Co
50 48 pospelov
51 48 pospelov
* Install Python
52 48 pospelov
> install through http://www.python.org/ftp/python/2.7.5/python-2.7.5.msi into C:/Python27
53 48 pospelov
54 48 pospelov
* install numpy 
55 48 pospelov
> from unofficial http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy   by running   numpy-unoptimized-1.7.1.win32-py2.7.‌exe
56 48 pospelov
57 48 pospelov
* install matplotlib 
58 48 pospelov
> from http://matplotlib.org/downloads.html  by running matplotlib-1.2.1.win32-py2.7.exe
59 48 pospelov
>> matplotlib can require dateutil, pyparsing from http://www.lfd.uci.edu/~gohlke/
60 48 pospelov
61 48 pospelov
* Optional installation of debug version of python libraries
62 48 pospelov
> Instruction was found at http://upp-mirror.googlecode.com/svn-history/r3552/trunk/bazaar/Py/install.txt
63 48 pospelov
> Download Python source
64 48 pospelov
> Open <path to source>/PCbuild/pcbuild.sln in MSVC2012
65 48 pospelov
> Compile, some of projects will fail, no matter
66 48 pospelov
> PCbuild folder will contain the files
67 48 pospelov
>> python27_d.dll, python27_d.lib, python27_d.pdb, python27_d.exp
68 48 pospelov
> copy the dll to C:\Python27 and the remaining 3 files to C:\Python27\libs
69 48 pospelov
70 48 pospelov
71 48 pospelov
Alternative
72 48 pospelov
* Instead, one of (Anaconda pack, PythonXY pack, ???) can be installed to get all-in-one python distribution
73 48 pospelov
> not tested
74 48 pospelov
75 1 herck
76 1 herck
h5. Comment about installation of additional libraries
77 1 herck
> All further installations should end up in C:\opt\local_vc110
78 1 herck
79 1 herck
h5. Install gsl 
80 1 herck
81 1 herck
* download gsl-1.16-vc11.zip from http://gladman.plushost.co.uk/oldsite/computing/gnu_scientific_library.php
82 1 herck
* Read build instructions containing in the archive
83 1 herck
> succeeded only for static build using "gslhdrs step" mentioned in gsl.vc11.readme
84 47 pospelov
>> for shared build there were undefined symbols in dll needed for minimization
85 1 herck
86 1 herck
h5. Install fftw3
87 1 herck
88 1 herck
> from http://www.fftw.org/install/windows.html download  fftw-3.3.3-dll32.zip
89 1 herck
> unpack archive somewhere
90 1 herck
> copy fftw3.h to C:\opt\local_vc110\include
91 1 herck
> copy libfftw3-3.dll and libfftw3-3.def to C:\opt\local_vc110\lib
92 1 herck
> generate corresponding lib file
93 1 herck
>> run "VS2012 x86 native tools command prompt"
94 1 herck
>>  run there "lib /def:libfftw3-3.def" to generate lib file
95 1 herck
96 1 herck
h5. install BOOST
97 1 herck
98 1 herck
* install zlib and bzip2
99 1 herck
> from http://www.zlib.net/ into C:/opt/local_vc110/source/zlib-1.2.8
100 1 herck
> from http://www.bzip.org/downloads.html into C:/opt/local_vc110/source/bzip2-1.0.6
101 1 herck
>> Patch bzip2 installation (MSVC specific!)
102 1 herck
>> Namely delete first line ("LIBRARY   LIBBZ2") from file libbz2.def
103 1 herck
>> This will remove unnecessary dependency from external bzip2 during later linking of boost libraries into other project
104 1 herck
105 1 herck
* Download and compile boost_1_54_0 
106 1 herck
> from http://sourceforge.net/projects/boost/files/boost/1.54.0/ and unpack
107 1 herck
> cd <BOOSTDIR>
108 1 herck
> bootstrap.bat
109 1 herck
> b2 install --prefix=c:/opt/local_vc110 -sBZIP2_SOURCE="C:\opt\local_vc110\source\bzip2-1.0.6"   -sZLIB_SOURCE="C:\opt\local_vc110\source\zlib-1.2.8" variant=release   link=static,shared threading=multi
110 1 herck
> Move c:/opt/local_vc110/include/boost_1.54/boost directory into c:/opt/local_vc110/include/boost
111 1 herck
112 1 herck
h5. %PATH%
113 1 herck
114 1 herck
* Add c:\opt\local_vc110\lib to PATH
115 1 herck
116 1 herck
117 1 herck
h5. Working with MSVC2012
118 1 herck
119 1 herck
* generate project file
120 1 herck
> cmake -G "Visual Studio 11" -DCMAKE_INCLUDE_PATH=C:/opt/local_vc110/include -DCMAKE_LIBRARY_PATH=C:/opt/local_vc110/lib ../BornAgain
121 1 herck
> Open BornAgain.sln in Visual Studio
122 1 herck
>> There will be several projects in the solution (INSTALL, ZERO_CHECK, etc), all are necessary. Select build type "Release" and do "BUILD/Build Solution"
123 1 herck
>> Functional tests can be runned additionally by building "check" project
124 1 herck
125 1 herck
h5. Where we are?
126 1 herck
127 1 herck
* MSVC2012 Release, Debug builds are working for Core + Fit + UnitTests + FunctionalTests 
128 1 herck
129 1 herck
130 1 herck
h2. Windows installer
131 1 herck
132 1 herck
* Installer can be generated using both, MinGW and MSVC builds.
133 1 herck
* For the generation CMake -> CPack -> NSIS combination is used.
134 1 herck
* After build is complete, installer is generated using command
135 1 herck
> CPack -C Release
136 1 herck
* Only MSVC build based installer have been validated so far.
137 1 herck
138 1 herck
139 1 herck
140 1 herck
h5. Generating installer
141 1 herck
142 1 herck
* Install NSIS
143 1 herck
> install NSIS from http://nsis.sourceforge.net/Download
144 1 herck
145 1 herck
* generate MSVC solution, build solution in Release mode and then generate installer
146 1 herck
> cmake -G "Visual Studio 11" -DCMAKE_INCLUDE_PATH=C:/opt/local_vc110/include -DCMAKE_LIBRARY_PATH=C:/opt/local_vc110/lib ../BornAgain
147 1 herck
> Run Build Solution from MSVC
148 1 herck
> CPack -C Release
149 1 herck
150 1 herck
h5. How to use installer
151 1 herck
152 1 herck
* Install Python + Numpy + matplotlib
153 1 herck
* Download installer from the link below this page, run it
154 1 herck
* Navigate to installation directory and double click on Examples/python/ex001_CylindersAndPrisms/CylindersAndPrisms.py
155 47 pospelov
156 47 pospelov
157 47 pospelov
158 47 pospelov
h2. Mingw build
159 47 pospelov
160 47 pospelov
h5. Install Qt, cmake
161 47 pospelov
162 47 pospelov
* Install Qt 5.1.0
163 47 pospelov
> http://qt-project.org/downloads
164 47 pospelov
> Add to PATH C:\Qt\Tools\mingw48_32\bin;C:\Qt\Tools\mingw48_32\lib;C:\Qt\5.1.0\mingw48_32\bin;C:\Qt\Tools\QtCreator\bin
165 47 pospelov
>> this will allow usage of mingw from any command line
166 47 pospelov
167 47 pospelov
* install cmake
168 47 pospelov
> http://www.cmake.org/cmake/resources/software.html by running cmake-2.8.11.2-win32-x86.exe
169 47 pospelov
170 47 pospelov
h5. Install MinGW 
171 47 pospelov
172 47 pospelov
* We need full MinGW suite to compile latest libgsl. MinGW from Qt installtion want help.
173 47 pospelov
> download mingw-get-setup.exe installation manager from http://www.mingw.org/
174 47 pospelov
> run installer, there will be some pre selection of packages (from MinGW Base system, MSYS and GCC), should be enough
175 47 pospelov
> in the menu do Installation/Apply changes, then accept default C:\MinGW as an installation directory
176 47 pospelov
177 47 pospelov
h5. Install Python and Co
178 47 pospelov
179 47 pospelov
* Install Python
180 47 pospelov
> install through http://www.python.org/ftp/python/2.7.5/python-2.7.5.msi into C:/Python27
181 47 pospelov
182 47 pospelov
* install numpy 
183 47 pospelov
> from unofficial http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy   by running   numpy-unoptimized-1.7.1.win32-py2.7.‌exe
184 47 pospelov
185 47 pospelov
* install matplotlib 
186 47 pospelov
> from http://matplotlib.org/downloads.html  by running matplotlib-1.2.1.win32-py2.7.exe
187 47 pospelov
>> matplotlib can require dateutil, pyparsing from http://www.lfd.uci.edu/~gohlke/
188 47 pospelov
189 47 pospelov
> (alternative install Anaconda pack (python + mingw + numpy) from http://continuum.io/downloads ) Not checked!
190 47 pospelov
191 47 pospelov
h5. Comment about installation of additional libraries
192 47 pospelov
> All further installations should end up in C:\opt\local
193 47 pospelov
194 47 pospelov
h5. Install gsl
195 47 pospelov
196 47 pospelov
* use previously installed MinGW to compile gsl
197 47 pospelov
> create empty directory c:\gsl-1.16
198 47 pospelov
> download source gsl-1.16.tar.gz from ftp://ftp.gnu.org/gnu/gsl/ 
199 47 pospelov
> copy unpacked directory to C:\mingw\msys\1.0\home\pospelov
200 47 pospelov
> run c:\mingw\msys\msys.bat which will bring command line prompt
201 47 pospelov
> there, navigate to c:\mingw\msys\1.0\home\pospelov\gsl-1.16
202 47 pospelov
> compile
203 47 pospelov
>> ./configure --enable-static=yes --enable-shared=yes --prefix=/c/gsl-1.16
204 47 pospelov
>> make
205 47 pospelov
>> make install
206 47 pospelov
> copy directory "C:\gsl-1.16\include\gsl"  to "C:\opt\local\include\gsl"
207 47 pospelov
> copy files libgsl-0.dll and libgslcblas-0.dll into "C:\opt\local\lib"
208 47 pospelov
209 47 pospelov
h5. Install fftw3 
210 47 pospelov
211 47 pospelov
> from http://www.fftw.org/install/windows.html download  fftw-3.3.3-dll32.zip
212 47 pospelov
> unpack archive somewhere
213 47 pospelov
> copy fftw3.h to C:\opt\local\include
214 47 pospelov
> copy libfftw3-3.dll and libfftw3-3.def to C:\opt\local\lib
215 47 pospelov
216 47 pospelov
h5. install BOOST
217 47 pospelov
218 47 pospelov
* install zlib and bzip2
219 47 pospelov
> from http://www.zlib.net/ into C:/opt/local/source/zlib-1.2.8
220 47 pospelov
> from http://www.bzip.org/downloads.html into C:/opt/local/source/bzip2-1.0.6
221 47 pospelov
222 47 pospelov
* Download and compile boost_1_54_0 
223 47 pospelov
> from http://sourceforge.net/projects/boost/files/boost/1.54.0/ and unpack
224 47 pospelov
> cd <BOOSTDIR>
225 47 pospelov
> bootstrap.bat mingw
226 47 pospelov
> b2 install --prefix=c:/opt/local toolset=gcc -sBZIP2_SOURCE="C:\opt\local\source\bzip2-1.0.6"   -sZLIB_SOURCE="C:\opt\local\source\zlib-1.2.8" address-model=32 variant=release link=static,shared threading=single,multi
227 47 pospelov
> Move c:/opt/local/include/boost_1.54/boost directory into c:/opt/local/include/boost
228 47 pospelov
229 47 pospelov
230 47 pospelov
h5. %PATH%
231 47 pospelov
232 47 pospelov
* Add c:\home\pospelov\development\git\BornAgain\lib;c:\opt\local\lib to PATH
233 47 pospelov
234 47 pospelov
h5. Where we are?
235 47 pospelov
236 47 pospelov
* At this point Qt creator Release, Debug builds are working 
237 47 pospelov
> Core + Fit + UnitTests + FunctionalTests (not App, GUI)
238 47 pospelov
239 47 pospelov
* cmake Release, Debug builds 
240 47 pospelov
> cmake -G "MinGW Makefiles"  ../BornAgain
241 47 pospelov
> mingw32-make -j4
242 47 pospelov
> mingw32-make check
243 47 pospelov
>> or cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug ../BornAgain