Windows build » History » Version 50

pospelov, 20 Sep 2013 10:02

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 49 pospelov
h5. Install Qt
39 20 pospelov
40 47 pospelov
* Install Qt 5.1.1
41 49 pospelov
> Download 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 1 herck
> Create environment variable  QTDIR=C:\Qt\5.1.1\msvc2012
44 47 pospelov
45 49 pospelov
h5. Install cmake
46 1 herck
47 50 pospelov
* install cmake from http://www.cmake.org/cmake/resources/software.html by running cmake-2.8.11.2-win32-x86.exe
48 1 herck
49 50 pospelov
h5. Install NSIS
50 50 pospelov
51 50 pospelov
* NSIS will be used after compilation for the generation of installation package
52 50 pospelov
> install NSIS from http://nsis.sourceforge.net/Download
53 50 pospelov
54 50 pospelov
55 48 pospelov
h5. Install Python and Co
56 48 pospelov
57 48 pospelov
* Install Python
58 48 pospelov
> install through http://www.python.org/ftp/python/2.7.5/python-2.7.5.msi into C:/Python27
59 48 pospelov
60 48 pospelov
* install numpy 
61 48 pospelov
> from unofficial http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy   by running   numpy-unoptimized-1.7.1.win32-py2.7.‌exe
62 48 pospelov
63 48 pospelov
* install matplotlib 
64 48 pospelov
> from http://matplotlib.org/downloads.html  by running matplotlib-1.2.1.win32-py2.7.exe
65 48 pospelov
>> matplotlib can require dateutil, pyparsing from http://www.lfd.uci.edu/~gohlke/
66 48 pospelov
67 48 pospelov
* Optional installation of debug version of python libraries
68 48 pospelov
> Instruction was found at http://upp-mirror.googlecode.com/svn-history/r3552/trunk/bazaar/Py/install.txt
69 48 pospelov
> Download Python source
70 48 pospelov
> Open <path to source>/PCbuild/pcbuild.sln in MSVC2012
71 48 pospelov
> Compile, some of projects will fail, no matter
72 48 pospelov
> PCbuild folder will contain the files
73 48 pospelov
>> python27_d.dll, python27_d.lib, python27_d.pdb, python27_d.exp
74 48 pospelov
> copy the dll to C:\Python27 and the remaining 3 files to C:\Python27\libs
75 1 herck
76 48 pospelov
77 48 pospelov
Alternative
78 50 pospelov
* Instead, one of (Anaconda pack, PythonXY pack, ???) can be installed to get all-in-one Python distribution
79 48 pospelov
> not tested
80 48 pospelov
81 1 herck
82 1 herck
h5. Comment about installation of additional libraries
83 1 herck
> All further installations should end up in C:\opt\local_vc110
84 1 herck
85 1 herck
h5. Install gsl 
86 1 herck
87 1 herck
* download gsl-1.16-vc11.zip from http://gladman.plushost.co.uk/oldsite/computing/gnu_scientific_library.php
88 1 herck
* Read build instructions containing in the archive
89 1 herck
> succeeded only for static build using "gslhdrs step" mentioned in gsl.vc11.readme
90 47 pospelov
>> for shared build there were undefined symbols in dll needed for minimization
91 1 herck
92 1 herck
h5. Install fftw3
93 1 herck
94 1 herck
> from http://www.fftw.org/install/windows.html download  fftw-3.3.3-dll32.zip
95 1 herck
> unpack archive somewhere
96 1 herck
> copy fftw3.h to C:\opt\local_vc110\include
97 1 herck
> copy libfftw3-3.dll and libfftw3-3.def to C:\opt\local_vc110\lib
98 1 herck
> generate corresponding lib file
99 1 herck
>> run "VS2012 x86 native tools command prompt"
100 1 herck
>>  run there "lib /def:libfftw3-3.def" to generate lib file
101 1 herck
102 1 herck
h5. install BOOST
103 1 herck
104 1 herck
* install zlib and bzip2
105 1 herck
> from http://www.zlib.net/ into C:/opt/local_vc110/source/zlib-1.2.8
106 1 herck
> from http://www.bzip.org/downloads.html into C:/opt/local_vc110/source/bzip2-1.0.6
107 1 herck
>> Patch bzip2 installation (MSVC specific!)
108 1 herck
>> Namely delete first line ("LIBRARY   LIBBZ2") from file libbz2.def
109 1 herck
>> This will remove unnecessary dependency from external bzip2 during later linking of boost libraries into other project
110 1 herck
111 1 herck
* Download and compile boost_1_54_0 
112 1 herck
> from http://sourceforge.net/projects/boost/files/boost/1.54.0/ and unpack
113 1 herck
> cd <BOOSTDIR>
114 1 herck
> bootstrap.bat
115 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
116 1 herck
> Move c:/opt/local_vc110/include/boost_1.54/boost directory into c:/opt/local_vc110/include/boost
117 1 herck
118 1 herck
h5. %PATH%
119 1 herck
120 1 herck
* Add c:\opt\local_vc110\lib to PATH
121 1 herck
122 1 herck
123 1 herck
h5. Working with MSVC2012
124 1 herck
125 1 herck
* generate project file
126 50 pospelov
> Create build directory BornAgain-build and run there cmake command from command line
127 1 herck
> cmake -G "Visual Studio 11" -DCMAKE_INCLUDE_PATH=C:/opt/local_vc110/include -DCMAKE_LIBRARY_PATH=C:/opt/local_vc110/lib ../BornAgain
128 1 herck
> Open BornAgain.sln in Visual Studio
129 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"
130 1 herck
>> Functional tests can be runned additionally by building "check" project
131 50 pospelov
>> Installation procedure can be tested by building INSTALL project
132 1 herck
133 1 herck
134 1 herck
h2. Windows installer
135 1 herck
136 50 pospelov
* Installer can be generated using result of MSVC build
137 1 herck
* For the generation CMake -> CPack -> NSIS combination is used.
138 50 pospelov
* After build is complete, installer is generated by running in build directory the command
139 1 herck
> CPack -C Release
140 1 herck
* Only MSVC build based installer have been validated so far.
141 1 herck
142 1 herck
143 1 herck
h5. How to use installer
144 1 herck
145 1 herck
* Install Python + Numpy + matplotlib
146 1 herck
* Download installer from the link below this page, run it
147 47 pospelov
* Navigate to installation directory and double click on Examples/python/ex001_CylindersAndPrisms/CylindersAndPrisms.py
148 47 pospelov
149 47 pospelov
150 47 pospelov
151 47 pospelov
h2. Mingw build
152 47 pospelov
153 47 pospelov
h5. Install Qt, cmake
154 47 pospelov
155 47 pospelov
* Install Qt 5.1.0
156 47 pospelov
> http://qt-project.org/downloads
157 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
158 47 pospelov
>> this will allow usage of mingw from any command line
159 47 pospelov
160 47 pospelov
* install cmake
161 47 pospelov
> http://www.cmake.org/cmake/resources/software.html by running cmake-2.8.11.2-win32-x86.exe
162 47 pospelov
163 47 pospelov
h5. Install MinGW 
164 47 pospelov
165 47 pospelov
* We need full MinGW suite to compile latest libgsl. MinGW from Qt installtion want help.
166 47 pospelov
> download mingw-get-setup.exe installation manager from http://www.mingw.org/
167 47 pospelov
> run installer, there will be some pre selection of packages (from MinGW Base system, MSYS and GCC), should be enough
168 47 pospelov
> in the menu do Installation/Apply changes, then accept default C:\MinGW as an installation directory
169 47 pospelov
170 47 pospelov
h5. Install Python and Co
171 47 pospelov
172 47 pospelov
* Install Python
173 47 pospelov
> install through http://www.python.org/ftp/python/2.7.5/python-2.7.5.msi into C:/Python27
174 47 pospelov
175 47 pospelov
* install numpy 
176 47 pospelov
> from unofficial http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy   by running   numpy-unoptimized-1.7.1.win32-py2.7.‌exe
177 47 pospelov
178 47 pospelov
* install matplotlib 
179 47 pospelov
> from http://matplotlib.org/downloads.html  by running matplotlib-1.2.1.win32-py2.7.exe
180 47 pospelov
>> matplotlib can require dateutil, pyparsing from http://www.lfd.uci.edu/~gohlke/
181 47 pospelov
182 47 pospelov
> (alternative install Anaconda pack (python + mingw + numpy) from http://continuum.io/downloads ) Not checked!
183 47 pospelov
184 47 pospelov
h5. Comment about installation of additional libraries
185 47 pospelov
> All further installations should end up in C:\opt\local
186 47 pospelov
187 47 pospelov
h5. Install gsl
188 47 pospelov
189 47 pospelov
* use previously installed MinGW to compile gsl
190 47 pospelov
> create empty directory c:\gsl-1.16
191 47 pospelov
> download source gsl-1.16.tar.gz from ftp://ftp.gnu.org/gnu/gsl/ 
192 47 pospelov
> copy unpacked directory to C:\mingw\msys\1.0\home\pospelov
193 47 pospelov
> run c:\mingw\msys\msys.bat which will bring command line prompt
194 47 pospelov
> there, navigate to c:\mingw\msys\1.0\home\pospelov\gsl-1.16
195 47 pospelov
> compile
196 47 pospelov
>> ./configure --enable-static=yes --enable-shared=yes --prefix=/c/gsl-1.16
197 47 pospelov
>> make
198 47 pospelov
>> make install
199 47 pospelov
> copy directory "C:\gsl-1.16\include\gsl"  to "C:\opt\local\include\gsl"
200 47 pospelov
> copy files libgsl-0.dll and libgslcblas-0.dll into "C:\opt\local\lib"
201 47 pospelov
202 47 pospelov
h5. Install fftw3 
203 47 pospelov
204 47 pospelov
> from http://www.fftw.org/install/windows.html download  fftw-3.3.3-dll32.zip
205 47 pospelov
> unpack archive somewhere
206 47 pospelov
> copy fftw3.h to C:\opt\local\include
207 47 pospelov
> copy libfftw3-3.dll and libfftw3-3.def to C:\opt\local\lib
208 47 pospelov
209 47 pospelov
h5. install BOOST
210 47 pospelov
211 47 pospelov
* install zlib and bzip2
212 47 pospelov
> from http://www.zlib.net/ into C:/opt/local/source/zlib-1.2.8
213 47 pospelov
> from http://www.bzip.org/downloads.html into C:/opt/local/source/bzip2-1.0.6
214 47 pospelov
215 47 pospelov
* Download and compile boost_1_54_0 
216 47 pospelov
> from http://sourceforge.net/projects/boost/files/boost/1.54.0/ and unpack
217 47 pospelov
> cd <BOOSTDIR>
218 47 pospelov
> bootstrap.bat mingw
219 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
220 47 pospelov
> Move c:/opt/local/include/boost_1.54/boost directory into c:/opt/local/include/boost
221 47 pospelov
222 47 pospelov
223 47 pospelov
h5. %PATH%
224 47 pospelov
225 47 pospelov
* Add c:\home\pospelov\development\git\BornAgain\lib;c:\opt\local\lib to PATH
226 47 pospelov
227 47 pospelov
h5. Where we are?
228 47 pospelov
229 47 pospelov
* At this point Qt creator Release, Debug builds are working 
230 47 pospelov
> Core + Fit + UnitTests + FunctionalTests (not App, GUI)
231 47 pospelov
232 47 pospelov
* cmake Release, Debug builds 
233 47 pospelov
> cmake -G "MinGW Makefiles"  ../BornAgain
234 47 pospelov
> mingw32-make -j4
235 47 pospelov
> mingw32-make check
236 1 herck
>> or cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug ../BornAgain