Windows build » History » Version 53

pospelov, 07 Jan 2014 16:46

1 1 herck
h1. Windows build
2 1 herck
3 47 pospelov
Experimental compilation under Windows using Microsoft Visual Studio or Mingw.
4 52 herck
For -those who want to see the devil- developers only.
5 1 herck
6 47 pospelov
In the next sections we explain
7 1 herck
8 52 herck
* Building of BornAgain using Microsoft Visual Studio 2012 (MSVC2012)
9 51 pospelov
> Works fully for Debug/Release versions of: Core + Fit + UnitTests + FunctionalTests + App + GUI
10 47 pospelov
* Making Windows installer package using results of MSVC2012 build
11 52 herck
* Building of BornAgain using using Mingw
12 51 pospelov
> Works partially for Debug/Release vesions of: 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 53 pospelov
> or
63 53 pospelov
> http://sourceforge.net/projects/numpy/files/NumPy/
64 48 pospelov
65 48 pospelov
* install matplotlib 
66 48 pospelov
> from http://matplotlib.org/downloads.html  by running matplotlib-1.2.1.win32-py2.7.exe
67 48 pospelov
>> matplotlib can require dateutil, pyparsing from http://www.lfd.uci.edu/~gohlke/
68 48 pospelov
69 48 pospelov
* Optional installation of debug version of python libraries
70 48 pospelov
> Instruction was found at http://upp-mirror.googlecode.com/svn-history/r3552/trunk/bazaar/Py/install.txt
71 48 pospelov
> Download Python source
72 48 pospelov
> Open <path to source>/PCbuild/pcbuild.sln in MSVC2012
73 48 pospelov
> Compile, some of projects will fail, no matter
74 48 pospelov
> PCbuild folder will contain the files
75 48 pospelov
>> python27_d.dll, python27_d.lib, python27_d.pdb, python27_d.exp
76 48 pospelov
> copy the dll to C:\Python27 and the remaining 3 files to C:\Python27\libs
77 1 herck
78 48 pospelov
79 48 pospelov
Alternative
80 50 pospelov
* Instead, one of (Anaconda pack, PythonXY pack, ???) can be installed to get all-in-one Python distribution
81 48 pospelov
> not tested
82 48 pospelov
83 1 herck
84 1 herck
h5. Comment about installation of additional libraries
85 1 herck
> All further installations should end up in C:\opt\local_vc110
86 1 herck
87 1 herck
h5. Install gsl 
88 1 herck
89 1 herck
* download gsl-1.16-vc11.zip from http://gladman.plushost.co.uk/oldsite/computing/gnu_scientific_library.php
90 1 herck
* Read build instructions containing in the archive
91 1 herck
> succeeded only for static build using "gslhdrs step" mentioned in gsl.vc11.readme
92 47 pospelov
>> for shared build there were undefined symbols in dll needed for minimization
93 1 herck
94 1 herck
h5. Install fftw3
95 1 herck
96 1 herck
> from http://www.fftw.org/install/windows.html download  fftw-3.3.3-dll32.zip
97 1 herck
> unpack archive somewhere
98 1 herck
> copy fftw3.h to C:\opt\local_vc110\include
99 1 herck
> copy libfftw3-3.dll and libfftw3-3.def to C:\opt\local_vc110\lib
100 1 herck
> generate corresponding lib file
101 1 herck
>> run "VS2012 x86 native tools command prompt"
102 1 herck
>>  run there "lib /def:libfftw3-3.def" to generate lib file
103 1 herck
104 1 herck
h5. install BOOST
105 1 herck
106 1 herck
* install zlib and bzip2
107 1 herck
> from http://www.zlib.net/ into C:/opt/local_vc110/source/zlib-1.2.8
108 1 herck
> from http://www.bzip.org/downloads.html into C:/opt/local_vc110/source/bzip2-1.0.6
109 1 herck
>> Patch bzip2 installation (MSVC specific!)
110 1 herck
>> Namely delete first line ("LIBRARY   LIBBZ2") from file libbz2.def
111 1 herck
>> This will remove unnecessary dependency from external bzip2 during later linking of boost libraries into other project
112 1 herck
113 1 herck
* Download and compile boost_1_54_0 
114 1 herck
> from http://sourceforge.net/projects/boost/files/boost/1.54.0/ and unpack
115 1 herck
> cd <BOOSTDIR>
116 1 herck
> bootstrap.bat
117 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
118 1 herck
> Move c:/opt/local_vc110/include/boost_1.54/boost directory into c:/opt/local_vc110/include/boost
119 1 herck
120 1 herck
h5. %PATH%
121 1 herck
122 1 herck
* Add c:\opt\local_vc110\lib to PATH
123 1 herck
124 1 herck
125 1 herck
h5. Working with MSVC2012
126 1 herck
127 1 herck
* generate project file
128 50 pospelov
> Create build directory BornAgain-build and run there cmake command from command line
129 1 herck
> cmake -G "Visual Studio 11" -DCMAKE_INCLUDE_PATH=C:/opt/local_vc110/include -DCMAKE_LIBRARY_PATH=C:/opt/local_vc110/lib ../BornAgain
130 1 herck
> Open BornAgain.sln in Visual Studio
131 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"
132 1 herck
>> Functional tests can be runned additionally by building "check" project
133 50 pospelov
>> Installation procedure can be tested by building INSTALL project
134 1 herck
135 1 herck
136 1 herck
h2. Windows installer
137 1 herck
138 51 pospelov
Installer can be generated using result of MSVC build
139 51 pospelov
For the generation CMake -> CPack -> NSIS combination is used.
140 51 pospelov
141 51 pospelov
h5. How to create installer
142 51 pospelov
143 51 pospelov
* After build is complete, installer is generated by running in the build directory the command
144 1 herck
> CPack -C Release
145 1 herck
* Only MSVC build based installer have been validated so far.
146 1 herck
147 1 herck
148 51 pospelov
h5. How to use installer on another PC
149 1 herck
150 1 herck
* Install Python + Numpy + matplotlib
151 1 herck
* Download installer from the link below this page, run it
152 51 pospelov
* Navigate to the installation directory and double click on Examples/python/ex001_CylindersAndPrisms/CylindersAndPrisms.py
153 51 pospelov
* Navigate to the installation directory and double click on coregui.exe
154 1 herck
155 47 pospelov
156 1 herck
h2. Mingw build
157 47 pospelov
158 51 pospelov
* With Mingw we are able to compile(Core + Fit + UnitTests + FunctionalTests)
159 51 pospelov
> No App, GUI compilation is possible for the moment due to ROOT
160 47 pospelov
161 51 pospelov
162 51 pospelov
h5. Install Qt
163 51 pospelov
164 51 pospelov
* Install Qt 5.1.1 for Windows 32-bit (MinGW 4.8, OpenGL)
165 51 pospelov
> from ttp://qt-project.org/downloads into C:\Qt
166 1 herck
> 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
167 47 pospelov
>> this will allow usage of mingw from any command line
168 47 pospelov
169 51 pospelov
h5. Install cmake
170 47 pospelov
171 51 pospelov
* install cmake as explained
172 51 pospelov
173 47 pospelov
h5. Install MinGW 
174 47 pospelov
175 51 pospelov
* We need full MinGW suite to compile latest libgsl. MinGW from Qt installation want help.
176 47 pospelov
> download mingw-get-setup.exe installation manager from http://www.mingw.org/
177 47 pospelov
> run installer, there will be some pre selection of packages (from MinGW Base system, MSYS and GCC), should be enough
178 47 pospelov
> in the menu do Installation/Apply changes, then accept default C:\MinGW as an installation directory
179 47 pospelov
180 47 pospelov
h5. Install Python and Co
181 47 pospelov
182 51 pospelov
* as explained
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 1 herck
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 1 herck
> unpack archive somewhere
206 1 herck
> 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 51 pospelov
h5. Running Mingw build
228 47 pospelov
229 51 pospelov
* Create build directory and run there
230 47 pospelov
> cmake -G "MinGW Makefiles"  ../BornAgain
231 47 pospelov
> mingw32-make -j4
232 47 pospelov
> mingw32-make check
233 47 pospelov
>> or cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug ../BornAgain
234 51 pospelov
235 51 pospelov
* Generate installer
236 51 pospelov
> CPack -C Release