Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 1 | Building Python using VC++ 9.0 |
| 2 | ------------------------------ |
Christian Heimes | d9fbab2 | 2008-01-02 17:43:40 +0000 | [diff] [blame] | 3 | |
Trent Nelson | dbc114a | 2008-04-02 15:01:00 +0000 | [diff] [blame] | 4 | This directory is used to build Python for Win32 and x64 platforms, e.g. |
| 5 | Windows 2000, XP, Vista and Windows Server 2008. In order to build 32-bit |
| 6 | debug and release executables, Microsoft Visual C++ 2008 Express Edition is |
| 7 | required at the very least. In order to build 64-bit debug and release |
| 8 | executables, Visual Studio 2008 Standard Edition is required at the very |
| 9 | least. In order to build all of the above, as well as generate release builds |
| 10 | that make use of Profile Guided Optimisation (PG0), Visual Studio 2008 |
| 11 | Professional Edition is required at the very least. The official Python |
| 12 | releases are built with this version of Visual Studio. |
| 13 | |
| 14 | For other Windows platforms and compilers, see ../PC/readme.txt. |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 15 | |
Christian Heimes | 8b01140 | 2007-11-27 21:28:40 +0000 | [diff] [blame] | 16 | All you need to do is open the workspace "pcbuild.sln" in Visual Studio, |
| 17 | select the desired combination of configuration and platform and eventually |
| 18 | build the solution. Unless you are going to debug a problem in the core or |
| 19 | you are going to create an optimized build you want to select "Release" as |
| 20 | configuration. |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 21 | |
Christian Heimes | 3adfe9a | 2007-12-31 15:18:55 +0000 | [diff] [blame] | 22 | The PCbuild directory is compatible with all versions of Visual Studio from |
Christian Heimes | 8b01140 | 2007-11-27 21:28:40 +0000 | [diff] [blame] | 23 | VS C++ Express Edition over the standard edition up to the professional |
Georg Brandl | 73ac29e | 2008-09-21 07:17:00 +0000 | [diff] [blame] | 24 | edition. However the express edition does not support features like solution |
Christian Heimes | 8b01140 | 2007-11-27 21:28:40 +0000 | [diff] [blame] | 25 | folders or profile guided optimization (PGO). The missing bits and pieces |
| 26 | won't stop you from building Python. |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 27 | |
Christian Heimes | 8b01140 | 2007-11-27 21:28:40 +0000 | [diff] [blame] | 28 | The solution is configured to build the projects in the correct order. "Build |
Christian Heimes | 95d6447 | 2008-02-09 19:55:22 +0000 | [diff] [blame] | 29 | Solution" or F7 takes care of dependencies except for x64 builds. To make |
Christian Heimes | 8b01140 | 2007-11-27 21:28:40 +0000 | [diff] [blame] | 30 | cross compiling x64 builds on a 32bit OS possible the x64 builds require a |
| 31 | 32bit version of Python. |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 32 | |
Christian Heimes | 3971f6b | 2007-11-30 19:18:08 +0000 | [diff] [blame] | 33 | NOTE: |
| 34 | You probably don't want to build most of the other subprojects, unless |
Christian Heimes | 8b01140 | 2007-11-27 21:28:40 +0000 | [diff] [blame] | 35 | you're building an entire Python distribution from scratch, or |
| 36 | specifically making changes to the subsystems they implement, or are |
| 37 | running a Python core buildbot test slave; see SUBPROJECTS below) |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 38 | |
| 39 | When using the Debug setting, the output files have a _d added to |
Christian Heimes | 95d6447 | 2008-02-09 19:55:22 +0000 | [diff] [blame] | 40 | their name: python30_d.dll, python_d.exe, parser_d.pyd, and so on. Both |
| 41 | the build and rt batch files accept a -d option for debug builds. |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 42 | |
Christian Heimes | 3adfe9a | 2007-12-31 15:18:55 +0000 | [diff] [blame] | 43 | The 32bit builds end up in the solution folder PCbuild while the x64 builds |
Christian Heimes | 8b01140 | 2007-11-27 21:28:40 +0000 | [diff] [blame] | 44 | land in the amd64 subfolder. The PGI and PGO builds for profile guided |
| 45 | optimization end up in their own folders, too. |
| 46 | |
Christian Heimes | d9fbab2 | 2008-01-02 17:43:40 +0000 | [diff] [blame] | 47 | Legacy support |
| 48 | -------------- |
| 49 | |
| 50 | You can find build directories for older versions of Visual Studio and |
| 51 | Visual C++ in the PC directory. The legacy build directories are no longer |
| 52 | actively maintained and may not work out of the box. |
| 53 | |
| 54 | PC/VC6/ |
| 55 | Visual C++ 6.0 |
| 56 | PC/VS7.1/ |
| 57 | Visual Studio 2003 (7.1) |
Hirokazu Yamamoto | 2623688 | 2010-10-08 10:22:55 +0000 | [diff] [blame] | 58 | PC/VS8.0/ |
Christian Heimes | d9fbab2 | 2008-01-02 17:43:40 +0000 | [diff] [blame] | 59 | Visual Studio 2005 (8.0) |
| 60 | |
| 61 | |
| 62 | C RUNTIME |
| 63 | --------- |
| 64 | |
| 65 | Visual Studio 2008 uses version 9 of the C runtime (MSVCRT9). The executables |
| 66 | are linked to a CRT "side by side" assembly which must be present on the target |
| 67 | machine. This is avalible under the VC/Redist folder of your visual studio |
| 68 | distribution. On XP and later operating systems that support |
Trent Nelson | dbc114a | 2008-04-02 15:01:00 +0000 | [diff] [blame] | 69 | side-by-side assemblies it is not enough to have the msvcrt90.dll present, |
Christian Heimes | d9fbab2 | 2008-01-02 17:43:40 +0000 | [diff] [blame] | 70 | it has to be there as a whole assembly, that is, a folder with the .dll |
| 71 | and a .manifest. Also, a check is made for the correct version. |
| 72 | Therefore, one should distribute this assembly with the dlls, and keep |
| 73 | it in the same directory. For compatibility with older systems, one should |
| 74 | also set the PATH to this directory so that the dll can be found. |
| 75 | For more info, see the Readme in the VC/Redist folder. |
| 76 | |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 77 | SUBPROJECTS |
| 78 | ----------- |
| 79 | These subprojects should build out of the box. Subprojects other than the |
| 80 | main ones (pythoncore, python, pythonw) generally build a DLL (renamed to |
| 81 | .pyd) from a specific module so that users don't have to load the code |
| 82 | supporting that module unless they import the module. |
| 83 | |
| 84 | pythoncore |
| 85 | .dll and .lib |
| 86 | python |
| 87 | .exe |
| 88 | pythonw |
| 89 | pythonw.exe, a variant of python.exe that doesn't pop up a DOS box |
| 90 | _socket |
| 91 | socketmodule.c |
| 92 | _testcapi |
| 93 | tests of the Python C API, run via Lib/test/test_capi.py, and |
| 94 | implemented by module Modules/_testcapimodule.c |
| 95 | pyexpat |
| 96 | Python wrapper for accelerated XML parsing, which incorporates stable |
| 97 | code from the Expat project: http://sourceforge.net/projects/expat/ |
| 98 | select |
| 99 | selectmodule.c |
| 100 | unicodedata |
| 101 | large tables of Unicode data |
| 102 | winsound |
| 103 | play sounds (typically .wav files) under Windows |
| 104 | |
Trent Nelson | dbc114a | 2008-04-02 15:01:00 +0000 | [diff] [blame] | 105 | Python-controlled subprojects that wrap external projects: |
| 106 | _bsddb |
Georg Brandl | e4c1f11 | 2008-09-21 07:24:11 +0000 | [diff] [blame] | 107 | Wraps Berkeley DB 4.7.25, which is currently built by _bsddb.vcproj. |
Trent Nelson | dbc114a | 2008-04-02 15:01:00 +0000 | [diff] [blame] | 108 | project (see below). |
| 109 | _sqlite3 |
Martin v. Löwis | f477b93 | 2010-01-02 09:25:21 +0000 | [diff] [blame] | 110 | Wraps SQLite 3.6.21, which is currently built by sqlite3.vcproj (see below). |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 111 | _tkinter |
Trent Nelson | dbc114a | 2008-04-02 15:01:00 +0000 | [diff] [blame] | 112 | Wraps the Tk windowing system. Unlike _bsddb and _sqlite3, there's no |
| 113 | corresponding tcltk.vcproj-type project that builds Tcl/Tk from vcproj's |
| 114 | within our pcbuild.sln, which means this module expects to find a |
| 115 | pre-built Tcl/Tk in either ..\..\tcltk for 32-bit or ..\..\tcltk64 for |
| 116 | 64-bit (relative to this directory). See below for instructions to build |
| 117 | Tcl/Tk. |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 118 | bz2 |
| 119 | Python wrapper for the libbz2 compression library. Homepage |
| 120 | http://sources.redhat.com/bzip2/ |
| 121 | Download the source from the python.org copy into the dist |
| 122 | directory: |
| 123 | |
Martin v. Löwis | a4514c3 | 2008-06-13 17:22:39 +0000 | [diff] [blame] | 124 | svn export http://svn.python.org/projects/external/bzip2-1.0.5 |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 125 | |
Trent Nelson | dbc114a | 2008-04-02 15:01:00 +0000 | [diff] [blame] | 126 | ** NOTE: if you use the Tools\buildbot\external(-amd64).bat approach for |
| 127 | obtaining external sources then you don't need to manually get the source |
| 128 | above via subversion. ** |
| 129 | |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 130 | A custom pre-link step in the bz2 project settings should manage to |
Martin v. Löwis | a4514c3 | 2008-06-13 17:22:39 +0000 | [diff] [blame] | 131 | build bzip2-1.0.5\libbz2.lib by magic before bz2.pyd (or bz2_d.pyd) is |
Christian Heimes | 3adfe9a | 2007-12-31 15:18:55 +0000 | [diff] [blame] | 132 | linked in PCbuild\. |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 133 | However, the bz2 project is not smart enough to remove anything under |
Martin v. Löwis | a4514c3 | 2008-06-13 17:22:39 +0000 | [diff] [blame] | 134 | bzip2-1.0.5\ when you do a clean, so if you want to rebuild bzip2.lib |
| 135 | you need to clean up bzip2-1.0.5\ by hand. |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 136 | |
Christian Heimes | 8b01140 | 2007-11-27 21:28:40 +0000 | [diff] [blame] | 137 | All of this managed to build libbz2.lib in |
Martin v. Löwis | a4514c3 | 2008-06-13 17:22:39 +0000 | [diff] [blame] | 138 | bzip2-1.0.5\$platform-$configuration\, which the Python project links in. |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 139 | |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 140 | _ssl |
| 141 | Python wrapper for the secure sockets library. |
| 142 | |
| 143 | Get the source code through |
| 144 | |
Martin v. Löwis | 55e1a69 | 2009-12-21 19:27:15 +0000 | [diff] [blame] | 145 | svn export http://svn.python.org/projects/external/openssl-0.9.8l |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 146 | |
Trent Nelson | dbc114a | 2008-04-02 15:01:00 +0000 | [diff] [blame] | 147 | ** NOTE: if you use the Tools\buildbot\external(-amd64).bat approach for |
| 148 | obtaining external sources then you don't need to manually get the source |
| 149 | above via subversion. ** |
| 150 | |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 151 | Alternatively, get the latest version from http://www.openssl.org. |
| 152 | You can (theoretically) use any version of OpenSSL you like - the |
| 153 | build process will automatically select the latest version. |
| 154 | |
Christian Heimes | 3971f6b | 2007-11-30 19:18:08 +0000 | [diff] [blame] | 155 | You must install the NASM assembler from |
Georg Brandl | 9350234 | 2008-09-29 16:51:35 +0000 | [diff] [blame] | 156 | http://nasm.sf.net |
Christian Heimes | 3971f6b | 2007-11-30 19:18:08 +0000 | [diff] [blame] | 157 | for x86 builds. Put nasmw.exe anywhere in your PATH. |
Georg Brandl | 7d4bfb3 | 2010-08-02 21:44:25 +0000 | [diff] [blame] | 158 | Note: recent releases of nasm only have nasm.exe. Just rename it to |
| 159 | nasmw.exe. |
Christian Heimes | 3971f6b | 2007-11-30 19:18:08 +0000 | [diff] [blame] | 160 | |
| 161 | You can also install ActivePerl from |
Hirokazu Yamamoto | 59734be | 2010-12-09 08:01:18 +0000 | [diff] [blame^] | 162 | http://www.activestate.com/activeperl/ |
Christian Heimes | 8b01140 | 2007-11-27 21:28:40 +0000 | [diff] [blame] | 163 | if you like to use the official sources instead of the files from |
| 164 | python's subversion repository. The svn version contains pre-build |
| 165 | makefiles and assembly files. |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 166 | |
Christian Heimes | 8b01140 | 2007-11-27 21:28:40 +0000 | [diff] [blame] | 167 | The build process makes sure that no patented algorithms are included. |
| 168 | For now RC5, MDC2 and IDEA are excluded from the build. You may have |
| 169 | to manually remove $(OBJ_D)\i_*.obj from ms\nt.mak if the build process |
| 170 | complains about missing files or forbidden IDEA. Again the files provided |
| 171 | in the subversion repository are already fixed. |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 172 | |
| 173 | The MSVC project simply invokes PCBuild/build_ssl.py to perform |
| 174 | the build. This Python script locates and builds your OpenSSL |
| 175 | installation, then invokes a simple makefile to build the final .pyd. |
| 176 | |
| 177 | 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 | |
Trent Nelson | dbc114a | 2008-04-02 15:01:00 +0000 | [diff] [blame] | 188 | The subprojects above wrap external projects Python doesn't control, and as |
| 189 | such, a little more work is required in order to download the relevant source |
| 190 | files for each project before they can be built. The buildbots do this each |
| 191 | time they're built, so the easiest approach is to run either external.bat or |
| 192 | external-amd64.bat in the ..\Tools\buildbot directory from ..\, i.e.: |
| 193 | |
| 194 | C:\..\svn.python.org\projects\python\trunk\PCbuild>cd .. |
| 195 | C:\..\svn.python.org\projects\python\trunk>Tools\buildbot\external.bat |
| 196 | |
| 197 | This extracts all the external subprojects from http://svn.python.org/external |
| 198 | via Subversion (so you'll need an svn.exe on your PATH) and places them in |
| 199 | ..\.. (relative to this directory). The external(-amd64).bat scripts will |
| 200 | also build a debug build of Tcl/Tk; there aren't any equivalent batch files |
| 201 | for building release versions of Tcl/Tk lying around in the Tools\buildbot |
| 202 | directory. If you need to build a release version of Tcl/Tk it isn't hard |
| 203 | though, take a look at the relevant external(-amd64).bat file and find the |
| 204 | two nmake lines, then call each one without the 'DEBUG=1' parameter, i.e.: |
| 205 | |
| 206 | The external-amd64.bat file contains this for tcl: |
| 207 | nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 clean all install |
| 208 | |
| 209 | So for a release build, you'd call it as: |
| 210 | nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 clean all install |
| 211 | |
| 212 | XXX Should we compile with OPTS=threads? |
| 213 | XXX Our installer copies a lot of stuff out of the Tcl/Tk install |
| 214 | XXX directory. Is all of that really needed for Python use of Tcl/Tk? |
| 215 | |
| 216 | This will be cleaned up in the future; ideally Tcl/Tk will be brought into our |
| 217 | pcbuild.sln as custom .vcproj files, just as we've recently done with the |
Georg Brandl | e4c1f11 | 2008-09-21 07:24:11 +0000 | [diff] [blame] | 218 | _bsddb.vcproj and sqlite3.vcproj files, which will remove the need for |
Trent Nelson | dbc114a | 2008-04-02 15:01:00 +0000 | [diff] [blame] | 219 | Tcl/Tk to be built separately via a batch file. |
| 220 | |
| 221 | XXX trent.nelson 02-Apr-08: |
| 222 | Having the external subprojects in ..\.. relative to this directory is a |
| 223 | bit of a nuisance when you're working on py3k and trunk in parallel and |
| 224 | your directory layout mimics that of Python's subversion layout, e.g.: |
| 225 | |
| 226 | C:\..\svn.python.org\projects\python\trunk |
| 227 | C:\..\svn.python.org\projects\python\branches\py3k |
| 228 | C:\..\svn.python.org\projects\python\branches\release25-maint |
| 229 | |
| 230 | I'd like to change things so that external subprojects are fetched from |
| 231 | ..\external instead of ..\.., then provide some helper scripts or batch |
| 232 | files that would set up a new ..\external directory with svn checkouts of |
| 233 | the relevant branches in http://svn.python.org/projects/external/, or |
| 234 | alternatively, use junctions to link ..\external with a pre-existing |
| 235 | externals directory being used by another branch. i.e. if I'm usually |
| 236 | working on trunk (and have previously created trunk\external via the |
| 237 | provided batch file), and want to do some work on py3k, I'd set up a |
| 238 | junction as follows (using the directory structure above as an example): |
| 239 | |
| 240 | C:\..\python\trunk\external <- already exists and has built versions |
| 241 | of the external subprojects |
| 242 | |
| 243 | C:\..\python\branches\py3k>linkd.exe external ..\..\trunk\external |
| 244 | Link created at: external |
| 245 | |
| 246 | Only a slight tweak would be needed to the buildbots such that bots |
| 247 | building trunk and py3k could make use of the same facility. (2.5.x |
| 248 | builds need to be kept separate as they're using Visual Studio 7.1.) |
| 249 | /XXX trent.nelson 02-Apr-08 |
| 250 | |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 251 | Building for Itanium |
| 252 | -------------------- |
| 253 | |
Christian Heimes | 8b01140 | 2007-11-27 21:28:40 +0000 | [diff] [blame] | 254 | NOTE: |
| 255 | Official support for Itanium builds have been dropped from the build. Please |
Christian Heimes | 95d6447 | 2008-02-09 19:55:22 +0000 | [diff] [blame] | 256 | contact us and provide patches if you are interested in Itanium builds. |
Christian Heimes | 8b01140 | 2007-11-27 21:28:40 +0000 | [diff] [blame] | 257 | |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 258 | The project files support a ReleaseItanium configuration which creates |
| 259 | Win64/Itanium binaries. For this to work, you need to install the Platform |
| 260 | SDK, in particular the 64-bit support. This includes an Itanium compiler |
| 261 | (future releases of the SDK likely include an AMD64 compiler as well). |
| 262 | In addition, you need the Visual Studio plugin for external C compilers, |
| 263 | from http://sf.net/projects/vsextcomp. The plugin will wrap cl.exe, to |
| 264 | locate the proper target compiler, and convert compiler options |
| 265 | accordingly. The project files require atleast version 0.9. |
| 266 | |
| 267 | Building for AMD64 |
| 268 | ------------------ |
| 269 | |
Christian Heimes | 8b01140 | 2007-11-27 21:28:40 +0000 | [diff] [blame] | 270 | The build process for AMD64 / x64 is very similar to standard builds. You just |
Martin v. Löwis | 9e05135 | 2008-02-29 18:54:45 +0000 | [diff] [blame] | 271 | have to set x64 as platform. In addition, the HOST_PYTHON environment variable |
| 272 | must point to a Python interpreter (at least 2.4), to support cross-compilation. |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 273 | |
| 274 | Building Python Using the free MS Toolkit Compiler |
| 275 | -------------------------------------------------- |
| 276 | |
Christian Heimes | 3971f6b | 2007-11-30 19:18:08 +0000 | [diff] [blame] | 277 | Microsoft has withdrawn the free MS Toolkit Compiler, so this can no longer |
| 278 | be considered a supported option. Instead you can use the free VS C++ Express |
| 279 | Edition. |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 280 | |
Christian Heimes | 8b01140 | 2007-11-27 21:28:40 +0000 | [diff] [blame] | 281 | Profile Guided Optimization |
| 282 | --------------------------- |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 283 | |
Thomas Heller | 44c38c1 | 2008-01-10 18:45:40 +0000 | [diff] [blame] | 284 | The solution has two configurations for PGO. The PGInstrument |
| 285 | configuration must be build first. The PGInstrument binaries are |
| 286 | lniked against a profiling library and contain extra debug |
| 287 | information. The PGUpdate configuration takes the profiling data and |
| 288 | generates optimized binaries. |
Christian Heimes | 3d2f564 | 2007-12-06 21:13:06 +0000 | [diff] [blame] | 289 | |
| 290 | The build_pgo.bat script automates the creation of optimized binaries. It |
| 291 | creates the PGI files, runs the unit test suite or PyBench with the PGI |
| 292 | python and finally creates the optimized files. |
| 293 | |
Christian Heimes | 8b01140 | 2007-11-27 21:28:40 +0000 | [diff] [blame] | 294 | http://msdn2.microsoft.com/en-us/library/e7k32f4k(VS.90).aspx |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 295 | |
Christian Heimes | 3971f6b | 2007-11-30 19:18:08 +0000 | [diff] [blame] | 296 | Static library |
| 297 | -------------- |
| 298 | |
| 299 | The solution has no configuration for static libraries. However it is easy |
| 300 | it build a static library instead of a DLL. You simply have to set the |
| 301 | "Configuration Type" to "Static Library (.lib)" and alter the preprocessor |
| 302 | macro "Py_ENABLE_SHARED" to "Py_NO_ENABLE_SHARED". You may also have to |
| 303 | change the "Runtime Library" from "Multi-threaded DLL (/MD)" to |
| 304 | "Multi-threaded (/MT)". |
| 305 | |
Christian Heimes | 1867994 | 2007-12-05 21:57:25 +0000 | [diff] [blame] | 306 | Visual Studio properties |
| 307 | ------------------------ |
| 308 | |
Christian Heimes | 3adfe9a | 2007-12-31 15:18:55 +0000 | [diff] [blame] | 309 | The PCbuild solution makes heavy use of Visual Studio property files |
Christian Heimes | 1867994 | 2007-12-05 21:57:25 +0000 | [diff] [blame] | 310 | (*.vsprops). The properties can be viewed and altered in the Property |
| 311 | Manager (View -> Other Windows -> Property Manager). |
| 312 | |
Christian Heimes | 3d2f564 | 2007-12-06 21:13:06 +0000 | [diff] [blame] | 313 | * debug (debug macro: _DEBUG) |
Christian Heimes | 1867994 | 2007-12-05 21:57:25 +0000 | [diff] [blame] | 314 | * pginstrument (PGO) |
| 315 | * pgupdate (PGO) |
| 316 | +-- pginstrument |
| 317 | * pyd (python extension, release build) |
| 318 | +-- release |
| 319 | +-- pyproject |
| 320 | * pyd_d (python extension, debug build) |
| 321 | +-- debug |
| 322 | +-- pyproject |
Christian Heimes | 3d2f564 | 2007-12-06 21:13:06 +0000 | [diff] [blame] | 323 | * pyproject (base settings for all projects, user macros like PyDllName) |
| 324 | * release (release macro: NDEBUG) |
Christian Heimes | 1867994 | 2007-12-05 21:57:25 +0000 | [diff] [blame] | 325 | * x64 (AMD64 / x64 platform specific settings) |
| 326 | |
| 327 | The pyproject propertyfile defines _WIN32 and x64 defines _WIN64 and _M_X64 |
| 328 | although the macros are set by the compiler, too. The GUI doesn't always know |
| 329 | about the macros and confuse the user with false information. |
| 330 | |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 331 | YOUR OWN EXTENSION DLLs |
| 332 | ----------------------- |
Christian Heimes | 3d2f564 | 2007-12-06 21:13:06 +0000 | [diff] [blame] | 333 | |
Christian Heimes | e8954f8 | 2007-11-22 11:21:16 +0000 | [diff] [blame] | 334 | If you want to create your own extension module DLL, there's an example |
| 335 | with easy-to-follow instructions in ../PC/example/; read the file |
| 336 | readme.txt there first. |