~ubuntu-branches/ubuntu/wily/scribus/wily-proposed

« back to all changes in this revision

Viewing changes to BUILDING_win32_msvc.txt

  • Committer: Package Import Robot
  • Author(s): Oleksandr Moskalenko
  • Date: 2012-02-09 21:50:56 UTC
  • mfrom: (1.1.6)
  • Revision ID: package-import@ubuntu.com-20120209215056-2wrx1ara0jbm7fi5
Tags: 1.4.0.dfsg+r17287-1
* New upstream stable release upload into Debian (Closes: #654703).
* Applied the Ubuntu armel patch.
* Removed non-free color swatches from resources.
* debian/control:
  - Moved icc-profiles from Recommends to Suggests (Closes: #655885).
  - Updated Standards-Version to 3.9.2.
  - Updated extended description per lintian warning.
* debian/rules:
  - Update mailcap (Closes: #630751). A request for mime.types update has
    been sent to the mime-support maintainer.
  - Added build-arch and build-indep targets per lintian warning.
* debian/patches:
  - top_cmakelists.patch - don't copy extra docs and changelogs.
  - scribus_cmakelists.patch - don't copy extra docs and changelogs.
  - scribus_cmakelists.patch - don't install the non-free "doc" dir.
  - profiles_cmakelists.patch - don't install non-free sRGB profile.
* debian/copyright: 
  - Converted to the DEP5 machine readable foramt.
  - Added licenses for free color swatches.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
BUILDING SCRIBUS ON MICROSOFT WINDOWS WITH MICROSOFT VISUAL STUDIO
 
2
==================================================================
 
3
 
 
4
HOW TO DO THE BUILD
 
5
===================
 
6
 
 
7
This documentation is minimal and assume you have a decent knowledge of 
 
8
Microsoft Visual Studio. No help regarding use of Visual Studio and
 
9
related tools will be provided.
 
10
 
 
11
You will need:
 
12
        - Microsoft Windows XP, Vista or 7
 
13
        - Microsoft Visual Studio 2008 or Visual C++ Express Edition 2008
 
14
        - A recent Qt (version >= 4.6) release built with Visual Studio 2008
 
15
        - Cairo sources from cairographics.org (version >= 1.8.0)
 
16
        - Pixman sources from cairographics.org (version >= 0.12.0)
 
17
        - Boost from www.boost.org (version >= 1.35.0)
 
18
        - Libxml2 win32 binaries from the Libxml project
 
19
        - Libjpeg win32 libs and binaries from the GnuWin32 project
 
20
        - Libtiff win32 libs and binaries from the GnuWin32 project
 
21
        - Freetype sources from freetype.org (version >= 2.4.0)
 
22
        - LittleCMS sources from www.littlecms.com (version >= 2.1)
 
23
        - PoDoFo sources (version >= 0.8.x) from podofo.sourceforge.net
 
24
        - A Python 2.7 Windows binary build.
 
25
      For debug builds, you'll need a release that contains the python27_d.dll .
 
26
 
 
27
Some more details can be found below in the section entitled GETTING DEPENDENCIES.
 
28
 
 
29
After having installed all dependencies, open Scribus-build.vsprops files located 
 
30
in Scribus\win32\vc9 and update the dependency paths to match your system.
 
31
 
 
32
Open the Visual Studio solution located in Scribus\win32\vc9 and start building. The *-cairo 
 
33
configurations will build Scribus with cairo renderer. The *-arthur configurations will buid 
 
34
Scribus using qt arthur renderer. Note : official Scribus builds use cairo as render.
 
35
 
 
36
After building completed, you will find executables in a Scribus-builds\scribus-vc9-*\scribus
 
37
directory located in same directory as Scribus sources. Those executables will not function yet. 
 
38
Scribus resources must be copied from source directory to install directory first.
 
39
 
 
40
In order to do that, create a batch script and copy/paste following lines :
 
41
 
 
42
set SCRIBUS_SRC_PATH=.\Scribus
 
43
set SCRIBUS_BUILD_ROOT=.\Scribus-builds
 
44
set SCRIBUS_INSTALL_PATH=.\Scribus-builds\scribus-vc9-debug-cairo\scribus
 
45
 
 
46
 copy %SCRIBUS_SRC_PATH%\AUTHORS %SCRIBUS_INSTALL_PATH%\share\doc
 
47
 copy %SCRIBUS_SRC_PATH%\COPYING %SCRIBUS_INSTALL_PATH%\share\doc
 
48
 copy %SCRIBUS_SRC_PATH%\LINKS %SCRIBUS_INSTALL_PATH%\share\doc
 
49
 copy %SCRIBUS_SRC_PATH%\TRANSLATION %SCRIBUS_INSTALL_PATH%\share\doc
 
50
xcopy %SCRIBUS_SRC_PATH%\scribus\doc %SCRIBUS_INSTALL_PATH%\share\doc /s /y /D
 
51
xcopy %SCRIBUS_SRC_PATH%\resources\dicts %SCRIBUS_INSTALL_PATH%\share\dicts /s /y /D
 
52
xcopy %SCRIBUS_SRC_PATH%\resources\editorconfig %SCRIBUS_INSTALL_PATH%\share\editorconfig /s /y
 
53
xcopy %SCRIBUS_SRC_PATH%\resources\icons %SCRIBUS_INSTALL_PATH%\share\icons /s /y /D
 
54
xcopy %SCRIBUS_SRC_PATH%\resources\loremipsum %SCRIBUS_INSTALL_PATH%\share\loremipsum /s /y
 
55
xcopy %SCRIBUS_SRC_PATH%\resources\profiles %SCRIBUS_INSTALL_PATH%\libs\profiles /s /y
 
56
xcopy %SCRIBUS_SRC_PATH%\resources\swatches %SCRIBUS_INSTALL_PATH%\libs\swatches /s /y
 
57
xcopy %SCRIBUS_SRC_PATH%\resources\templates %SCRIBUS_INSTALL_PATH%\share\templates /s /y /D
 
58
 copy %SCRIBUS_SRC_PATH%\scribus\plugins\tools\pathcut\*.png %SCRIBUS_INSTALL_PATH%\share\icons\ /y
 
59
 copy %SCRIBUS_SRC_PATH%\scribus\plugins\tools\pathfinder\*.png %SCRIBUS_INSTALL_PATH%\share\icons\ /y
 
60
xcopy %SCRIBUS_SRC_PATH%\scribus\plugins\scriptplugin\scripts %SCRIBUS_INSTALL_PATH%\share\scripts /s /y /D
 
61
xcopy %SCRIBUS_SRC_PATH%\scribus\plugins\scriptplugin\samples %SCRIBUS_INSTALL_PATH%\share\samples /s /y
 
62
copy %SCRIBUS_SRC_PATH%\scribus\plugins\psimport\import.prolog %SCRIBUS_INSTALL_PATH%\libs\import.prolog
 
63
copy %SCRIBUS_SRC_PATH%\scribus\plugins\barcodegenerator\barcode.ps %SCRIBUS_INSTALL_PATH%\share\plugins\barcode.ps
 
64
copy %SCRIBUS_SRC_PATH%\scribus\unicodemap\unicodenameslist.txt %SCRIBUS_INSTALL_PATH%\share\unicodenameslist.txt
 
65
del %SCRIBUS_BUILD_ROOT%\*CMake* /s
 
66
del %SCRIBUS_BUILD_ROOT%\*MakeFile* /s
 
67
 
 
68
Adjust SCRIBUS_SRC_PATH, SCRIBUS_BUILD_ROOT and SCRIBUS_INSTALL_PATH as needed and run batch script.
 
69
 
 
70
Now copy the DLLs from the zlib, libpng, qt, lcms, freetype, libtiff, libjpeg,
 
71
libxml, and podofo directories into the Scribus install directory (where
 
72
scribus.exe is). Copy also the Dlls, lib and tcl directories from your python 
 
73
install to scribus install path. Finally copy python27.dll. Scribus should now run.
 
74
 
 
75
Crash problems at runtime? Verify that Qt, freetype, lcms, and Scribus all use
 
76
the same runtime, and that all were built for debugging or all for release not
 
77
a mixture of the two. Windows does not permit you to mix debug and release
 
78
executables like other platforms do.
 
79
 
 
80
You can use depends.exe to check that the runtimes match.
 
81
 
 
82
GETTING DEPENDENCIES
 
83
====================
 
84
 
 
85
This is a quick and dirty set of notes that will be filled out once everything's
 
86
verified as correct and working. It asssumes that you'll be building all your
 
87
dependencies at a single root, like C:\Developer. The root *MUST* not have spaces
 
88
in its path.
 
89
 
 
90
----
 
91
Qt:
 
92
 
 
93
Download the latest qt >= 4.6 snapshot from ftp://ftp.qt.nokia.com/qt/source
 
94
and unpack it to C:\Developer.
 
95
 
 
96
Start a command line and import your Visual Studio environment:
 
97
\path\to\visual\studio\VC\vcvarsall.bat
 
98
 
 
99
now cd to C:\Developer\qt-everywhere-whatever and run configure:
 
100
configure -debug-and-release -fast -no-qt3support -platform win32-msvc2008
 
101
 
 
102
and nmake.
 
103
 
 
104
----
 
105
Boost:
 
106
 
 
107
Download the latest boost libraries from www.boost.org. Unpack, no need to compile
 
108
anything as Scribus only use functionnalities embedded in C++ templates.
 
109
 
 
110
----
 
111
Zlib and LibPNG :
 
112
 
 
113
Zlib and LibPNG are both embedded in the QtCore library with symbols exported
 
114
for public use . If you're using a Qt binary redist you may still need to
 
115
download these libraries sources for their headers. In most cases your
 
116
copy of Qt will contain a directory called  %QTDIR%\src\3rdparty\zlib
 
117
(and one for libpng), in which case you need not worry about these libraries at
 
118
all.
 
119
 
 
120
---
 
121
Cairo and Pixman
 
122
 
 
123
Cairo and pixman sources can be downloaded from cairographics.org at following address :
 
124
 
 
125
http://cairographics.org/releases/
 
126
 
 
127
Follow instructions in sources packages to build pixman, then cairo.
 
128
 
 
129
You will however probably find easier to directly download packages with Visual Studio 2008 
 
130
solutions ready to build. You can find required file at following address :
 
131
 
 
132
https://sourceforge.net/projects/scribus/files/scribus-libs/win32-msvc2008/
 
133
 
 
134
Download the both scribus-pixman-* and scribus-cairo-* zip files. Unpack them.
 
135
 
 
136
Build pixman first : open the PixManWin32 solution located in pixman-whatever\win32 
 
137
directory and build Debug and Release configurations.
 
138
 
 
139
Build cairo afterwards : open the CairoWin32 solution located in cairo-whatever\win32 
 
140
directory and build Debug and Release configurations.
 
141
 
 
142
----
 
143
Libjpeg :
 
144
 
 
145
While Qt also bundles libjpeg, it's not linked to the main DLL but rather a plugin.
 
146
As such, we need to link to it directly.
 
147
 
 
148
Get jpeg libraries from GnuWin32 project on Sourceforge :
 
149
 
 
150
http://sourceforge.net/projects/gnuwin32/files/jpeg/6b-3/jpeg-6b-3-lib.zip/download
 
151
 
 
152
Unpack in C:\Developer. After unpacking you directory layout must be as following :
 
153
 
 
154
C:\Developer
 
155
        |- libjpeg-6b-3
 
156
                |- include
 
157
                |- lib
 
158
                |- manifest
 
159
 
 
160
----
 
161
LittleCMS :
 
162
 
 
163
Get lcms sources (>= 2.1). Although it is possible to build Scribus with lcms 1,
 
164
you can only do so without modifying lcms sources with lcms >= 2.1.
 
165
We will only describe here instructions related to lcms >= 2.1.
 
166
 
 
167
Build using VC project in Projects\VC2008 dir. Modify projects if necessary so
 
168
as to make them use the multithreaded dll runtim libraries.
 
169
Build the static libraries in debug and release configurations.
 
170
 
 
171
After building you must have a lcms2_static.lib and lcms2_staticd.lib in 
 
172
your lcms source directory. If this is not the case modify projects as necessary.
 
173
 
 
174
----
 
175
Libtiff
 
176
 
 
177
While Qt also bundles libtiff, it's not linked to the main DLL but rather a plugin.
 
178
As such, we need to link to it directly.
 
179
 
 
180
Download libtiff libraries, binaries and dependency packages from GnuWin32 project 
 
181
on sourceforge :
 
182
 
 
183
http://sourceforge.net/projects/gnuwin32/files/tiff/3.8.2/
 
184
 
 
185
Unpack them in C:\Developer. After unpacking you directory layout must be as following :
 
186
 
 
187
C:\Developer
 
188
        |- libtiff-3.8.2
 
189
            |- bin
 
190
                |- contrib
 
191
                |- include
 
192
                |- lib
 
193
                |- man
 
194
                |- manifest
 
195
 
 
196
----
 
197
Freetype:
 
198
 
 
199
Unpack freetype
 
200
 
 
201
Open include\freetype\config\ftoption.h and replace the DLL export compilation section
 
202
by following lines :
 
203
 
 
204
#ifndef __GNUC__
 
205
# define __DLL_IMPORT__  __declspec(dllimport)
 
206
# define __DLL_EXPORT__  __declspec(dllexport)
 
207
#else
 
208
# define __DLL_IMPORT__  __attribute__((dllimport)) extern
 
209
# define __DLL_EXPORT__  __attribute__((dllexport)) extern
 
210
#endif 
 
211
 
 
212
#if (defined __WIN32__) || (defined _WIN32)
 
213
# ifdef BUILD_FREETYPE2_DLL
 
214
#  define FREETYPE2_DLL_IMPEXP     __DLL_EXPORT__
 
215
# elif defined(FREETYPE2_STATIC)
 
216
#  define FREETYPE2_DLL_IMPEXP      
 
217
# elif defined (USE_FREETYPE2_DLL)
 
218
#  define FREETYPE2_DLL_IMPEXP     __DLL_IMPORT__
 
219
# elif defined (USE_FREETYPE2_STATIC)
 
220
#  define FREETYPE2_DLL_IMPEXP      
 
221
# else /* assume USE_FREETYPE2_DLL */
 
222
#  define FREETYPE2_DLL_IMPEXP     __DLL_IMPORT__
 
223
# endif
 
224
#else /* __WIN32__ */
 
225
# define FREETYPE2_DLL_IMPEXP  
 
226
#endif
 
227
 
 
228
#define FT_EXPORT(x)    FREETYPE2_DLL_IMPEXP x
 
229
#define FT_BASE(x)              FREETYPE2_DLL_IMPEXP x
 
230
 
 
231
Open builds\win32\vc2008
 
232
Build "Release Multithreaded" and "Debug Multithreaded"
 
233
 
 
234
At the end of the process you must have those files in your freetype lib
 
235
directory :
 
236
- freetype.dll
 
237
- freetype.lib
 
238
- freetypeD.dll
 
239
- freetypeD.lib
 
240
 
 
241
----
 
242
Libxml2 / iconv :
 
243
 
 
244
Download libxml2 and icon win32 binaries from following address :
 
245
 
 
246
ftp://ftp.zlatkovic.com/libxml/
 
247
 
 
248
Note that these binaries do not use the same runtime
 
249
as the rest of the binaries we're building. Feel free to
 
250
rebuild libxml to fix this, but in practice it doesn't
 
251
matter since we never pass a FILE* nor do we allocate memory
 
252
to be deallocated in libxml or vice versa.
 
253
 
 
254
Remember that iconv from the same package must be on the
 
255
header search path too. If in doubt, just drop iconv.h
 
256
into the libxml tree.
 
257
 
 
258
---
 
259
Podofo :
 
260
 
 
261
Podofo sources can be downloaded from podofo.sourceforge.net. At the moment 
 
262
those instructions are written, the recommended version to build Scribus on 
 
263
Windows is one of the 0.8.x series.
 
264
 
 
265
Follow instructions in sources packages to build Podofo.
 
266
 
 
267
You will however probably find easier to directly download packages with Visual 
 
268
Studio 2008 solutions ready to build. You can find required file at 
 
269
following address :
 
270
 
 
271
https://sourceforge.net/projects/scribus/files/scribus-libs/win32-msvc2008/
 
272
 
 
273
Download the scribus-podofo-*.zip archive. Unpack it.
 
274
 
 
275
Open the podofo solution located in podofo-whatever directory and build 
 
276
Debug and Release configurations of PoDoFoLib project.
 
277
 
 
278
Note : freetype, libtiff and libjpeg must have been installed and if 
 
279
necessary compiled before attempting to build podofo.
 
280
 
 
281
---
 
282
Python : 
 
283
 
 
284
Download latest Python 2.7 binaries (and only 2.7, 3.x will not work).
 
285
Unpack or install.
 
286
Copy the python27.lib file in python 'libs' directory to python27_d.lib
 
287
 
 
288
Open pyconfig.h in python include directory
 
289
 
 
290
Replace those lines :
 
291
 
 
292
#ifdef _DEBUG
 
293
#       define Py_DEBUG
 
294
#endif
 
295
 
 
296
by :
 
297
 
 
298
#ifdef _DEBUG
 
299
#       //define Py_DEBUG
 
300
#endif