Subversion Repositories Scribus

Rev

Rev 17537 | Rev 18026 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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