blob: a6835276b2cca499ad82eab2c37f92a0b8e620d6 [file] [log] [blame]
Tim Petersff8505d2004-01-03 05:45:59 +00001Building Python using VC++ 6.0 or 5.0
2-------------------------------------
3This directory is used to build Python for Win32 platforms, e.g. Windows
Hirokazu Yamamoto0255f0e2008-08-14 01:40:45 +000042000 and XP. It requires Microsoft Visual C++ 6.x or 5.x and Platform
Hirokazu Yamamoto50e7cdb2010-09-09 06:08:36 +00005SDK February 2003 Edition (Core SDK).
Tim Petersff8505d2004-01-03 05:45:59 +00006(For other Windows platforms and compilers, see ../readme.txt.)
7
8All you need to do is open the workspace "pcbuild.dsw" in MSVC++, select
9the Debug or Release setting (using Build -> Set Active Configuration...),
10and build the projects.
11
12The proper order to build subprojects:
13
141) pythoncore (this builds the main Python DLL and library files,
Georg Brandlfa2c61a2011-02-20 10:41:31 +000015 python33.{dll, lib} in Release mode)
Tim Petersff8505d2004-01-03 05:45:59 +000016
172) python (this builds the main Python executable,
18 python.exe in Release mode)
19
203) the other subprojects, as desired or needed (note: you probably don't
21 want to build most of the other subprojects, unless you're building an
22 entire Python distribution from scratch, or specifically making changes
23 to the subsystems they implement; see SUBPROJECTS below)
24
25When using the Debug setting, the output files have a _d added to
Georg Brandlfa2c61a2011-02-20 10:41:31 +000026their name: python33_d.dll, python_d.exe, pyexpat_d.pyd, and so on.
Tim Petersff8505d2004-01-03 05:45:59 +000027
28SUBPROJECTS
29-----------
30These subprojects should build out of the box. Subprojects other than the
31main ones (pythoncore, python, pythonw) generally build a DLL (renamed to
32.pyd) from a specific module so that users don't have to load the code
33supporting that module unless they import the module.
34
35pythoncore
36 .dll and .lib
37python
38 .exe
39pythonw
40 pythonw.exe, a variant of python.exe that doesn't pop up a DOS box
Hirokazu Yamamoto0255f0e2008-08-14 01:40:45 +000041_msi
42 _msi.c. You need to install Windows Installer SDK to build this module.
Tim Petersff8505d2004-01-03 05:45:59 +000043_socket
44 socketmodule.c
Tim Petersff8505d2004-01-03 05:45:59 +000045_testcapi
46 tests of the Python C API, run via Lib/test/test_capi.py, and
47 implemented by module Modules/_testcapimodule.c
Tim Petersff8505d2004-01-03 05:45:59 +000048pyexpat
49 Python wrapper for accelerated XML parsing, which incorporates stable
50 code from the Expat project: http://sourceforge.net/projects/expat/
51select
52 selectmodule.c
53unicodedata
54 large tables of Unicode data
Tim Petersff8505d2004-01-03 05:45:59 +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
60packages 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\.
63
64_tkinter
65 Python wrapper for the Tk windowing system. Requires building
Hirokazu Yamamoto6c7e5622009-01-10 11:48:27 +000066 Tcl/Tk first. Following are instructions for Tcl/Tk 8.5.2.
Tim Petersff8505d2004-01-03 05:45:59 +000067
68 Get source
69 ----------
Thomas Wouters89f507f2006-12-13 04:49:30 +000070 In the dist directory, run
Hirokazu Yamamoto6c7e5622009-01-10 11:48:27 +000071 svn export http://svn.python.org/projects/external/tcl-8.5.2.1 tcl8.5.2
72 svn export http://svn.python.org/projects/external/tk-8.5.2.0 tk8.5.2
73 svn export http://svn.python.org/projects/external/tix-8.4.3.1 tix8.4.3
74
75 Debug Build
76 -----------
77 To build debug version, add DEBUG=1 to all nmake call bellow.
Tim Petersff8505d2004-01-03 05:45:59 +000078
Thomas Wouters89f507f2006-12-13 04:49:30 +000079 Build Tcl first (done here w/ MSVC 6 on Win2K)
Tim Petersff8505d2004-01-03 05:45:59 +000080 ---------------
Hirokazu Yamamoto6c7e5622009-01-10 11:48:27 +000081 If your environment doesn't have struct _stat64, you need to apply
82 tcl852.patch in this directory to dist\tcl8.5.2\generic\tcl.h.
83
84 cd dist\tcl8.5.2\win
Thomas Wouters89f507f2006-12-13 04:49:30 +000085 run vcvars32.bat
Tim Petersff8505d2004-01-03 05:45:59 +000086 nmake -f makefile.vc
Thomas Wouters89f507f2006-12-13 04:49:30 +000087 nmake -f makefile.vc INSTALLDIR=..\..\tcltk install
Tim Petersff8505d2004-01-03 05:45:59 +000088
89 XXX Should we compile with OPTS=threads?
90
Thomas Wouters89f507f2006-12-13 04:49:30 +000091 Optional: run tests, via
92 nmake -f makefile.vc test
93
Hirokazu Yamamoto6c7e5622009-01-10 11:48:27 +000094 all.tcl: Total 24242 Passed 23358 Skipped 877 Failed 7
95 Sourced 137 Test Files.
96 Files with failing tests: exec.test http.test io.test main.test string.test stri
Thomas Wouters89f507f2006-12-13 04:49:30 +000097 ngObj.test
Tim Petersff8505d2004-01-03 05:45:59 +000098
99 Build Tk
100 --------
Hirokazu Yamamoto6c7e5622009-01-10 11:48:27 +0000101 cd dist\tk8.5.2\win
102 nmake -f makefile.vc TCLDIR=..\..\tcl8.5.2
103 nmake -f makefile.vc TCLDIR=..\..\tcl8.5.2 INSTALLDIR=..\..\tcltk install
Tim Petersff8505d2004-01-03 05:45:59 +0000104
105 XXX Should we compile with OPTS=threads?
106
107 XXX I have no idea whether "nmake -f makefile.vc test" passed or
108 XXX failed. It popped up tons of little windows, and did lots of
109 XXX stuff, and nothing blew up.
110
Hirokazu Yamamoto6c7e5622009-01-10 11:48:27 +0000111 Build Tix
112 ---------
113 cd dist\tix8.4.3\win
114 nmake -f python.mak TCL_MAJOR=8 TCL_MINOR=5 TCL_PATCH=2 MACHINE=IX86 DEBUG=0
115 nmake -f python.mak TCL_MAJOR=8 TCL_MINOR=5 TCL_PATCH=2 MACHINE=IX86 DEBUG=0 INSTALL_DIR=..\..\tcltk install
Tim Petersff8505d2004-01-03 05:45:59 +0000116
117bz2
118 Python wrapper for the libbz2 compression library. Homepage
Hirokazu Yamamoto0f0932c2009-01-09 04:41:03 +0000119 http://www.bzip.org/
Thomas Wouters89f507f2006-12-13 04:49:30 +0000120 Download the source from the python.org copy into the dist
121 directory:
Tim Petersff8505d2004-01-03 05:45:59 +0000122
Hirokazu Yamamoto0f0932c2009-01-09 04:41:03 +0000123 svn export http://svn.python.org/projects/external/bzip2-1.0.5
Tim Petersff8505d2004-01-03 05:45:59 +0000124
Thomas Wouters89f507f2006-12-13 04:49:30 +0000125 And requires building bz2 first.
Tim Petersff8505d2004-01-03 05:45:59 +0000126
Hirokazu Yamamoto0f0932c2009-01-09 04:41:03 +0000127 cd dist\bzip2-1.0.5
Thomas Wouters89f507f2006-12-13 04:49:30 +0000128 nmake -f makefile.msc
129
Hirokazu Yamamoto0f0932c2009-01-09 04:41:03 +0000130 All of this managed to build bzip2-1.0.5\libbz2.lib, which the Python
Tim Petersff8505d2004-01-03 05:45:59 +0000131 project links in.
132
133
Hirokazu Yamamoto0255f0e2008-08-14 01:40:45 +0000134_sqlite3
135 Python wrapper for SQLite library.
136
137 Get the source code through
138
139 svn export http://svn.python.org/projects/external/sqlite-source-3.3.4
140
141 To use the extension module in a Python build tree, copy sqlite3.dll into
142 the PC/VC6 folder.
143
144
Tim Petersff8505d2004-01-03 05:45:59 +0000145_ssl
146 Python wrapper for the secure sockets library.
147
148 Get the latest source code for OpenSSL from
149 http://www.openssl.org
150
Hirokazu Yamamoto7c3d7092010-10-28 17:57:25 +0000151 You (probably) don't want the "engine" code. For example, don't get
152 openssl-engine-0.9.6g.tar.gz
Tim Petersff8505d2004-01-03 05:45:59 +0000153
154 Unpack into the "dist" directory, retaining the folder name from
155 the archive - for example, the latest stable OpenSSL will install as
Hirokazu Yamamoto7c3d7092010-10-28 17:57:25 +0000156 dist/openssl-1.0.0a
Tim Petersff8505d2004-01-03 05:45:59 +0000157
158 You can (theoretically) use any version of OpenSSL you like - the
159 build process will automatically select the latest version.
160
Hirokazu Yamamoto3405de02010-12-08 14:47:07 +0000161 You can install the NASM assembler from
162 http://www.nasm.us/
163 for x86 builds. Put nasmw.exe anywhere in your PATH.
164 Note: recent releases of nasm only have nasm.exe. Just rename it to
165 nasmw.exe.
166
167 You can also install ActivePerl from
Hirokazu Yamamoto7c3d7092010-10-28 17:57:25 +0000168 http://www.activestate.com/activeperl/
Hirokazu Yamamoto3405de02010-12-08 14:47:07 +0000169 if you like to use the official sources instead of the files from
170 python's subversion repository. The svn version contains pre-build
171 makefiles and assembly files.
Tim Petersff8505d2004-01-03 05:45:59 +0000172
Christian Heimes4c3eda32008-01-04 15:35:04 +0000173 The MSVC project simply invokes PC/VC6/build_ssl.py to perform
Tim Petersff8505d2004-01-03 05:45:59 +0000174 the build. This Python script locates and builds your OpenSSL
175 installation, then invokes a simple makefile to build the final .pyd.
176
Tim Petersff8505d2004-01-03 05:45:59 +0000177 build_ssl.py attempts to catch the most common errors (such as not
178 being able to find OpenSSL sources, or not being able to find a Perl
179 that works with OpenSSL) and give a reasonable error message.
180 If you have a problem that doesn't seem to be handled correctly
181 (eg, you know you have ActivePerl but we can't find it), please take
182 a peek at build_ssl.py and suggest patches. Note that build_ssl.py
183 should be able to be run directly from the command-line.
184
185 build_ssl.py/MSVC isn't clever enough to clean OpenSSL - you must do
186 this by hand.
187
Tim Petersff8505d2004-01-03 05:45:59 +0000188
189YOUR OWN EXTENSION DLLs
190-----------------------
191If you want to create your own extension module DLL, there's an example
192with easy-to-follow instructions in ../PC/example/; read the file
193readme.txt there first.