]> git.saurik.com Git - wxWidgets.git/blob - wxPython/BUILD.win32.txt
Weekly catch-up
[wxWidgets.git] / wxPython / BUILD.win32.txt
1 Building wxPython on Win32
2 --------------------------
3
4
5 Building wxPython for use on win32 systems is a fairly simple process
6 consisting of just a few steps. However depending on where you get
7 your sources from and what your desired end result is, there are
8 several permutations of those steps. At a high level the basic steps
9 are:
10
11 1. Get the wxWindows sources
12 2. Build the wxWindows DLL
13 3. Get the wxPython sources
14 4. Build and Install wxPython
15
16 We'll go into more detail of each of these steps below, but first a
17 few bits of background information on tools.
18
19 I use a tool called SWIG (http://www.swig.org) to help generate the
20 C++ sources used in the wxPython extension module. However you don't
21 need to have SWIG unless you want to modify the *.i files. I've made
22 several modifications to SWIG specific to wxPython's needs and so the
23 modified sources are included in the wx CVS at .../wxPython/wxSWIG.
24 If you need to modify the *.i files for wxPython then change to this
25 directory and run:
26
27 nmake -f makefile.vc
28
29 Then you'll need to change a flag in the setup.py script as described
30 below so the wxPython build process will use SWIG if needed.
31
32 I use the new Python Distutils tool to build wxPython. It is included
33 with Python 2.0, but if you want to use Python 1.5.2 or 1.6 then
34 you'll need to download and install Distutils 1.0 from
35 http://www.python.org/sigs/distutils-sig/
36
37 I use Microsoft Visual C++ 6.0 (5.0 with the service packs should work
38 also) to compile the wxPython C++ sources. Since I am using Distutils
39 it should be easier now to build with other win32 compilers such as
40 the free mingw32 or Borland compilers, but I havn't tried them yet.
41 If anybody wants to try it I'll take any required patches for the
42 setup script and for these instructions.
43
44
45 UNICODE
46 -------
47
48 To build the version of wxWindows/wxPython that uses the unicode
49 version of the Win32 APIs, just follow the steps below with these
50 changes:
51
52 a. You'll need the MSLU runtime DLL and import lib. The former can
53 be downloaded from Microsoft, the latter is part of the latest
54 Platform SDK from Microsoft (see msdn.microsoft.com for
55 details). An alternative implementation of import lib can be
56 downloaded from http://libunicows.sourceforge.net
57
58 b. Add "UNICODE=1 MSLU=1" to the nmake command line when building
59 wxWindows.
60
61 c. Add "UNICODE=1" to the setup.py commandline when building
62 wxPython.
63
64 d. See the notes in CHANGES.txt about unicode.
65
66
67 And now on to the fun stuff...
68
69
70
71
72 1. Get the wxWindows sources
73 ----------------------------
74
75 A. There are a few possible ways to get sources for wxWindows. You
76 can download a released version from http://wxwindows.org/ or you
77 can get current development sources from the CVS server. (Some
78 information about annonymous CVS access is at the
79 http://wxwindows.org/cvs.htm site.) The advantage of using CVS is
80 that you can easily update as soon as the developers check in new
81 sources or fixes. The advantage of using a released version is
82 that it usually has had more thorough testing done. You can decide
83 which method is best for you.
84
85 B. You'll usually want to use wxWindows sources that have the same
86 version number as the wxPython sources you are using. (Another
87 advantage of using CVS is that you'll get both at the same time.)
88
89 C. Once you get the sources be sure to put them in a path without a
90 space in it (i.e., NOT c:\Program Files\wx) and set an environment
91 variable named WXWIN to this directory. For example:
92
93 mkdir \wx2
94 cd \wx2
95 unzip wxMSW-2.2.2.zip
96 set WXWIN=c:\wx2
97
98 You'll probably want to add that last line to your autoexec.bat or
99 System Properties depending on the type of system you are on.
100
101 D. Change to the wx2\include\wx\msw directory and copy setup0.h to
102 setup.h and then edit setup.h. This is how you control which parts
103 of wxWindows are compiled into or left out of the build, simply by
104 turning options on or off. I have the following differences from
105 the default setup0.h in my setup.h, but you can experiment with
106 other settings if you like:
107
108 WXWIN_COMPATIBILITY_2_2 0
109 wxDIALOG_UNIT_COMPATIBILITY 0
110 wxUSE_MEMORY_TRACING 1
111 wxUSE_CMDLINE_PARSER 0
112 wxUSE_FSVOLUME 0
113 wxUSE_DIALUP_MANAGER 0
114 wxUSE_DYNAMIC_LOADER 0
115 wxUSE_TREELAYOUT 0
116 wxUSE_MS_HTML_HELP 0
117 wxUSE_POSTSCRIPT 1
118
119
120 ** NEW **
121 Be sure that wxUSE_GLCANVAS is defined to be 0 as wxPython now
122 keeps its own copy of the glcanvas sources and expects that it is
123 not in the main library. This is done to reduce the number of
124 dependant DLLs on the core library and therefore help reduce
125 startup time.
126
127
128
129 2. Build the wxWindows DLL
130 ---------------------------
131
132 A. Although MSVC project files are provided I always use the makefiles
133 to build wxWindows because by default the flags are compatible with
134 Python, (and I make sure they stay that way.) You would have to
135 edit the project files a bit to make it work otherwise.
136
137 B. There are three different types of wxWindows DLLs that can be
138 produced by the VC makefile simply by providing a flag on the nmake
139 command-line, I call the three types DEBUG, FINAL, and HYBRID.
140 Here are some more details:
141
142 DEBUG Specified with "FINAL=0" and produces a DLL named
143 wxmsw[version]d.dll. This DLL is compiled with full
144 debugging information and with the __WXDEBUG__ macro set,
145 which enables some debugging-only code in wxWindows such
146 as assertions and failure log messages. The /MDd flag is
147 used which means that it is linked with the debugging
148 version of the C runtime library and also that you must
149 use the debugging version of Python, (python_d.exe and
150 pythonXX_d.dll) which also means that all extensions
151 loaded by Python should also have the _d in the name.
152 With this option you can use the MSVC debugger to trace
153 though the Python interpreter, as well as the code for the
154 wxPython extension and the wxWindows DLL.
155
156 FINAL Specified with "FINAL=1" and produces a DLL named
157 wxmsw[version].dll. This DLL is compiled with optimizations
158 turned on and without debugging information and without
159 __WXDEBUG__. The /MD flag is used which means that you
160 can use this version with the standard python.exe. This
161 is the version that I use when making the binary installer
162 for win32.
163
164 HYBRID Specified with "FINAL=hybrid" and produces a DLL named
165 wxmsw[version]h.dll. This DLL is almost the same as the
166 DEBUG version except the /MD flag is used which means that
167 you can use the standard python.exe but you still get the
168 debugging info and the __WXDEBUG__ code enabled. With the
169 debugger you can trace through the the code for the
170 wxPython extension and the wxWindows DLL, but not the
171 Python interpreter. You might use this version when you
172 want to deploy a wxPython app with the __WXDEBUG__ code
173 enabled. I use this mode most of the time during
174 development simply because it's easier than having to
175 remember to type python_d all the time.
176
177 Since different DLL names and object file directories are used you
178 can build all three types if you like.
179
180 C. Change to the wx2\src\msw directory and type the following command,
181 using the value for FINAL that you want:
182
183 nmake -f makefile.vc dll pch FINAL=hybrid
184
185 Your machine will then crunch away for possibly a long time,
186 depending on your hardware, and when it's done you should have a
187 DLL and some library files in \wx2\lib.
188
189 D. You'll either need to add \wx2\lib to the PATH or copy the DLL file
190 to a directory already on the PATH so the DLL can be found at
191 runtime. Another option is to copy the DLL to the directory that
192 the wxPython pacakge is installed to, for example,
193 c:\Python22\lib\site-packages\wxPython.
194
195 E. You can test your build by changing to one of the directories under
196 \wx2\samples or \wx2\demos and typing (using the right FINAL flag):
197
198 nmake -f makefile.vc FINAL=hybrid WXUSINGDLL=1
199
200 and then executing the resulting .exe file.
201
202
203
204 3. Get the wxPython sources
205 ---------------------------
206
207 A. You have the same options (and same advantages/disadvantages) for
208 getting the wxPython source, either a released snapshot or from
209 CVS. The released version file is named wxPython-[version].tar.gz
210 and is available at http://wxpython.org/download.php. You can use
211 WinZip to unpack it if you don't have tar and gzip. If you want to
212 use CVS you'll find wxPython in the wxWindows CVS tree (see above)
213 in the wxWindows/wxPython directory.
214
215
216
217 4. Build and Install wxPython
218 -----------------------------
219
220 A. As mentioned previouslly, wxPython is built with the standard
221 Python Distutils tool. If you are using Python 2.0 or later you
222 are all set, otherwise you need to download and install Distutils
223 1.0 from http://www.python.org/sigs/distutils-sig/.
224
225 B. Change to the root wxPython directory and look at the setup.py
226 file. This is the script that configures and defines all the
227 information that Distutils needs to build wxPython. There are some
228 options near the begining of the script that you may want or need
229 to change based on what options you have selected up to this point,
230 (type of DLL built, sources from tar.gz or from CVS, etc.) You can
231 either change these flags directly in setup.py or supply them on
232 the command-line.
233
234 BUILD_GLCANVAS Set to zero if you don't want to build the
235 Open GL canvas extension module.
236
237 BUILD_OGL Set to zero if you don't want to build the
238 Object Graphics Library extension module.
239
240 BUILD_STC Set to zero if you don't want to build the
241 wxStyledTextCtrl (the Scintilla wrapper)
242 extension module.
243
244 USE_SWIG If you have edited any of the *.i files you
245 will need to set this flag to non-zero so SWIG
246 will be executed to regenerate the wrapper C++
247 and shadow python files.
248
249 IN_CVS_TREE If you are using the CVS version of the
250 wxWindows and wxPython sources then you will
251 need to set this flag to non-zero. This is
252 needed because some source files from the
253 wxWindows tree are copied to be under the
254 wxPython tree in order to keep Distutils happy.
255 With this flag set then setup.py will
256 automatically keep these copied sources up to
257 date if the original version is ever updated.
258 If you are using the tar.gz version of the
259 Python sources then these copied sources are
260 already present in your source tree.
261
262
263 C. To build and install wxPython you simply need to execute the
264 setup.py script. If you have more than one version of Python
265 installed, be sure to execute setup.py with the version you want to
266 build wxPython for.
267
268 Depending on what kind of wxWindows DLL you built there are
269 different command-line parameters you'll want to pass to setup (in
270 addition to possibly one or more of the above):
271
272 FINAL: python setup.py install
273
274 DEBUG: python setup.py build --debug install
275
276 HYBRID: python setup.py HYBRID=1 install
277
278 NOTE: If you get an internal compiler error from MSVC then you
279 need to edit setup.py and add in the /GX- flag that is normally
280 commented out. Just search for "GX-" and uncomment it so it is put
281 into the cflags list.
282
283
284 D. At this point you should be able to change into the wxPython\demo
285 directory and run the demo:
286
287 python demo.py
288
289 E. If you would like to make a test build that doesn't overwrite the
290 installed version of wxPython you can do so with one of these
291 commands instead of the install command above:
292
293 FINAL: python setup.py build_ext --inplace
294
295 DEBUG: python setup.py build_ext --debug --inplace
296
297 HYBRID: python setup.py HYBRID=1 build_ext --inplace
298
299 This will build the wxPython package in the local wxPython
300 directory instead of installing it under your Python installation.
301 To run using this test version just add the base wxPython source
302 directory to the PYTHONPATH:
303
304 set PYTHONPATH=c:\wx2\wxPython
305 cd c:\wx2\wxPython\demo
306 python demo.py
307
308
309 That's all folks!
310
311
312 -----------------
313 robin@alldunn.com
314