blob: f565c5aec2464f711e9dafe311a2f677fa1969ba [file] [log] [blame]
Tim Peters4b5fb072000-07-01 00:03:43 +00001Building Python using VC++ 6.0 or 5.0
Guido van Rossuma29b3602000-03-29 01:51:37 +00002-------------------------------------
Tim Peters4b5fb072000-07-01 00:03:43 +00003This directory is used to build Python for Win32 platforms, e.g. Windows
495, 98 and NT. It requires Microsoft Visual C++ 6.x or 5.x.
Guido van Rossum15b239f1998-05-26 14:16:23 +00005(For other Windows platforms and compilers, see ../PC/readme.txt.)
6
Tim Peters4b5fb072000-07-01 00:03:43 +00007All you need to do is open the workspace "pcbuild.dsw" in MSVC++, select
8the Debug or Release setting (using Build -> Set Active Configuration...),
9and build the projects.
Guido van Rossum15b239f1998-05-26 14:16:23 +000010
Tim Petersbefc97c2001-01-18 19:01:39 +000011The proper order to build subprojects:
Guido van Rossum15b239f1998-05-26 14:16:23 +000012
Tim Peters97c96402001-01-17 23:23:13 +0000131) pythoncore (this builds the main Python DLL and library files,
Tim Petersbefc97c2001-01-18 19:01:39 +000014 python21.{dll, lib} in Release mode)
15 NOTE: in previous releases, this subproject was
16 named after the release number, e.g. python20.
Guido van Rossum15b239f1998-05-26 14:16:23 +000017
Tim Petersbefc97c2001-01-18 19:01:39 +0000182) python (this builds the main Python executable,
19 python.exe in Release mode)
Tim Peters4b5fb072000-07-01 00:03:43 +000020
213) the other subprojects, as desired or needed (note: you probably don't
22 want to build most of the other subprojects, unless you're building an
23 entire Python distribution from scratch, or specifically making changes
24 to the subsystems they implement; see SUBPROJECTS below)
Guido van Rossum15b239f1998-05-26 14:16:23 +000025
26When using the Debug setting, the output files have a _d added to
Tim Peters97c96402001-01-17 23:23:13 +000027their name: python21_d.dll, python_d.exe, parser_d.pyd, and so on.
Guido van Rossume79cf321998-07-07 22:35:03 +000028
Tim Peters4b5fb072000-07-01 00:03:43 +000029SUBPROJECTS
30-----------
Tim Peters610a8272000-07-01 02:51:23 +000031These subprojects should build out of the box. Subprojects other than the
Tim Petersbefc97c2001-01-18 19:01:39 +000032main ones (pythoncore, python, pythonw) generally build a DLL (renamed to
Tim Peters610a8272000-07-01 02:51:23 +000033.pyd) from a specific module so that users don't have to load the code
Tim Peters4b5fb072000-07-01 00:03:43 +000034supporting that module unless they import the module.
Guido van Rossume79cf321998-07-07 22:35:03 +000035
Tim Peters97c96402001-01-17 23:23:13 +000036pythoncore
Tim Peters4b5fb072000-07-01 00:03:43 +000037 .dll and .lib
38python
39 .exe
40pythonw
41 pythonw.exe, a variant of python.exe that doesn't pop up a DOS box
42_socket
43 socketmodule.c
44_sre
45 Unicode-aware regular expression engine
Tim Petersb16c56f2001-02-02 21:24:51 +000046_symtable
47 the _symtable module, symtablemodule.c
Tim Petersd66595f2001-02-04 03:09:53 +000048_testcapi
Tim Petersb16c56f2001-02-02 21:24:51 +000049 tests of the Python C API, run via Lib/test/test_capi.py, and
Tim Petersd66595f2001-02-04 03:09:53 +000050 implemented by module Modules/_testcapimodule.c
Tim Peters4b5fb072000-07-01 00:03:43 +000051mmap
52 mmapmodule.c
53parser
54 the parser module
Tim Petersb012a152002-02-13 23:56:46 +000055pyexpat
56 Python wrapper for accelerated XML parsing, which incorporates stable
57 code from the Expat project: http://sourceforge.net/projects/expat/
Tim Peters4b5fb072000-07-01 00:03:43 +000058select
59 selectmodule.c
Tim Peters19f52c22001-01-24 10:07:22 +000060unicodedata
Tim Peters4b5fb072000-07-01 00:03:43 +000061 large tables of Unicode data
62winreg
63 Windows registry API
64winsound
65 play sounds (typically .wav files) under Windows
66
67The following subprojects will generally NOT build out of the box. They
68wrap code Python doesn't control, and you'll need to download the base
Tim Petersaff12842000-08-25 06:52:44 +000069packages first and unpack them into siblings of PCbuilds's parent
70directory; for example, if your PCbuild is .......\dist\src\PCbuild\,
71unpack into new subdirectories of dist\.
Tim Peters4b5fb072000-07-01 00:03:43 +000072
73_tkinter
Tim Peters077736b2002-11-14 23:24:40 +000074 Python wrapper for the Tk windowing system. Requires building
75 Tcl/Tk first. Following are instructions for Tcl/Tk 8.4.1:
76
77 Get source
78 ----------
79 Go to
80 http://prdownloads.sourceforge.net/tcl/
81 and download
82 tcl841-src.zip
83 tk841-src.zip
84 Unzip into
85 dist\tcl8.4.1\
Tim Peters6c629952002-11-15 18:36:11 +000086 dist\tk8.4.1\
Tim Peters077736b2002-11-14 23:24:40 +000087 respectively.
88
Tim Peters6c629952002-11-15 18:36:11 +000089 Build Tcl first (done here w/ MSVC 6 on Win2K; also Win98SE)
90 ---------------
Tim Peters077736b2002-11-14 23:24:40 +000091 cd dist\tcl8.4.1\win
92 run vcvars32.bat [necessary even on Win2K]
93 nmake -f makefile.vc
94 nmake -f makefile.vc INSTALLDIR=..\..\tcl84 install
95
96 XXX Should we compile with OPTS=threads?
97
98 XXX Some tests failed in "nmake -f makefile.vc test".
99
Tim Peters077736b2002-11-14 23:24:40 +0000100 Build Tk
Tim Peters6c629952002-11-15 18:36:11 +0000101 --------
Tim Peters077736b2002-11-14 23:24:40 +0000102 cd dist\tk8.4.1\win
103 nmake -f makefile.vc TCLDIR=..\..\tcl8.4.1
104 nmake -f makefile.vc TCLDIR=..\..\tcl8.4.1 INSTALLDIR=..\..\tcl84 install
105
106 XXX Should we compile with OPTS=threads?
107
108 XXX Some tests failed in "nmake -f makefile.vc test".
109
110 XXX Our installer copies a lot of stuff out of the Tcl/Tk install
111 XXX directory. Is all of that really needed for Python use of Tcl/Tk?
112
Tim Petersa406b582002-11-19 17:38:27 +0000113 Make sure the installer matches
114 -------------------------------
115 Ensure that the Wise compiler vrbl _TCLDIR_ is set to the name of
116 the common Tcl/Tk installation directory (tcl84 for the instructions
117 above). This is needed so the installer can copy various Tcl/Tk
118 files into the Python distribution.
119
Tim Peters4b5fb072000-07-01 00:03:43 +0000120
121zlib
Tim Petersee826f82001-01-31 19:39:44 +0000122 Python wrapper for the zlib compression library. Get the source code
Tim Peters6077f642002-03-13 21:51:55 +0000123 for version 1.1.4 from a convenient mirror at:
124 http://www.gzip.org/zlib/
125 Unpack into dist\zlib-1.1.4.
Tim Petersee826f82001-01-31 19:39:44 +0000126 A custom pre-link step in the zlib project settings should manage to
Tim Peters6077f642002-03-13 21:51:55 +0000127 build zlib-1.1.4\zlib.lib by magic before zlib.pyd (or zlib_d.pyd) is
Tim Petersee826f82001-01-31 19:39:44 +0000128 linked in PCbuild\.
129 However, the zlib project is not smart enough to remove anything under
Tim Peters6077f642002-03-13 21:51:55 +0000130 zlib-1.1.4\ when you do a clean, so if you want to rebuild zlib.lib
131 you need to clean up zlib-1.1.4\ by hand.
Tim Peters4b5fb072000-07-01 00:03:43 +0000132
Tim Petersb0ead4e2002-11-09 04:48:58 +0000133bz2
134 Python wrapper for the libbz2 compression library. Homepage
135 http://sources.redhat.com/bzip2/
136 Download the source tarball, bzip2-1.0.2.tar.gz.
Tim Peters077736b2002-11-14 23:24:40 +0000137 Unpack into dist\bzip2-1.0.2. WARNING: If you're using WinZip, you
Tim Petersb0ead4e2002-11-09 04:48:58 +0000138 must disable its "TAR file smart CR/LF conversion" feature (under
139 Options -> Configuration -> Miscellaneous -> Other) for the duration.
Tim Peters077736b2002-11-14 23:24:40 +0000140
Tim Petersb0ead4e2002-11-09 04:48:58 +0000141 Don't bother trying to use libbz2.dsp with MSVC. After 10 minutes
142 of fiddling, I couldn't get it to work. Perhaps it works with
143 MSVC 5 (I used MSVC 6). It's better to run the by-hand makefile
Tim Peters077736b2002-11-14 23:24:40 +0000144 anyway, because it runs a helpful test step at the end.
145
Tim Petersb0ead4e2002-11-09 04:48:58 +0000146 cd into dist\bzip2-1.0.2, and run
147 nmake -f makefile.msc
148 [Note that if you're running Win9X, you'll need to run vcvars32.bat
149 before running nmake (this batch file is in your MSVC installation).
150 TODO: make this work like zlib (in particular, MSVC runs the prelink
151 step in an enviroment that already has the correct envars set up).
152 ]
Tim Peters077736b2002-11-14 23:24:40 +0000153 The make step shouldn't yield any warnings or errors, and should end
Tim Petersb0ead4e2002-11-09 04:48:58 +0000154 by displaying 6 blocks each terminated with
155 FC: no differences encountered
156 If FC finds differences, see the warning abou WinZip above (when I
157 first tried it, sample3.ref failed due to CRLF conversion).
Tim Peters077736b2002-11-14 23:24:40 +0000158
Tim Petersb0ead4e2002-11-09 04:48:58 +0000159 All of this managed to build bzip2-1.0.2\libbz2.lib, which the Python
160 project links in.
161
162
Tim Peters78e35f92002-11-22 20:00:34 +0000163_bsddb
Tim Peters84c7a3f2002-11-23 18:48:06 +0000164 XXX The Sleepycat release we use will probably change before
165 XXX 2.3a1.
Tim Peters78e35f92002-11-22 20:00:34 +0000166 Go to Sleepycat's patches page:
167 http://www.sleepycat.com/update/index.html
168 and download
169 4.0.14.zip
170 from the download page. The file name is db-4.0.14.zip. Unpack into
171 dist\db-4.0.14
Tim Petersb0ead4e2002-11-09 04:48:58 +0000172
Tim Peters78e35f92002-11-22 20:00:34 +0000173 Apply the patch file bsddb_patch.txt in this (PCbuild) directory
174 against the file
175 dist\db-4.0.14\db\db_reclaim.c
176
177 Go to
178 http://www.sleepycat.com/docs/ref/build_win/intro.html
179 and follow the instructions for building the Sleepycat software.
180 Build the Release version.
Tim Peters19cf4ee2002-11-23 03:49:08 +0000181 NOTE: The instructions are for a later release of the software,
182 so use your imagination. Berkeley_DB.dsw in this release was
183 also pre-MSVC6, so you'll be prompted to upgrade the format (say
184 yes, of course). Choose configuration "db_buildall - Win32 Release",
185 and build db_buildall.exe.
Tim Peters78e35f92002-11-22 20:00:34 +0000186
Tim Peters84c7a3f2002-11-23 18:48:06 +0000187 XXX We're actually linking against Release_static\libdb40s.lib.
188 XXX This yields the following warnings:
189"""
190Compiling...
191_bsddb.c
192Linking...
193 Creating library ./_bsddb.lib and object ./_bsddb.exp
194LINK : warning LNK4049: locally defined symbol "_malloc" imported
195LINK : warning LNK4049: locally defined symbol "_free" imported
196LINK : warning LNK4049: locally defined symbol "_fclose" imported
197LINK : warning LNK4049: locally defined symbol "_fopen" imported
198_bsddb.pyd - 0 error(s), 4 warning(s)
199"""
200 XXX This isn't encouraging, but I don't know what to do about it.
Tim Peters78e35f92002-11-22 20:00:34 +0000201
Tim Peterse8bcb252002-12-04 02:39:52 +0000202
Mark Hammondf229f9f2002-12-03 05:47:26 +0000203_ssl
Tim Peterse8bcb252002-12-04 02:39:52 +0000204 Python wrapper for the secure sockets library.
Tim Peters4b5fb072000-07-01 00:03:43 +0000205
Mark Hammondf229f9f2002-12-03 05:47:26 +0000206 Get the latest source code for OpenSSL from
207 http://www.openssl.org
208
Tim Peterse8bcb252002-12-04 02:39:52 +0000209 You (probably) don't want the "engine" code. For example, get
210 openssl-0.9.6g.tar.gz
211 not
212 openssl-engine-0.9.6g.tar.gz
213
Mark Hammondf229f9f2002-12-03 05:47:26 +0000214 Unpack into the "dist" directory, retaining the folder name from
215 the archive - for example, the latest stable OpenSSL will install as
216 dist/openssl-0.9.6g
217
218 You can (theoretically) use any version of OpenSSL you like - the
219 build process will automatically select the latest version.
220
221 You must also install ActivePerl from
222 http://www.activestate.com/Products/ActivePerl/
Tim Peterse8bcb252002-12-04 02:39:52 +0000223 as this is used by the OpenSSL build process. Complain to them <wink>.
Mark Hammondf229f9f2002-12-03 05:47:26 +0000224
225 The MSVC project simply invokes PCBuild/build_ssl.py to perform
Tim Peterse8bcb252002-12-04 02:39:52 +0000226 the build. This Python script locates and builds your OpenSSL
Mark Hammondf229f9f2002-12-03 05:47:26 +0000227 installation, then invokes a simple makefile to build the final .pyd.
228
Tim Peters6ee68d22002-12-04 03:16:37 +0000229 Win9x users: see "Win9x note" below.
230
Mark Hammondf229f9f2002-12-03 05:47:26 +0000231 build_ssl.py attempts to catch the most common errors (such as not
232 being able to find OpenSSL sources, or not being able to find a Perl
233 that works with OpenSSL) and give a reasonable error message.
234 If you have a problem that doesn't seem to be handled correctly
235 (eg, you know you have ActivePerl but we can't find it), please take
236 a peek at build_ssl.py and suggest patches. Note that build_ssl.py
237 should be able to be run directly from the command-line.
238
Tim Peterse8bcb252002-12-04 02:39:52 +0000239 build_ssl.py/MSVC isn't clever enough to clean OpenSSL - you must do
240 this by hand.
Tim Peters4b5fb072000-07-01 00:03:43 +0000241
Tim Peters6ee68d22002-12-04 03:16:37 +0000242 Win9x note: If, near the start of the build process, you see
243 something like
244
245 C:\Code\openssl-0.9.6g>set OPTS=no-asm
246 Out of environment space
247
Tim Peters21d77f52002-12-04 04:00:12 +0000248 then you're in trouble, and will probably also see these errors near
Tim Peters6ee68d22002-12-04 03:16:37 +0000249 the end of the process:
250
251 NMAKE : fatal error U1073: don't know how to make
252 'crypto\md5\asm\m5_win32.asm'
253 Stop.
254 NMAKE : fatal error U1073: don't know how to make
255 'C:\Code\openssl-0.9.6g/out32/libeay32.lib'
256 Stop.
257
258 You need more environment space. Win9x only has room for 256 bytes
259 by default, and especially after installing ActivePerl (which fiddles
260 the PATH envar), you're likely to run out. KB Q230205
261
262 http://support.microsoft.com/default.aspx?scid=KB;en-us;q230205
263
264 explains how to edit CONFIG.SYS to cure this.
265
266
Tim Petersf9a4a6e2000-07-01 20:38:27 +0000267YOUR OWN EXTENSION DLLs
Tim Peters4b5fb072000-07-01 00:03:43 +0000268-----------------------
269If you want to create your own extension module DLL, there's an example
270with easy-to-follow instructions in ../PC/example/; read the file
271readme.txt there first.