blob: a27b90fa1a9e1abd7b978c87c3c4cfbace181360 [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
Tim Peters7ccbb072006-03-13 19:43:34 +000025 to the subsystems they implement, or are running a Python core buildbot
26 test slave; see SUBPROJECTS below)
Guido van Rossum15b239f1998-05-26 14:16:23 +000027
28When using the Debug setting, the output files have a _d added to
Tim Peters63db6282005-08-07 02:47:12 +000029their name: python25_d.dll, python_d.exe, parser_d.pyd, and so on.
Guido van Rossume79cf321998-07-07 22:35:03 +000030
Tim Peters4b5fb072000-07-01 00:03:43 +000031SUBPROJECTS
32-----------
Tim Peters610a8272000-07-01 02:51:23 +000033These subprojects should build out of the box. Subprojects other than the
Tim Petersbefc97c2001-01-18 19:01:39 +000034main ones (pythoncore, python, pythonw) generally build a DLL (renamed to
Tim Peters610a8272000-07-01 02:51:23 +000035.pyd) from a specific module so that users don't have to load the code
Tim Peters4b5fb072000-07-01 00:03:43 +000036supporting that module unless they import the module.
Guido van Rossume79cf321998-07-07 22:35:03 +000037
Tim Peters97c96402001-01-17 23:23:13 +000038pythoncore
Tim Peters4b5fb072000-07-01 00:03:43 +000039 .dll and .lib
40python
41 .exe
42pythonw
43 pythonw.exe, a variant of python.exe that doesn't pop up a DOS box
44_socket
45 socketmodule.c
Tim Petersd66595f2001-02-04 03:09:53 +000046_testcapi
Tim Petersb16c56f2001-02-02 21:24:51 +000047 tests of the Python C API, run via Lib/test/test_capi.py, and
Tim Petersd66595f2001-02-04 03:09:53 +000048 implemented by module Modules/_testcapimodule.c
Tim Petersb012a152002-02-13 23:56:46 +000049pyexpat
50 Python wrapper for accelerated XML parsing, which incorporates stable
51 code from the Expat project: http://sourceforge.net/projects/expat/
Tim Peters4b5fb072000-07-01 00:03:43 +000052select
53 selectmodule.c
Tim Peters19f52c22001-01-24 10:07:22 +000054unicodedata
Tim Peters4b5fb072000-07-01 00:03:43 +000055 large tables of Unicode data
Tim Peters4b5fb072000-07-01 00:03:43 +000056winsound
57 play sounds (typically .wav files) under Windows
58
59The following subprojects will generally NOT build out of the box. They
60wrap code Python doesn't control, and you'll need to download the base
Tim Petersaff12842000-08-25 06:52:44 +000061packages first and unpack them into siblings of PCbuilds's parent
62directory; for example, if your PCbuild is .......\dist\src\PCbuild\,
63unpack into new subdirectories of dist\.
Tim Peters4b5fb072000-07-01 00:03:43 +000064
65_tkinter
Tim Peters077736b2002-11-14 23:24:40 +000066 Python wrapper for the Tk windowing system. Requires building
Martin v. Löwis6de2d4d2004-08-30 09:22:04 +000067 Tcl/Tk first. Following are instructions for Tcl/Tk 8.4.7; these
Guido van Rossumd54357d2004-03-20 21:00:26 +000068 should work for version 8.4.6 too, with suitable substitutions:
Tim Peters077736b2002-11-14 23:24:40 +000069
70 Get source
71 ----------
72 Go to
73 http://prdownloads.sourceforge.net/tcl/
74 and download
Martin v. Löwis6de2d4d2004-08-30 09:22:04 +000075 tcl847-src.zip
76 tk847-src.zip
Tim Peters077736b2002-11-14 23:24:40 +000077 Unzip into
Martin v. Löwis6de2d4d2004-08-30 09:22:04 +000078 dist\tcl8.4.7\
79 dist\tk8.4.7\
Tim Peters077736b2002-11-14 23:24:40 +000080 respectively.
81
Guido van Rossumd54357d2004-03-20 21:00:26 +000082 Build Tcl first (done here w/ MSVC 7.1 on Windows XP)
Tim Peters6c629952002-11-15 18:36:11 +000083 ---------------
Guido van Rossumd54357d2004-03-20 21:00:26 +000084 Use "Start -> All Programs -> Microsoft Visual Studio .NET 2003
85 -> Visual Studio .NET Tools -> Visual Studio .NET 2003 Command Prompt"
86 to get a shell window with the correct environment settings
Martin v. Löwis6de2d4d2004-08-30 09:22:04 +000087 cd dist\tcl8.4.7\win
Tim Peters077736b2002-11-14 23:24:40 +000088 nmake -f makefile.vc
Martin v. Löwis6de2d4d2004-08-30 09:22:04 +000089 nmake -f makefile.vc INSTALLDIR=..\..\tcltk install
Tim Peters077736b2002-11-14 23:24:40 +000090
91 XXX Should we compile with OPTS=threads?
92
Tim Peters011de6cc2004-04-11 17:29:12 +000093 Optional: run tests, via
94 nmake -f makefile.vc test
95
Martin v. Löwis6de2d4d2004-08-30 09:22:04 +000096 On WinXP Pro, wholly up to date as of 30-Aug-2004:
Tim Peterse82b00f2004-08-30 21:14:51 +000097 all.tcl: Total 10678 Passed 9969 Skipped 709 Failed 0
Tim Peters011de6cc2004-04-11 17:29:12 +000098 Sourced 129 Test Files.
Tim Peters077736b2002-11-14 23:24:40 +000099
Tim Peters077736b2002-11-14 23:24:40 +0000100 Build Tk
Tim Peters6c629952002-11-15 18:36:11 +0000101 --------
Martin v. Löwis6de2d4d2004-08-30 09:22:04 +0000102 cd dist\tk8.4.7\win
103 nmake -f makefile.vc TCLDIR=..\..\tcl8.4.7
104 nmake -f makefile.vc TCLDIR=..\..\tcl8.4.7 INSTALLDIR=..\..\tcltk install
Tim Peters077736b2002-11-14 23:24:40 +0000105
106 XXX Should we compile with OPTS=threads?
107
Tim Peters077736b2002-11-14 23:24:40 +0000108 XXX Our installer copies a lot of stuff out of the Tcl/Tk install
109 XXX directory. Is all of that really needed for Python use of Tcl/Tk?
110
Tim Peters011de6cc2004-04-11 17:29:12 +0000111 Optional: run tests, via
Martin v. Löwis6de2d4d2004-08-30 09:22:04 +0000112 nmake -f makefile.vc TCLDIR=..\..\tcl8.4.7 test
Tim Peters011de6cc2004-04-11 17:29:12 +0000113
Martin v. Löwis6de2d4d2004-08-30 09:22:04 +0000114 On WinXP Pro, wholly up to date as of 30-Aug-2004:
Tim Peterse82b00f2004-08-30 21:14:51 +0000115 all.tcl: Total 8420 Passed 6826 Skipped 1581 Failed 13
Martin v. Löwis6de2d4d2004-08-30 09:22:04 +0000116 Sourced 91 Test Files.
Tim Peterse82b00f2004-08-30 21:14:51 +0000117 Files with failing tests: canvImg.test scrollbar.test textWind.test winWm.test
Tim Peters63db6282005-08-07 02:47:12 +0000118
Martin v. Löwis3cf21632004-08-31 16:22:09 +0000119 Built Tix
120 ---------
121 Download from http://prdownloads.sourceforge.net/tix/tix-8.1.4.tar.gz
122 cd dist\tix-8.1.4
123 [cygwin]patch -p1 < ..\..\python\PC\tix.diff
124 cd win
125 nmake -f makefile.vc
126 nmake -f makefile.vc install
Tim Peters4b5fb072000-07-01 00:03:43 +0000127
Tim Petersb0ead4e2002-11-09 04:48:58 +0000128bz2
129 Python wrapper for the libbz2 compression library. Homepage
130 http://sources.redhat.com/bzip2/
Martin v. Löwisf6f79252006-03-13 13:48:05 +0000131 Download the source from the python.org copy into the dist
132 directory:
133
Martin v. Löwis14c1cf82006-03-13 10:52:04 +0000134 svn export http://svn.python.org/projects/external/bzip2-1.0.3
Tim Peters077736b2002-11-14 23:24:40 +0000135
Thomas Heller46a007e2003-08-20 18:27:36 +0000136 A custom pre-link step in the bz2 project settings should manage to
Tim Peters7ccbb072006-03-13 19:43:34 +0000137 build bzip2-1.0.3\libbz2.lib by magic before bz2.pyd (or bz2_d.pyd) is
Thomas Heller46a007e2003-08-20 18:27:36 +0000138 linked in PCbuild\.
139 However, the bz2 project is not smart enough to remove anything under
Martin v. Löwis14c1cf82006-03-13 10:52:04 +0000140 bzip2-1.0.3\ when you do a clean, so if you want to rebuild bzip2.lib
141 you need to clean up bzip2-1.0.3\ by hand.
Tim Peters077736b2002-11-14 23:24:40 +0000142
Thomas Heller46a007e2003-08-20 18:27:36 +0000143 The build step shouldn't yield any warnings or errors, and should end
Tim Petersb0ead4e2002-11-09 04:48:58 +0000144 by displaying 6 blocks each terminated with
145 FC: no differences encountered
Tim Peterscaba60a2004-01-04 02:04:35 +0000146
Martin v. Löwis14c1cf82006-03-13 10:52:04 +0000147 All of this managed to build bzip2-1.0.3\libbz2.lib, which the Python
Tim Petersb0ead4e2002-11-09 04:48:58 +0000148 project links in.
149
150
Tim Peters78e35f92002-11-22 20:00:34 +0000151_bsddb
Tim Peters7ccbb072006-03-13 19:43:34 +0000152 To use the version of bsddb that Python is built with by default, invoke
Martin v. Löwisf6f79252006-03-13 13:48:05 +0000153 (in the dist directory)
Tim Petersb0ead4e2002-11-09 04:48:58 +0000154
Martin v. Löwisf6f79252006-03-13 13:48:05 +0000155 svn export http://svn.python.org/projects/external/db-4.4.20
156
157
Tim Peters6da8ceb2006-03-13 20:09:32 +0000158 Then open a VS.NET 2003 shell, and invoke:
Martin v. Löwisf6f79252006-03-13 13:48:05 +0000159
Tim Peters6da8ceb2006-03-13 20:09:32 +0000160 devenv db-4.4.20\build_win32\Berkeley_DB.sln /build Release /project db_static
161
162 and do that a second time for a Debug build too:
163
164 devenv db-4.4.20\build_win32\Berkeley_DB.sln /build Debug /project db_static
Martin v. Löwisf6f79252006-03-13 13:48:05 +0000165
Tim Peters32d996f2006-03-13 19:35:53 +0000166 Alternatively, if you want to start with the original sources,
Martin v. Löwisf6f79252006-03-13 13:48:05 +0000167 go to Sleepycat's download page:
168 http://www.sleepycat.com/downloads/releasehistorybdb.html
169
170 and download version 4.4.20.
Tim Peters011de6cc2004-04-11 17:29:12 +0000171
172 With or without strong cryptography? You can choose either with or
173 without strong cryptography, as per the instructions below. By
Thomas Heller81391402004-07-02 08:58:46 +0000174 default, Python is built and distributed WITHOUT strong crypto.
Tim Peters011de6cc2004-04-11 17:29:12 +0000175
Martin v. Löwisf6f79252006-03-13 13:48:05 +0000176 Unpack the sources; if you downloaded the non-crypto version, rename
177 the directory from db-4.4.20.NC to db-4.4.20.
Tim Peters011de6cc2004-04-11 17:29:12 +0000178
Martin v. Löwisf6f79252006-03-13 13:48:05 +0000179 Now apply any patches that apply to your version.
Tim Petersa0d781a2004-04-11 18:23:06 +0000180
Tim Peters00640262003-01-24 15:31:31 +0000181 Open
Martin v. Löwisf6f79252006-03-13 13:48:05 +0000182 dist\db-4.4.20\docs\index.html
Tim Peters00640262003-01-24 15:31:31 +0000183
Mark Hammond2362da82004-01-06 04:04:01 +0000184 and follow the "Windows->Building Berkeley DB with Visual C++ .NET"
185 instructions for building the Sleepycat
Tim Peters00640262003-01-24 15:31:31 +0000186 software. Note that Berkeley_DB.dsw is in the build_win32 subdirectory.
Martin v. Löwisf6f79252006-03-13 13:48:05 +0000187 Build the "db_static" project, for "Release" mode.
Tim Peters78e35f92002-11-22 20:00:34 +0000188
Tim Peters00640262003-01-24 15:31:31 +0000189 To run extensive tests, pass "-u bsddb" to regrtest.py. test_bsddb3.py
190 is then enabled. Running in verbose mode may be helpful.
191
192 XXX The test_bsddb3 tests don't always pass, on Windows (according to
Guido van Rossumd54357d2004-03-20 21:00:26 +0000193 XXX me) or on Linux (according to Barry). (I had much better luck
194 XXX on Win2K than on Win98SE.) The common failure mode across platforms
Tim Peters00640262003-01-24 15:31:31 +0000195 XXX is
196 XXX DBAgainError: (11, 'Resource temporarily unavailable -- unable
197 XXX to join the environment')
198 XXX
199 XXX and it appears timing-dependent. On Win2K I also saw this once:
200 XXX
201 XXX test02_SimpleLocks (bsddb.test.test_thread.HashSimpleThreaded) ...
202 XXX Exception in thread reader 1:
203 XXX Traceback (most recent call last):
204 XXX File "C:\Code\python\lib\threading.py", line 411, in __bootstrap
205 XXX self.run()
206 XXX File "C:\Code\python\lib\threading.py", line 399, in run
207 XXX apply(self.__target, self.__args, self.__kwargs)
208 XXX File "C:\Code\python\lib\bsddb\test\test_thread.py", line 268, in
209 XXX readerThread
210 XXX rec = c.next()
211 XXX DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed
212 XXX to resolve a deadlock')
Tim Petersad8605d2003-01-29 00:38:42 +0000213 XXX
214 XXX I'm told that DBLockDeadlockError is expected at times. It
215 XXX doesn't cause a test to fail when it happens (exceptions in
216 XXX threads are invisible to unittest).
Tim Peters00640262003-01-24 15:31:31 +0000217
Martin v. Löwisb0912412006-03-13 15:37:40 +0000218 Building for Win64:
219 - open a VS.NET 2003 command prompt
220 - run the SDK setenv.cmd script, passing /RETAIL and the target
221 architecture (/SRV64 for Itanium, /X64 for AMD64)
222 - build BerkeleyDB with the solution configuration matching the
223 target ("Release IA64" for Itanium, "Release AMD64" for AMD64), e.g.
224 devenv db-4.4.20\build_win32\Berkeley_DB.sln /build "Release AMD64" /project db_static /useenv
Tim Peters32d996f2006-03-13 19:35:53 +0000225
Martin v. Löwisb0912412006-03-13 15:37:40 +0000226
Mark Hammondf229f9f2002-12-03 05:47:26 +0000227_ssl
Tim Peterse8bcb252002-12-04 02:39:52 +0000228 Python wrapper for the secure sockets library.
Tim Peters4b5fb072000-07-01 00:03:43 +0000229
Martin v. Löwisa0f45492006-03-21 12:08:39 +0000230 Get the source code through
Mark Hammondf229f9f2002-12-03 05:47:26 +0000231
Martin v. Löwisa0f45492006-03-21 12:08:39 +0000232 svn export http://svn.python.org/projects/external/openssl-0.9.8a
Tim Peterse8bcb252002-12-04 02:39:52 +0000233
Martin v. Löwisa0f45492006-03-21 12:08:39 +0000234 Alternatively, get the latest version from http://www.openssl.org.
Mark Hammondf229f9f2002-12-03 05:47:26 +0000235 You can (theoretically) use any version of OpenSSL you like - the
236 build process will automatically select the latest version.
237
238 You must also install ActivePerl from
239 http://www.activestate.com/Products/ActivePerl/
Tim Peterse8bcb252002-12-04 02:39:52 +0000240 as this is used by the OpenSSL build process. Complain to them <wink>.
Mark Hammondf229f9f2002-12-03 05:47:26 +0000241
242 The MSVC project simply invokes PCBuild/build_ssl.py to perform
Tim Peterse8bcb252002-12-04 02:39:52 +0000243 the build. This Python script locates and builds your OpenSSL
Mark Hammondf229f9f2002-12-03 05:47:26 +0000244 installation, then invokes a simple makefile to build the final .pyd.
245
246 build_ssl.py attempts to catch the most common errors (such as not
247 being able to find OpenSSL sources, or not being able to find a Perl
248 that works with OpenSSL) and give a reasonable error message.
249 If you have a problem that doesn't seem to be handled correctly
250 (eg, you know you have ActivePerl but we can't find it), please take
251 a peek at build_ssl.py and suggest patches. Note that build_ssl.py
252 should be able to be run directly from the command-line.
253
Tim Peterse8bcb252002-12-04 02:39:52 +0000254 build_ssl.py/MSVC isn't clever enough to clean OpenSSL - you must do
255 this by hand.
Tim Peters4b5fb072000-07-01 00:03:43 +0000256
Martin v. Löwis13e50fe2004-07-20 14:37:48 +0000257Building for Itanium
258--------------------
259
Tim Peterse82b00f2004-08-30 21:14:51 +0000260The project files support a ReleaseItanium configuration which creates
Martin v. Löwis13e50fe2004-07-20 14:37:48 +0000261Win64/Itanium binaries. For this to work, you need to install the Platform
262SDK, in particular the 64-bit support. This includes an Itanium compiler
263(future releases of the SDK likely include an AMD64 compiler as well).
264In addition, you need the Visual Studio plugin for external C compilers,
265from http://sf.net/projects/vsextcomp. The plugin will wrap cl.exe, to
Tim Peterse82b00f2004-08-30 21:14:51 +0000266locate the proper target compiler, and convert compiler options
Martin v. Löwis13e50fe2004-07-20 14:37:48 +0000267accordingly.
268
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.