blob: db27ab94925ec45ad486ae847f817a641bde655c [file] [log] [blame]
Martin v. Löwisb38b0192004-01-02 21:13:28 +00001Building Python using VC++ 7.1
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
Martin v. Löwisb38b0192004-01-02 21:13:28 +0000495, 98 and NT. It requires Microsoft Visual C++ 7.1
5(a.k.a. Visual Studio .NET 2003).
Guido van Rossum15b239f1998-05-26 14:16:23 +00006(For other Windows platforms and compilers, see ../PC/readme.txt.)
7
Martin v. Löwisb38b0192004-01-02 21:13:28 +00008All you need to do is open the workspace "pcbuild.sln" in MSVC++, select
9the Debug or Release setting (using "Solution Configuration" from
10the "Standard" toolbar"), and build the projects.
Guido van Rossum15b239f1998-05-26 14:16:23 +000011
Tim Petersbefc97c2001-01-18 19:01:39 +000012The proper order to build subprojects:
Guido van Rossum15b239f1998-05-26 14:16:23 +000013
Tim Peters97c96402001-01-17 23:23:13 +0000141) pythoncore (this builds the main Python DLL and library files,
Tim Peters63db6282005-08-07 02:47:12 +000015 python25.{dll, lib} in Release mode)
Tim Petersbefc97c2001-01-18 19:01:39 +000016 NOTE: in previous releases, this subproject was
17 named after the release number, e.g. python20.
Guido van Rossum15b239f1998-05-26 14:16:23 +000018
Tim Petersbefc97c2001-01-18 19:01:39 +0000192) python (this builds the main Python executable,
20 python.exe in Release mode)
Tim Peters4b5fb072000-07-01 00:03:43 +000021
223) the other subprojects, as desired or needed (note: you probably don't
23 want to build most of the other subprojects, unless you're building an
24 entire Python distribution from scratch, or specifically making changes
25 to the subsystems they implement; see SUBPROJECTS below)
Guido van Rossum15b239f1998-05-26 14:16:23 +000026
27When using the Debug setting, the output files have a _d added to
Tim Peters63db6282005-08-07 02:47:12 +000028their name: python25_d.dll, python_d.exe, parser_d.pyd, and so on.
Guido van Rossume79cf321998-07-07 22:35:03 +000029
Tim Peters4b5fb072000-07-01 00:03:43 +000030SUBPROJECTS
31-----------
Tim Peters610a8272000-07-01 02:51:23 +000032These subprojects should build out of the box. Subprojects other than the
Tim Petersbefc97c2001-01-18 19:01:39 +000033main ones (pythoncore, python, pythonw) generally build a DLL (renamed to
Tim Peters610a8272000-07-01 02:51:23 +000034.pyd) from a specific module so that users don't have to load the code
Tim Peters4b5fb072000-07-01 00:03:43 +000035supporting that module unless they import the module.
Guido van Rossume79cf321998-07-07 22:35:03 +000036
Tim Peters97c96402001-01-17 23:23:13 +000037pythoncore
Tim Peters4b5fb072000-07-01 00:03:43 +000038 .dll and .lib
39python
40 .exe
41pythonw
42 pythonw.exe, a variant of python.exe that doesn't pop up a DOS box
43_socket
44 socketmodule.c
Tim Petersd66595f2001-02-04 03:09:53 +000045_testcapi
Tim Petersb16c56f2001-02-02 21:24:51 +000046 tests of the Python C API, run via Lib/test/test_capi.py, and
Tim Petersd66595f2001-02-04 03:09:53 +000047 implemented by module Modules/_testcapimodule.c
Tim Petersb012a152002-02-13 23:56:46 +000048pyexpat
49 Python wrapper for accelerated XML parsing, which incorporates stable
50 code from the Expat project: http://sourceforge.net/projects/expat/
Tim Peters4b5fb072000-07-01 00:03:43 +000051select
52 selectmodule.c
Tim Peters19f52c22001-01-24 10:07:22 +000053unicodedata
Tim Peters4b5fb072000-07-01 00:03:43 +000054 large tables of Unicode data
Tim Peters4b5fb072000-07-01 00:03:43 +000055winsound
56 play sounds (typically .wav files) under Windows
57
58The following subprojects will generally NOT build out of the box. They
59wrap code Python doesn't control, and you'll need to download the base
Tim Petersaff12842000-08-25 06:52:44 +000060packages first and unpack them into siblings of PCbuilds's parent
61directory; for example, if your PCbuild is .......\dist\src\PCbuild\,
62unpack into new subdirectories of dist\.
Tim Peters4b5fb072000-07-01 00:03:43 +000063
64_tkinter
Tim Peters077736b2002-11-14 23:24:40 +000065 Python wrapper for the Tk windowing system. Requires building
Martin v. Löwis6de2d4d2004-08-30 09:22:04 +000066 Tcl/Tk first. Following are instructions for Tcl/Tk 8.4.7; these
Guido van Rossumd54357d2004-03-20 21:00:26 +000067 should work for version 8.4.6 too, with suitable substitutions:
Tim Peters077736b2002-11-14 23:24:40 +000068
69 Get source
70 ----------
71 Go to
72 http://prdownloads.sourceforge.net/tcl/
73 and download
Martin v. Löwis6de2d4d2004-08-30 09:22:04 +000074 tcl847-src.zip
75 tk847-src.zip
Tim Peters077736b2002-11-14 23:24:40 +000076 Unzip into
Martin v. Löwis6de2d4d2004-08-30 09:22:04 +000077 dist\tcl8.4.7\
78 dist\tk8.4.7\
Tim Peters077736b2002-11-14 23:24:40 +000079 respectively.
80
Guido van Rossumd54357d2004-03-20 21:00:26 +000081 Build Tcl first (done here w/ MSVC 7.1 on Windows XP)
Tim Peters6c629952002-11-15 18:36:11 +000082 ---------------
Guido van Rossumd54357d2004-03-20 21:00:26 +000083 Use "Start -> All Programs -> Microsoft Visual Studio .NET 2003
84 -> Visual Studio .NET Tools -> Visual Studio .NET 2003 Command Prompt"
85 to get a shell window with the correct environment settings
Martin v. Löwis6de2d4d2004-08-30 09:22:04 +000086 cd dist\tcl8.4.7\win
Tim Peters077736b2002-11-14 23:24:40 +000087 nmake -f makefile.vc
Martin v. Löwis6de2d4d2004-08-30 09:22:04 +000088 nmake -f makefile.vc INSTALLDIR=..\..\tcltk install
Tim Peters077736b2002-11-14 23:24:40 +000089
90 XXX Should we compile with OPTS=threads?
91
Tim Peters011de6cc2004-04-11 17:29:12 +000092 Optional: run tests, via
93 nmake -f makefile.vc test
94
Martin v. Löwis6de2d4d2004-08-30 09:22:04 +000095 On WinXP Pro, wholly up to date as of 30-Aug-2004:
Tim Peterse82b00f2004-08-30 21:14:51 +000096 all.tcl: Total 10678 Passed 9969 Skipped 709 Failed 0
Tim Peters011de6cc2004-04-11 17:29:12 +000097 Sourced 129 Test Files.
Tim Peters077736b2002-11-14 23:24:40 +000098
Tim Peters077736b2002-11-14 23:24:40 +000099 Build Tk
Tim Peters6c629952002-11-15 18:36:11 +0000100 --------
Martin v. Löwis6de2d4d2004-08-30 09:22:04 +0000101 cd dist\tk8.4.7\win
102 nmake -f makefile.vc TCLDIR=..\..\tcl8.4.7
103 nmake -f makefile.vc TCLDIR=..\..\tcl8.4.7 INSTALLDIR=..\..\tcltk install
Tim Peters077736b2002-11-14 23:24:40 +0000104
105 XXX Should we compile with OPTS=threads?
106
Tim Peters077736b2002-11-14 23:24:40 +0000107 XXX Our installer copies a lot of stuff out of the Tcl/Tk install
108 XXX directory. Is all of that really needed for Python use of Tcl/Tk?
109
Tim Peters011de6cc2004-04-11 17:29:12 +0000110 Optional: run tests, via
Martin v. Löwis6de2d4d2004-08-30 09:22:04 +0000111 nmake -f makefile.vc TCLDIR=..\..\tcl8.4.7 test
Tim Peters011de6cc2004-04-11 17:29:12 +0000112
Martin v. Löwis6de2d4d2004-08-30 09:22:04 +0000113 On WinXP Pro, wholly up to date as of 30-Aug-2004:
Tim Peterse82b00f2004-08-30 21:14:51 +0000114 all.tcl: Total 8420 Passed 6826 Skipped 1581 Failed 13
Martin v. Löwis6de2d4d2004-08-30 09:22:04 +0000115 Sourced 91 Test Files.
Tim Peterse82b00f2004-08-30 21:14:51 +0000116 Files with failing tests: canvImg.test scrollbar.test textWind.test winWm.test
Tim Peters63db6282005-08-07 02:47:12 +0000117
Martin v. Löwis3cf21632004-08-31 16:22:09 +0000118 Built Tix
119 ---------
120 Download from http://prdownloads.sourceforge.net/tix/tix-8.1.4.tar.gz
121 cd dist\tix-8.1.4
122 [cygwin]patch -p1 < ..\..\python\PC\tix.diff
123 cd win
124 nmake -f makefile.vc
125 nmake -f makefile.vc install
Tim Peters4b5fb072000-07-01 00:03:43 +0000126
Tim Petersb0ead4e2002-11-09 04:48:58 +0000127bz2
128 Python wrapper for the libbz2 compression library. Homepage
129 http://sources.redhat.com/bzip2/
Martin v. Löwisf6f79252006-03-13 13:48:05 +0000130 Download the source from the python.org copy into the dist
131 directory:
132
Martin v. Löwis14c1cf82006-03-13 10:52:04 +0000133 svn export http://svn.python.org/projects/external/bzip2-1.0.3
Tim Peters077736b2002-11-14 23:24:40 +0000134
Thomas Heller46a007e2003-08-20 18:27:36 +0000135 A custom pre-link step in the bz2 project settings should manage to
136 build bzip2-1.0.2\libbz2.lib by magic before bz2.pyd (or bz2_d.pyd) is
137 linked in PCbuild\.
138 However, the bz2 project is not smart enough to remove anything under
Martin v. Löwis14c1cf82006-03-13 10:52:04 +0000139 bzip2-1.0.3\ when you do a clean, so if you want to rebuild bzip2.lib
140 you need to clean up bzip2-1.0.3\ by hand.
Tim Peters077736b2002-11-14 23:24:40 +0000141
Thomas Heller46a007e2003-08-20 18:27:36 +0000142 The build step shouldn't yield any warnings or errors, and should end
Tim Petersb0ead4e2002-11-09 04:48:58 +0000143 by displaying 6 blocks each terminated with
144 FC: no differences encountered
145 If FC finds differences, see the warning abou WinZip above (when I
146 first tried it, sample3.ref failed due to CRLF conversion).
Tim Peterscaba60a2004-01-04 02:04:35 +0000147
Martin v. Löwis14c1cf82006-03-13 10:52:04 +0000148 All of this managed to build bzip2-1.0.3\libbz2.lib, which the Python
Tim Petersb0ead4e2002-11-09 04:48:58 +0000149 project links in.
150
151
Tim Peters78e35f92002-11-22 20:00:34 +0000152_bsddb
Martin v. Löwisf6f79252006-03-13 13:48:05 +0000153 To use the version of bsddb that Python is built with by default is, invoke
154 (in the dist directory)
Tim Petersb0ead4e2002-11-09 04:48:58 +0000155
Martin v. Löwisf6f79252006-03-13 13:48:05 +0000156 svn export http://svn.python.org/projects/external/db-4.4.20
157
158
159 Then open a VS.NET 2003 shell, and invoke
160
161 devenv db-4.4.20\build_win32\Berkeley_DB.sln /build Release /project db_static
162
163 Alternatively, if you want to start with the original sources,
164 go to Sleepycat's download page:
165 http://www.sleepycat.com/downloads/releasehistorybdb.html
166
167 and download version 4.4.20.
Tim Peters011de6cc2004-04-11 17:29:12 +0000168
169 With or without strong cryptography? You can choose either with or
170 without strong cryptography, as per the instructions below. By
Thomas Heller81391402004-07-02 08:58:46 +0000171 default, Python is built and distributed WITHOUT strong crypto.
Tim Peters011de6cc2004-04-11 17:29:12 +0000172
Martin v. Löwisf6f79252006-03-13 13:48:05 +0000173 Unpack the sources; if you downloaded the non-crypto version, rename
174 the directory from db-4.4.20.NC to db-4.4.20.
Tim Peters011de6cc2004-04-11 17:29:12 +0000175
Martin v. Löwisf6f79252006-03-13 13:48:05 +0000176 Now apply any patches that apply to your version.
Tim Petersa0d781a2004-04-11 18:23:06 +0000177
Tim Peters00640262003-01-24 15:31:31 +0000178 Open
Martin v. Löwisf6f79252006-03-13 13:48:05 +0000179 dist\db-4.4.20\docs\index.html
Tim Peters00640262003-01-24 15:31:31 +0000180
Mark Hammond2362da82004-01-06 04:04:01 +0000181 and follow the "Windows->Building Berkeley DB with Visual C++ .NET"
182 instructions for building the Sleepycat
Tim Peters00640262003-01-24 15:31:31 +0000183 software. Note that Berkeley_DB.dsw is in the build_win32 subdirectory.
Martin v. Löwisf6f79252006-03-13 13:48:05 +0000184 Build the "db_static" project, for "Release" mode.
Tim Peters78e35f92002-11-22 20:00:34 +0000185
Tim Peters00640262003-01-24 15:31:31 +0000186 To run extensive tests, pass "-u bsddb" to regrtest.py. test_bsddb3.py
187 is then enabled. Running in verbose mode may be helpful.
188
189 XXX The test_bsddb3 tests don't always pass, on Windows (according to
Guido van Rossumd54357d2004-03-20 21:00:26 +0000190 XXX me) or on Linux (according to Barry). (I had much better luck
191 XXX on Win2K than on Win98SE.) The common failure mode across platforms
Tim Peters00640262003-01-24 15:31:31 +0000192 XXX is
193 XXX DBAgainError: (11, 'Resource temporarily unavailable -- unable
194 XXX to join the environment')
195 XXX
196 XXX and it appears timing-dependent. On Win2K I also saw this once:
197 XXX
198 XXX test02_SimpleLocks (bsddb.test.test_thread.HashSimpleThreaded) ...
199 XXX Exception in thread reader 1:
200 XXX Traceback (most recent call last):
201 XXX File "C:\Code\python\lib\threading.py", line 411, in __bootstrap
202 XXX self.run()
203 XXX File "C:\Code\python\lib\threading.py", line 399, in run
204 XXX apply(self.__target, self.__args, self.__kwargs)
205 XXX File "C:\Code\python\lib\bsddb\test\test_thread.py", line 268, in
206 XXX readerThread
207 XXX rec = c.next()
208 XXX DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed
209 XXX to resolve a deadlock')
Tim Petersad8605d2003-01-29 00:38:42 +0000210 XXX
211 XXX I'm told that DBLockDeadlockError is expected at times. It
212 XXX doesn't cause a test to fail when it happens (exceptions in
213 XXX threads are invisible to unittest).
Tim Peters00640262003-01-24 15:31:31 +0000214
Mark Hammondf229f9f2002-12-03 05:47:26 +0000215_ssl
Tim Peterse8bcb252002-12-04 02:39:52 +0000216 Python wrapper for the secure sockets library.
Tim Peters4b5fb072000-07-01 00:03:43 +0000217
Mark Hammondf229f9f2002-12-03 05:47:26 +0000218 Get the latest source code for OpenSSL from
219 http://www.openssl.org
220
Tim Peterse8bcb252002-12-04 02:39:52 +0000221 You (probably) don't want the "engine" code. For example, get
Tim Petersa0d781a2004-04-11 18:23:06 +0000222 openssl-0.9.7d.tar.gz
Tim Peterse8bcb252002-12-04 02:39:52 +0000223 not
Tim Petersa0d781a2004-04-11 18:23:06 +0000224 openssl-engine-0.9.7d.tar.gz
Tim Peterse8bcb252002-12-04 02:39:52 +0000225
Martin v. Löwis4c3259c2005-07-06 19:34:10 +0000226 (see #1233049 for using 0.9.8).
Mark Hammondf229f9f2002-12-03 05:47:26 +0000227 Unpack into the "dist" directory, retaining the folder name from
228 the archive - for example, the latest stable OpenSSL will install as
Thomas Heller81391402004-07-02 08:58:46 +0000229 dist/openssl-0.9.7d
Mark Hammondf229f9f2002-12-03 05:47:26 +0000230
231 You can (theoretically) use any version of OpenSSL you like - the
232 build process will automatically select the latest version.
233
234 You must also install ActivePerl from
235 http://www.activestate.com/Products/ActivePerl/
Tim Peterse8bcb252002-12-04 02:39:52 +0000236 as this is used by the OpenSSL build process. Complain to them <wink>.
Mark Hammondf229f9f2002-12-03 05:47:26 +0000237
238 The MSVC project simply invokes PCBuild/build_ssl.py to perform
Tim Peterse8bcb252002-12-04 02:39:52 +0000239 the build. This Python script locates and builds your OpenSSL
Mark Hammondf229f9f2002-12-03 05:47:26 +0000240 installation, then invokes a simple makefile to build the final .pyd.
241
242 build_ssl.py attempts to catch the most common errors (such as not
243 being able to find OpenSSL sources, or not being able to find a Perl
244 that works with OpenSSL) and give a reasonable error message.
245 If you have a problem that doesn't seem to be handled correctly
246 (eg, you know you have ActivePerl but we can't find it), please take
247 a peek at build_ssl.py and suggest patches. Note that build_ssl.py
248 should be able to be run directly from the command-line.
249
Tim Peterse8bcb252002-12-04 02:39:52 +0000250 build_ssl.py/MSVC isn't clever enough to clean OpenSSL - you must do
251 this by hand.
Tim Peters4b5fb072000-07-01 00:03:43 +0000252
Martin v. Löwis13e50fe2004-07-20 14:37:48 +0000253Building for Itanium
254--------------------
255
Tim Peterse82b00f2004-08-30 21:14:51 +0000256The project files support a ReleaseItanium configuration which creates
Martin v. Löwis13e50fe2004-07-20 14:37:48 +0000257Win64/Itanium binaries. For this to work, you need to install the Platform
258SDK, in particular the 64-bit support. This includes an Itanium compiler
259(future releases of the SDK likely include an AMD64 compiler as well).
260In addition, you need the Visual Studio plugin for external C compilers,
261from http://sf.net/projects/vsextcomp. The plugin will wrap cl.exe, to
Tim Peterse82b00f2004-08-30 21:14:51 +0000262locate the proper target compiler, and convert compiler options
Martin v. Löwis13e50fe2004-07-20 14:37:48 +0000263accordingly.
264
265The Itanium build has seen little testing. The SDK compiler reports a lot
266of warnings about conversion from size_t to int, which will be fixed in
267future Python releases.
Tim Peters6ee68d22002-12-04 03:16:37 +0000268
Martin v. Löwis856bf9a2006-02-14 20:42:55 +0000269Building for AMD64
270------------------
271
272The build process for the ReleaseAMD64 configuration is very similar
273to the Itanium configuration; make sure you use the latest version of
274vsextcomp.
275
Tim Petersf9a4a6e2000-07-01 20:38:27 +0000276YOUR OWN EXTENSION DLLs
Tim Peters4b5fb072000-07-01 00:03:43 +0000277-----------------------
278If you want to create your own extension module DLL, there's an example
279with easy-to-follow instructions in ../PC/example/; read the file
280readme.txt there first.