Windows build » History » Version 52

herck, 20 Sep 2013 10:28

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 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 51 pospelov
Installer can be generated using result of MSVC build
137 51 pospelov
For the generation CMake -> CPack -> NSIS combination is used.
138 51 pospelov
139 51 pospelov
h5. How to create installer
140 51 pospelov
141 51 pospelov
* After build is complete, installer is generated by running in the build directory the command
142 1 herck
> CPack -C Release
143 1 herck
* Only MSVC build based installer have been validated so far.
144 1 herck
145 1 herck
146 51 pospelov
h5. How to use installer on another PC
147 1 herck
148 1 herck
* Install Python + Numpy + matplotlib
149 1 herck
* Download installer from the link below this page, run it
150 51 pospelov
* Navigate to the installation directory and double click on Examples/python/ex001_CylindersAndPrisms/CylindersAndPrisms.py
151 51 pospelov
* Navigate to the installation directory and double click on coregui.exe
152 1 herck
153 47 pospelov
154 1 herck
h2. Mingw build
155 47 pospelov
156 51 pospelov
* With Mingw we are able to compile(Core + Fit + UnitTests + FunctionalTests)
157 51 pospelov
> No App, GUI compilation is possible for the moment due to ROOT
158 47 pospelov
159 51 pospelov
160 51 pospelov
h5. Install Qt
161 51 pospelov
162 51 pospelov
* Install Qt 5.1.1 for Windows 32-bit (MinGW 4.8, OpenGL)
163 51 pospelov
> from ttp://qt-project.org/downloads into C:\Qt
164 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
165 47 pospelov
>> this will allow usage of mingw from any command line
166 47 pospelov
167 51 pospelov
h5. Install cmake
168 47 pospelov
169 51 pospelov
* install cmake as explained
170 51 pospelov
171 47 pospelov
h5. Install MinGW 
172 47 pospelov
173 51 pospelov
* We need full MinGW suite to compile latest libgsl. MinGW from Qt installation want help.
174 47 pospelov
> download mingw-get-setup.exe installation manager from http://www.mingw.org/
175 47 pospelov
> run installer, there will be some pre selection of packages (from MinGW Base system, MSYS and GCC), should be enough
176 47 pospelov
> in the menu do Installation/Apply changes, then accept default C:\MinGW as an installation directory
177 47 pospelov
178 47 pospelov
h5. Install Python and Co
179 47 pospelov
180 51 pospelov
* as explained
181 47 pospelov
182 47 pospelov
h5. Comment about installation of additional libraries
183 47 pospelov
> All further installations should end up in C:\opt\local
184 47 pospelov
185 47 pospelov
h5. Install gsl
186 47 pospelov
187 47 pospelov
* use previously installed MinGW to compile gsl
188 47 pospelov
> create empty directory c:\gsl-1.16
189 47 pospelov
> download source gsl-1.16.tar.gz from ftp://ftp.gnu.org/gnu/gsl/ 
190 47 pospelov
> copy unpacked directory to C:\mingw\msys\1.0\home\pospelov
191 47 pospelov
> run c:\mingw\msys\msys.bat which will bring command line prompt
192 47 pospelov
> there, navigate to c:\mingw\msys\1.0\home\pospelov\gsl-1.16
193 47 pospelov
> compile
194 47 pospelov
>> ./configure --enable-static=yes --enable-shared=yes --prefix=/c/gsl-1.16
195 47 pospelov
>> make
196 47 pospelov
>> make install
197 47 pospelov
> copy directory "C:\gsl-1.16\include\gsl"  to "C:\opt\local\include\gsl"
198 47 pospelov
> copy files libgsl-0.dll and libgslcblas-0.dll into "C:\opt\local\lib"
199 47 pospelov
200 1 herck
h5. Install fftw3 
201 47 pospelov
202 47 pospelov
> from http://www.fftw.org/install/windows.html download  fftw-3.3.3-dll32.zip
203 1 herck
> unpack archive somewhere
204 1 herck
> copy fftw3.h to C:\opt\local\include
205 47 pospelov
> copy libfftw3-3.dll and libfftw3-3.def to C:\opt\local\lib
206 47 pospelov
207 47 pospelov
h5. install BOOST
208 47 pospelov
209 47 pospelov
* install zlib and bzip2
210 47 pospelov
> from http://www.zlib.net/ into C:/opt/local/source/zlib-1.2.8
211 47 pospelov
> from http://www.bzip.org/downloads.html into C:/opt/local/source/bzip2-1.0.6
212 47 pospelov
213 47 pospelov
* Download and compile boost_1_54_0 
214 47 pospelov
> from http://sourceforge.net/projects/boost/files/boost/1.54.0/ and unpack
215 47 pospelov
> cd <BOOSTDIR>
216 47 pospelov
> bootstrap.bat mingw
217 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
218 47 pospelov
> Move c:/opt/local/include/boost_1.54/boost directory into c:/opt/local/include/boost
219 47 pospelov
220 47 pospelov
221 47 pospelov
h5. %PATH%
222 47 pospelov
223 47 pospelov
* Add c:\home\pospelov\development\git\BornAgain\lib;c:\opt\local\lib to PATH
224 47 pospelov
225 51 pospelov
h5. Running Mingw build
226 47 pospelov
227 51 pospelov
* Create build directory and run there
228 47 pospelov
> cmake -G "MinGW Makefiles"  ../BornAgain
229 47 pospelov
> mingw32-make -j4
230 47 pospelov
> mingw32-make check
231 47 pospelov
>> or cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug ../BornAgain
232 51 pospelov
233 51 pospelov
* Generate installer
234 51 pospelov
> CPack -C Release