Subversion Repositories Scribus

Rev

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