summaryrefslogtreecommitdiffstats
path: root/PC
diff options
context:
space:
mode:
Diffstat (limited to 'PC')
-rw-r--r--PC/VC6/_bsddb.dsp99
-rw-r--r--PC/VC6/_ctypes.dsp131
-rw-r--r--PC/VC6/_ctypes_test.dsp99
-rw-r--r--PC/VC6/_elementtree.dsp111
-rw-r--r--PC/VC6/_msi.dsp99
-rw-r--r--PC/VC6/_multiprocessing.dsp115
-rw-r--r--PC/VC6/_socket.dsp99
-rw-r--r--PC/VC6/_sqlite3.dsp131
-rw-r--r--PC/VC6/_ssl.dsp89
-rw-r--r--PC/VC6/_ssl.mak22
-rw-r--r--PC/VC6/_testcapi.dsp99
-rw-r--r--PC/VC6/_tkinter.dsp103
-rw-r--r--PC/VC6/build_ssl.py233
-rw-r--r--PC/VC6/build_tkinter.py81
-rw-r--r--PC/VC6/bz2.dsp99
-rw-r--r--PC/VC6/make_versioninfo.dsp108
-rw-r--r--PC/VC6/pcbuild.dsw320
-rw-r--r--PC/VC6/pyexpat.dsp111
-rw-r--r--PC/VC6/python.dsp100
-rw-r--r--PC/VC6/pythoncore.dsp813
-rw-r--r--PC/VC6/pythonw.dsp101
-rw-r--r--PC/VC6/readme.txt247
-rw-r--r--PC/VC6/rmpyc.py25
-rwxr-xr-xPC/VC6/rt.bat41
-rw-r--r--PC/VC6/select.dsp99
-rw-r--r--PC/VC6/tcl852.patch11
-rw-r--r--PC/VC6/unicodedata.dsp99
-rw-r--r--PC/VC6/w9xpopen.dsp97
-rw-r--r--PC/VC6/winsound.dsp99
-rw-r--r--PC/VS7.1/Uninstal.wse514
-rw-r--r--PC/VS7.1/_bsddb.vcproj258
-rw-r--r--PC/VS7.1/_ctypes.vcproj311
-rw-r--r--PC/VS7.1/_ctypes_test.vcproj242
-rw-r--r--PC/VS7.1/_elementtree.vcproj260
-rw-r--r--PC/VS7.1/_msi.vcproj252
-rw-r--r--PC/VS7.1/_socket.vcproj254
-rw-r--r--PC/VS7.1/_sqlite3.vcproj283
-rw-r--r--PC/VS7.1/_ssl.mak38
-rw-r--r--PC/VS7.1/_ssl.vcproj84
-rw-r--r--PC/VS7.1/_testcapi.vcproj247
-rw-r--r--PC/VS7.1/_tkinter.vcproj261
-rw-r--r--PC/VS7.1/amd64_ml64.bat17
-rw-r--r--PC/VS7.1/build_ssl.bat12
-rw-r--r--PC/VS7.1/build_ssl.py181
-rw-r--r--PC/VS7.1/bz2.vcproj271
-rw-r--r--PC/VS7.1/db.build10
-rw-r--r--PC/VS7.1/field3.py35
-rw-r--r--PC/VS7.1/installer.bmpbin0 -> 58806 bytes
-rw-r--r--PC/VS7.1/make_buildinfo.c92
-rw-r--r--PC/VS7.1/make_buildinfo.vcproj122
-rw-r--r--PC/VS7.1/make_versioninfo.vcproj140
-rw-r--r--PC/VS7.1/pcbuild.sln288
-rw-r--r--PC/VS7.1/pyexpat.vcproj259
-rw-r--r--PC/VS7.1/python.build21
-rw-r--r--PC/VS7.1/python.iss346
-rw-r--r--PC/VS7.1/python.vcproj270
-rw-r--r--PC/VS7.1/python20.wse3135
-rw-r--r--PC/VS7.1/pythoncore.vcproj868
-rw-r--r--PC/VS7.1/pythonw.vcproj261
-rw-r--r--PC/VS7.1/readme.txt426
-rw-r--r--PC/VS7.1/rmpyc.py25
-rwxr-xr-xPC/VS7.1/rt.bat52
-rw-r--r--PC/VS7.1/select.vcproj258
-rw-r--r--PC/VS7.1/unicodedata.vcproj247
-rw-r--r--PC/VS7.1/w9xpopen.vcproj121
-rw-r--r--PC/VS7.1/winsound.vcproj251
-rw-r--r--PC/VS8.0/_bsddb.vcproj1463
-rw-r--r--PC/VS8.0/_bsddb44.vcproj1252
-rw-r--r--PC/VS8.0/_ctypes.vcproj705
-rw-r--r--PC/VS8.0/_ctypes_test.vcproj521
-rw-r--r--PC/VS8.0/_elementtree.vcproj613
-rw-r--r--PC/VS8.0/_hashlib.vcproj545
-rw-r--r--PC/VS8.0/_msi.vcproj529
-rw-r--r--PC/VS8.0/_multiprocessing.vcproj557
-rw-r--r--PC/VS8.0/_socket.vcproj537
-rw-r--r--PC/VS8.0/_sqlite3.vcproj613
-rw-r--r--PC/VS8.0/_ssl.vcproj545
-rw-r--r--PC/VS8.0/_testcapi.vcproj521
-rw-r--r--PC/VS8.0/_tkinter.vcproj541
-rw-r--r--PC/VS8.0/bdist_wininst.vcproj270
-rw-r--r--PC/VS8.0/build.bat17
-rw-r--r--PC/VS8.0/build_env.bat1
-rw-r--r--PC/VS8.0/build_pgo.bat41
-rw-r--r--PC/VS8.0/build_ssl.bat12
-rw-r--r--PC/VS8.0/build_ssl.py250
-rw-r--r--PC/VS8.0/build_tkinter.py85
-rw-r--r--PC/VS8.0/bz2.vcproj581
-rw-r--r--PC/VS8.0/debug.vsprops15
-rw-r--r--PC/VS8.0/env.bat5
-rw-r--r--PC/VS8.0/field3.py35
-rw-r--r--PC/VS8.0/idle.bat15
-rw-r--r--PC/VS8.0/kill_python.c178
-rw-r--r--PC/VS8.0/kill_python.vcproj279
-rw-r--r--PC/VS8.0/make_buildinfo.c94
-rw-r--r--PC/VS8.0/make_buildinfo.vcproj162
-rw-r--r--PC/VS8.0/make_versioninfo.vcproj324
-rw-r--r--PC/VS8.0/pcbuild.sln559
-rw-r--r--PC/VS8.0/pginstrument.vsprops34
-rw-r--r--PC/VS8.0/pgupdate.vsprops14
-rw-r--r--PC/VS8.0/pyd.vsprops28
-rw-r--r--PC/VS8.0/pyd_d.vsprops36
-rw-r--r--PC/VS8.0/pyexpat.vcproj553
-rw-r--r--PC/VS8.0/pyproject.vsprops111
-rw-r--r--PC/VS8.0/python.vcproj637
-rw-r--r--PC/VS8.0/pythoncore.vcproj1889
-rw-r--r--PC/VS8.0/pythonw.vcproj618
-rw-r--r--PC/VS8.0/release.vsprops15
-rw-r--r--PC/VS8.0/rmpyc.py25
-rw-r--r--PC/VS8.0/rt.bat52
-rw-r--r--PC/VS8.0/select.vcproj537
-rw-r--r--PC/VS8.0/sqlite3.vcproj537
-rw-r--r--PC/VS8.0/sqlite3.vsprops14
-rw-r--r--PC/VS8.0/unicodedata.vcproj533
-rw-r--r--PC/VS8.0/w9xpopen.vcproj576
-rw-r--r--PC/VS8.0/winsound.vcproj523
-rw-r--r--PC/VS8.0/x64.vsprops22
-rw-r--r--PC/VS9.0/_bsddb.vcproj1463
-rw-r--r--PC/VS9.0/_ctypes.vcproj705
-rw-r--r--PC/VS9.0/_ctypes_test.vcproj521
-rw-r--r--PC/VS9.0/_elementtree.vcproj613
-rw-r--r--PC/VS9.0/_hashlib.vcproj545
-rw-r--r--PC/VS9.0/_msi.vcproj529
-rw-r--r--PC/VS9.0/_multiprocessing.vcproj557
-rw-r--r--PC/VS9.0/_socket.vcproj537
-rw-r--r--PC/VS9.0/_sqlite3.vcproj613
-rw-r--r--PC/VS9.0/_ssl.vcproj545
-rw-r--r--PC/VS9.0/_testcapi.vcproj521
-rw-r--r--PC/VS9.0/_tkinter.vcproj541
-rw-r--r--PC/VS9.0/bdist_wininst.vcproj270
-rw-r--r--PC/VS9.0/build.bat108
-rw-r--r--PC/VS9.0/build_env.bat1
-rw-r--r--PC/VS9.0/build_pgo.bat41
-rw-r--r--PC/VS9.0/build_ssl.bat12
-rw-r--r--PC/VS9.0/build_ssl.py238
-rw-r--r--PC/VS9.0/build_tkinter.py82
-rw-r--r--PC/VS9.0/bz2.vcproj581
-rw-r--r--PC/VS9.0/debug.vsprops15
-rw-r--r--PC/VS9.0/env.bat4
-rw-r--r--PC/VS9.0/field3.py35
-rw-r--r--PC/VS9.0/idle.bat15
-rw-r--r--PC/VS9.0/installer.bmpbin0 -> 58806 bytes
-rw-r--r--PC/VS9.0/kill_python.c178
-rw-r--r--PC/VS9.0/kill_python.vcproj279
-rw-r--r--PC/VS9.0/make_buildinfo.c94
-rw-r--r--PC/VS9.0/make_buildinfo.vcproj162
-rw-r--r--PC/VS9.0/make_versioninfo.vcproj324
-rw-r--r--PC/VS9.0/pcbuild.sln559
-rw-r--r--PC/VS9.0/pginstrument.vsprops34
-rw-r--r--PC/VS9.0/pgupdate.vsprops14
-rw-r--r--PC/VS9.0/pyd.vsprops28
-rw-r--r--PC/VS9.0/pyd_d.vsprops36
-rw-r--r--PC/VS9.0/pyexpat.vcproj553
-rw-r--r--PC/VS9.0/pyproject.vsprops111
-rw-r--r--PC/VS9.0/python.vcproj637
-rw-r--r--PC/VS9.0/pythoncore.vcproj1889
-rw-r--r--PC/VS9.0/pythonw.vcproj618
-rw-r--r--PC/VS9.0/readme.txt252
-rw-r--r--PC/VS9.0/release.vsprops15
-rw-r--r--PC/VS9.0/rmpyc.py25
-rw-r--r--PC/VS9.0/rt.bat60
-rw-r--r--PC/VS9.0/select.vcproj537
-rw-r--r--PC/VS9.0/sqlite3.vcproj537
-rw-r--r--PC/VS9.0/sqlite3.vsprops14
-rw-r--r--PC/VS9.0/unicodedata.vcproj533
-rw-r--r--PC/VS9.0/vs9to8.py36
-rw-r--r--PC/VS9.0/w9xpopen.vcproj576
-rw-r--r--PC/VS9.0/winsound.vcproj523
-rw-r--r--PC/VS9.0/x64.vsprops22
-rw-r--r--PC/WinMain.c6
-rw-r--r--PC/_msi.c295
-rw-r--r--PC/_subprocess.c691
-rw-r--r--PC/_testconsole.c131
-rw-r--r--PC/_winreg.c1872
-rw-r--r--PC/bdist_wininst/archive.h9
-rw-r--r--PC/bdist_wininst/bdist_wininst.vcxproj27
-rw-r--r--PC/bdist_wininst/build.bat19
-rw-r--r--PC/bdist_wininst/extract.c11
-rw-r--r--PC/bdist_wininst/install.c137
-rw-r--r--PC/bdist_wininst/install.rc162
-rw-r--r--PC/bdist_wininst/resource.h24
-rw-r--r--PC/bdist_wininst/wininst-7.1.sln21
-rw-r--r--PC/bdist_wininst/wininst-7.1.vcproj214
-rw-r--r--PC/bdist_wininst/wininst-8.sln19
-rw-r--r--PC/bdist_wininst/wininst-8.vcproj320
-rw-r--r--PC/bdist_wininst/wininst.dsp123
-rw-r--r--PC/bdist_wininst/wininst.dsw29
-rw-r--r--PC/classicAppCompat.can.xml1
-rw-r--r--PC/classicAppCompat.catbin10984 -> 0 bytes
-rw-r--r--PC/classicAppCompat.sccd28
-rw-r--r--PC/clinic/_testconsole.c.h91
-rw-r--r--PC/clinic/msvcrtmodule.c.h682
-rw-r--r--PC/clinic/winreg.c.h1124
-rw-r--r--PC/clinic/winsound.c.h154
-rw-r--r--PC/config.c273
-rw-r--r--PC/crtlicense.txt41
-rw-r--r--PC/dl_nt.c33
-rw-r--r--PC/dllbase_nt.txt77
-rw-r--r--PC/errmap.h212
-rw-r--r--PC/frozen_dllmain.c6
-rw-r--r--PC/generrmap.c20
-rw-r--r--PC/getpathp.c1201
-rw-r--r--PC/icons.mak9
-rw-r--r--PC/icons.rc4
-rw-r--r--PC/icons/launcher.icnsbin264476 -> 0 bytes
-rw-r--r--PC/icons/launcher.icobin87263 -> 0 bytes
-rw-r--r--PC/icons/launcher.svg1
-rw-r--r--PC/icons/py.icnsbin195977 -> 0 bytes
-rw-r--r--PC/icons/py.icobin75809 -> 0 bytes
-rw-r--r--PC/icons/py.pngbin14151 -> 0 bytes
-rw-r--r--PC/icons/py.svg1
-rw-r--r--PC/icons/pyc.icnsbin212125 -> 0 bytes
-rw-r--r--PC/icons/pyc.icobin78396 -> 0 bytes
-rw-r--r--PC/icons/pyc.svg1
-rw-r--r--PC/icons/pyd.icnsbin223199 -> 0 bytes
-rw-r--r--PC/icons/pyd.icobin83351 -> 0 bytes
-rw-r--r--PC/icons/pyd.svg1
-rw-r--r--PC/icons/python.icnsbin201868 -> 0 bytes
-rw-r--r--PC/icons/python.icobin77671 -> 0 bytes
-rw-r--r--PC/icons/python.svg1
-rw-r--r--PC/icons/pythonw.icnsbin193222 -> 0 bytes
-rw-r--r--PC/icons/pythonw.icobin76102 -> 0 bytes
-rw-r--r--PC/icons/pythonw.svg1
-rw-r--r--PC/icons/pythonwx150.pngbin8187 -> 0 bytes
-rw-r--r--PC/icons/pythonwx44.pngbin2232 -> 0 bytes
-rw-r--r--PC/icons/pythonx150.pngbin8271 -> 0 bytes
-rw-r--r--PC/icons/pythonx44.pngbin2178 -> 0 bytes
-rw-r--r--PC/icons/pythonx50.pngbin2190 -> 0 bytes
-rw-r--r--PC/icons/setup.icnsbin220699 -> 0 bytes
-rw-r--r--PC/icons/setup.icobin78328 -> 0 bytes
-rw-r--r--PC/icons/setup.svg1
-rw-r--r--PC/import_nt.c86
-rw-r--r--PC/invalid_parameter_handler.c22
-rw-r--r--PC/launcher.c2003
-rw-r--r--PC/layout/__init__.py0
-rw-r--r--PC/layout/__main__.py14
-rw-r--r--PC/layout/main.py652
-rw-r--r--PC/layout/support/__init__.py0
-rw-r--r--PC/layout/support/appxmanifest.py506
-rw-r--r--PC/layout/support/catalog.py44
-rw-r--r--PC/layout/support/constants.py42
-rw-r--r--PC/layout/support/distutils.command.bdist_wininst.py25
-rw-r--r--PC/layout/support/filesets.py100
-rw-r--r--PC/layout/support/logging.py93
-rw-r--r--PC/layout/support/nuspec.py72
-rw-r--r--PC/layout/support/options.py135
-rw-r--r--PC/layout/support/pip.py94
-rw-r--r--PC/layout/support/props.py100
-rw-r--r--PC/layout/support/python.props56
-rw-r--r--PC/make_versioninfo.c38
-rw-r--r--PC/msvcrtmodule.c694
-rw-r--r--PC/os2emx/Makefile702
-rw-r--r--PC/os2emx/README.os2emx701
-rw-r--r--PC/os2emx/config.c182
-rw-r--r--PC/os2emx/dlfcn.c223
-rw-r--r--PC/os2emx/dlfcn.h51
-rw-r--r--PC/os2emx/dllentry.c42
-rw-r--r--PC/os2emx/getpathp.c418
-rw-r--r--PC/os2emx/pyconfig.h334
-rw-r--r--PC/os2emx/python27.def1322
-rw-r--r--PC/os2emx/pythonpm.c124
-rw-r--r--PC/os2vacpp/_tkinter.def8
-rw-r--r--PC/os2vacpp/config.c106
-rw-r--r--PC/os2vacpp/getpathp.c482
-rw-r--r--PC/os2vacpp/makefile1880
-rw-r--r--PC/os2vacpp/makefile.omk1271
-rw-r--r--PC/os2vacpp/pyconfig.h213
-rw-r--r--PC/os2vacpp/python.def484
-rw-r--r--PC/os2vacpp/readme.txt119
-rw-r--r--PC/py.icobin0 -> 19790 bytes
-rw-r--r--PC/pyc.icobin0 -> 19790 bytes
-rw-r--r--PC/pycon.icobin0 -> 19790 bytes
-rw-r--r--PC/pyconfig.h315
-rw-r--r--PC/pylauncher.rc60
-rw-r--r--PC/pyshellext.cpp610
-rw-r--r--PC/pyshellext.def6
-rw-r--r--PC/pyshellext.idl12
-rw-r--r--PC/pyshellext.rc46
-rw-r--r--PC/pyshellext_d.def6
-rw-r--r--PC/python.manifest30
-rw-r--r--PC/python.mk5
-rw-r--r--PC/python3.def801
-rw-r--r--PC/python3dll.c9
-rw-r--r--PC/python_exe.rc50
-rw-r--r--PC/python_nt.rc42
-rw-r--r--PC/python_uwp.cpp263
-rw-r--r--PC/python_ver_rc.h34
-rw-r--r--PC/pythonw_exe.rc49
-rw-r--r--PC/readme.txt20
-rw-r--r--PC/sqlite3.rc49
-rw-r--r--PC/store_info.txt156
-rw-r--r--PC/testpy.py14
-rw-r--r--PC/validate_ucrtbase.py89
-rw-r--r--PC/w9xpopen.c112
-rw-r--r--PC/winreg.c2088
-rw-r--r--PC/winsound.c179
295 files changed, 64781 insertions, 12725 deletions
diff --git a/PC/VC6/_bsddb.dsp b/PC/VC6/_bsddb.dsp
new file mode 100644
index 0000000..9cebad0
--- /dev/null
+++ b/PC/VC6/_bsddb.dsp
@@ -0,0 +1,99 @@
+# Microsoft Developer Studio Project File - Name="_bsddb" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=_bsddb - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "_bsddb.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "_bsddb.mak" CFG="_bsddb - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "_bsddb - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "_bsddb - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName "_bsddb"
+# PROP Scc_LocalPath ".."
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "_bsddb - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-release\_bsddb"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /I "..\..\..\db-4.7.25\build_windows" /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib ..\..\..\db-4.7.25\build_windows\Release\libdb47s.lib /nologo /base:"0x1e180000" /subsystem:windows /dll /debug /machine:I386 /out:"./_bsddb.pyd"
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "_bsddb - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-debug\_bsddb"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /I "..\..\..\db-4.7.25\build_windows" /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib ..\..\..\db-4.7.25\build_windows\Release\libdb47s.lib /nologo /base:"0x1e180000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"msvcrtd" /out:"./_bsddb_d.pyd" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "_bsddb - Win32 Release"
+# Name "_bsddb - Win32 Debug"
+# Begin Source File
+
+SOURCE=..\..\Modules\_bsddb.c
+# End Source File
+# End Target
+# End Project
diff --git a/PC/VC6/_ctypes.dsp b/PC/VC6/_ctypes.dsp
new file mode 100644
index 0000000..1c98eac
--- /dev/null
+++ b/PC/VC6/_ctypes.dsp
@@ -0,0 +1,131 @@
+# Microsoft Developer Studio Project File - Name="_ctypes" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=_ctypes - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "_ctypes.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "_ctypes.mak" CFG="_ctypes - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "_ctypes - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "_ctypes - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName "_ctypes"
+# PROP Scc_LocalPath ".."
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "_ctypes - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-release\_ctypes"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /I "..\..\Modules\_ctypes\libffi_msvc" /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1d1a0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_ctypes.pyd"
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "_ctypes - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-debug\_ctypes"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /I "..\..\Modules\_ctypes\libffi_msvc" /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1d1a0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_ctypes_d.pyd" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "_ctypes - Win32 Release"
+# Name "_ctypes - Win32 Debug"
+# Begin Source File
+
+SOURCE=..\..\Modules\_ctypes\_ctypes.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_ctypes\callbacks.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_ctypes\callproc.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_ctypes\cfield.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_ctypes\libffi_msvc\ffi.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_ctypes\malloc_closure.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_ctypes\libffi_msvc\prep_cif.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_ctypes\stgdict.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_ctypes\libffi_msvc\win32.c
+# End Source File
+# End Target
+# End Project
diff --git a/PC/VC6/_ctypes_test.dsp b/PC/VC6/_ctypes_test.dsp
new file mode 100644
index 0000000..d1eb217
--- /dev/null
+++ b/PC/VC6/_ctypes_test.dsp
@@ -0,0 +1,99 @@
+# Microsoft Developer Studio Project File - Name="_ctypes_test" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=_ctypes_test - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "_ctypes_test.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "_ctypes_test.mak" CFG="_ctypes_test - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "_ctypes_test - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "_ctypes_test - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName "_ctypes_test"
+# PROP Scc_LocalPath ".."
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "_ctypes_test - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-release\_ctypes_test"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"./_ctypes_test.pyd"
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "_ctypes_test - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-debug\_ctypes_test"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"./_ctypes_test_d.pyd" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "_ctypes_test - Win32 Release"
+# Name "_ctypes_test - Win32 Debug"
+# Begin Source File
+
+SOURCE=..\..\Modules\_ctypes\_ctypes_test.c
+# End Source File
+# End Target
+# End Project
diff --git a/PC/VC6/_elementtree.dsp b/PC/VC6/_elementtree.dsp
new file mode 100644
index 0000000..8dc0cdd
--- /dev/null
+++ b/PC/VC6/_elementtree.dsp
@@ -0,0 +1,111 @@
+# Microsoft Developer Studio Project File - Name="_elementtree" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=_elementtree - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "_elementtree.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "_elementtree.mak" CFG="_elementtree - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "_elementtree - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "_elementtree - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName "_elementtree"
+# PROP Scc_LocalPath ".."
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "_elementtree - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-release\_elementtree"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /I "..\..\Modules\expat" /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "XML_NS" /D "XML_DTD" /D "BYTEORDER=1234" /D "XML_CONTEXT_BYTES=1024" /D "USE_PYEXPAT_CAPI" /D "XML_STATIC" /D "HAVE_MEMMOVE" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1d100000" /subsystem:windows /dll /debug /machine:I386 /out:"./_elementtree.pyd"
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "_elementtree - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-debug\_elementtree"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /I "..\..\Modules\expat" /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "XML_NS" /D "XML_DTD" /D "BYTEORDER=1234" /D "XML_CONTEXT_BYTES=1024" /D "USE_PYEXPAT_CAPI" /D "XML_STATIC" /D "HAVE_MEMMOVE" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1d100000" /subsystem:windows /dll /debug /machine:I386 /out:"./_elementtree_d.pyd" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "_elementtree - Win32 Release"
+# Name "_elementtree - Win32 Debug"
+# Begin Source File
+
+SOURCE=..\..\Modules\_elementtree.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\expat\xmlparse.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\expat\xmlrole.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\expat\xmltok.c
+# End Source File
+# End Target
+# End Project
diff --git a/PC/VC6/_msi.dsp b/PC/VC6/_msi.dsp
new file mode 100644
index 0000000..76a61bc
--- /dev/null
+++ b/PC/VC6/_msi.dsp
@@ -0,0 +1,99 @@
+# Microsoft Developer Studio Project File - Name="_msi" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=_msi - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "_msi.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "_msi.mak" CFG="_msi - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "_msi - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "_msi - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName "_msi"
+# PROP Scc_LocalPath ".."
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "_msi - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-release\_msi"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib fci.lib msi.lib rpcrt4.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib fci.lib msi.lib rpcrt4.lib /nologo /base:"0x1d1a0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_msi.pyd"
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "_msi - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-debug\_msi"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib fci.lib msi.lib rpcrt4.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib fci.lib msi.lib rpcrt4.lib /nologo /base:"0x1d1a0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_msi_d.pyd" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "_msi - Win32 Release"
+# Name "_msi - Win32 Debug"
+# Begin Source File
+
+SOURCE=..\..\PC\_msi.c
+# End Source File
+# End Target
+# End Project
diff --git a/PC/VC6/_multiprocessing.dsp b/PC/VC6/_multiprocessing.dsp
new file mode 100644
index 0000000..2dcaf83
--- /dev/null
+++ b/PC/VC6/_multiprocessing.dsp
@@ -0,0 +1,115 @@
+# Microsoft Developer Studio Project File - Name="_multiprocessing" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=_multiprocessing - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "_multiprocessing.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "_multiprocessing.mak" CFG="_multiprocessing - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "_multiprocessing - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "_multiprocessing - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName "_multiprocessing"
+# PROP Scc_LocalPath ".."
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "_multiprocessing - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-release\_multiprocessing"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /base:"0x1e1D0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_multiprocessing.pyd"
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "_multiprocessing - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-debug\_multiprocessing"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /base:"0x1e1d0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_multiprocessing_d.pyd" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "_multiprocessing - Win32 Release"
+# Name "_multiprocessing - Win32 Debug"
+# Begin Source File
+
+SOURCE=..\..\Modules\_multiprocessing\multiprocessing.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_multiprocessing\pipe_connection.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_multiprocessing\semaphore.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_multiprocessing\socket_connection.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_multiprocessing\win32_functions.c
+# End Source File
+# End Target
+# End Project
diff --git a/PC/VC6/_socket.dsp b/PC/VC6/_socket.dsp
new file mode 100644
index 0000000..55ee8f2
--- /dev/null
+++ b/PC/VC6/_socket.dsp
@@ -0,0 +1,99 @@
+# Microsoft Developer Studio Project File - Name="_socket" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=_socket - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "_socket.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "_socket.mak" CFG="_socket - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "_socket - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "_socket - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName "_socket"
+# PROP Scc_LocalPath ".."
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "_socket - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-release\_socket"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /base:"0x1e1D0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_socket.pyd"
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "_socket - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-debug\_socket"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /base:"0x1e1D0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_socket_d.pyd" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "_socket - Win32 Release"
+# Name "_socket - Win32 Debug"
+# Begin Source File
+
+SOURCE=..\..\Modules\socketmodule.c
+# End Source File
+# End Target
+# End Project
diff --git a/PC/VC6/_sqlite3.dsp b/PC/VC6/_sqlite3.dsp
new file mode 100644
index 0000000..3869938
--- /dev/null
+++ b/PC/VC6/_sqlite3.dsp
@@ -0,0 +1,131 @@
+# Microsoft Developer Studio Project File - Name="_sqlite3" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=_sqlite3 - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "_sqlite3.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "_sqlite3.mak" CFG="_sqlite3 - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "_sqlite3 - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "_sqlite3 - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName "_sqlite3"
+# PROP Scc_LocalPath ".."
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "_sqlite3 - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-release\_sqlite3"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /I "..\..\..\sqlite-source-3.3.4" /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D MODULE_NAME=\"sqlite3\" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\..\sqlite-source-3.3.4\sqlite3.lib /nologo /base:"0x1e180000" /subsystem:windows /dll /debug /machine:I386 /out:"./_sqlite3.pyd"
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "_sqlite3 - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-debug\_sqlite3"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /I "..\..\..\sqlite-source-3.3.4" /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D MODULE_NAME=\"sqlite3\" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\..\sqlite-source-3.3.4\sqlite3.lib /nologo /base:"0x1e180000" /subsystem:windows /dll /debug /machine:I386 /out:"./_sqlite3_d.pyd" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "_sqlite3 - Win32 Release"
+# Name "_sqlite3 - Win32 Debug"
+# Begin Source File
+
+SOURCE=..\..\Modules\_sqlite\cache.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_sqlite\connection.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_sqlite\cursor.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_sqlite\microprotocols.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_sqlite\module.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_sqlite\prepare_protocol.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_sqlite\row.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_sqlite\statement.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_sqlite\util.c
+# End Source File
+# End Target
+# End Project
diff --git a/PC/VC6/_ssl.dsp b/PC/VC6/_ssl.dsp
new file mode 100644
index 0000000..e8bb993
--- /dev/null
+++ b/PC/VC6/_ssl.dsp
@@ -0,0 +1,89 @@
+# Microsoft Developer Studio Project File - Name="_ssl" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) External Target" 0x0106
+
+CFG=_ssl - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "_ssl.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "_ssl.mak" CFG="_ssl - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "_ssl - Win32 Release" (based on "Win32 (x86) External Target")
+!MESSAGE "_ssl - Win32 Debug" (based on "Win32 (x86) External Target")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+
+!IF "$(CFG)" == "_ssl - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Cmd_Line "NMAKE /f _ssl.mak"
+# PROP BASE Rebuild_Opt "/a"
+# PROP BASE Target_File "_ssl.exe"
+# PROP BASE Bsc_Name "_ssl.bsc"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-release\_ssl"
+# PROP Cmd_Line "python build_ssl.py"
+# PROP Rebuild_Opt "-a"
+# PROP Target_File "_ssl.pyd"
+# PROP Bsc_Name ""
+# PROP Target_Dir ""
+
+!ELSEIF "$(CFG)" == "_ssl - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "x86-temp-debug\_ssl"
+# PROP BASE Intermediate_Dir "x86-temp-debug\_ssl"
+# PROP BASE Cmd_Line "NMAKE /f _ssl.mak"
+# PROP BASE Rebuild_Opt "/a"
+# PROP BASE Target_File "_ssl_d.pyd"
+# PROP BASE Bsc_Name "_ssl_d.bsc"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-debug\_ssl"
+# PROP Cmd_Line "python_d -u build_ssl.py -d"
+# PROP Rebuild_Opt "-a"
+# PROP Target_File "_ssl_d.pyd"
+# PROP Bsc_Name ""
+# PROP Target_Dir ""
+
+!ENDIF
+
+# Begin Target
+
+# Name "_ssl - Win32 Release"
+# Name "_ssl - Win32 Debug"
+
+!IF "$(CFG)" == "_ssl - Win32 Release"
+
+!ELSEIF "$(CFG)" == "_ssl - Win32 Debug"
+
+!ENDIF
+
+# Begin Source File
+
+SOURCE=..\..\Modules\_ssl.c
+# End Source File
+# End Target
+# End Project
diff --git a/PC/VC6/_ssl.mak b/PC/VC6/_ssl.mak
new file mode 100644
index 0000000..877a614
--- /dev/null
+++ b/PC/VC6/_ssl.mak
@@ -0,0 +1,22 @@
+
+!IFDEF DEBUG
+MODULE=_ssl_d.pyd
+TEMP_DIR=x86-temp-debug/_ssl
+CFLAGS=/Od /Zi /MDd /LDd /DDEBUG /D_DEBUG /DWIN32
+LFLAGS=/nodefaultlib:"msvcrt"
+!ELSE
+MODULE=_ssl.pyd
+TEMP_DIR=x86-temp-release/_ssl
+CFLAGS=/Ox /MD /LD /DWIN32
+LFLAGS=
+!ENDIF
+
+INCLUDES=-I ../../Include -I .. -I $(SSL_DIR)/inc32
+SSL_LIB_DIR=$(SSL_DIR)/out32
+LIBS=gdi32.lib wsock32.lib user32.lib advapi32.lib /libpath:$(SSL_LIB_DIR) libeay32.lib ssleay32.lib
+
+SOURCE=../../Modules/_ssl.c $(SSL_LIB_DIR)/libeay32.lib $(SSL_LIB_DIR)/ssleay32.lib
+
+$(MODULE): $(SOURCE) ../*.h ../../Include/*.h
+ @if not exist "$(TEMP_DIR)/." mkdir "$(TEMP_DIR)"
+ cl /nologo $(SOURCE) $(CFLAGS) /Fo$(TEMP_DIR)\$*.obj $(INCLUDES) /link /out:$(MODULE) $(LIBS) $(LFLAGS)
diff --git a/PC/VC6/_testcapi.dsp b/PC/VC6/_testcapi.dsp
new file mode 100644
index 0000000..0eaa25a
--- /dev/null
+++ b/PC/VC6/_testcapi.dsp
@@ -0,0 +1,99 @@
+# Microsoft Developer Studio Project File - Name="_testcapi" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=_testcapi - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "_testcapi.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "_testcapi.mak" CFG="_testcapi - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "_testcapi - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "_testcapi - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName "_testcapi"
+# PROP Scc_LocalPath ".."
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "_testcapi - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-release\_testcapi"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0xc09 /d "NDEBUG"
+# ADD RSC /l 0xc09 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1e1F0000" /dll /machine:I386 /out:"./_testcapi.pyd"
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "_testcapi - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-debug\_testcapi"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0xc09 /d "_DEBUG"
+# ADD RSC /l 0xc09 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1e1F0000" /dll /debug /machine:I386 /out:"./_testcapi_d.pyd" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "_testcapi - Win32 Release"
+# Name "_testcapi - Win32 Debug"
+# Begin Source File
+
+SOURCE=..\..\Modules\_testcapimodule.c
+# End Source File
+# End Target
+# End Project
diff --git a/PC/VC6/_tkinter.dsp b/PC/VC6/_tkinter.dsp
new file mode 100644
index 0000000..5d69f59
--- /dev/null
+++ b/PC/VC6/_tkinter.dsp
@@ -0,0 +1,103 @@
+# Microsoft Developer Studio Project File - Name="_tkinter" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=_tkinter - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "_tkinter.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "_tkinter.mak" CFG="_tkinter - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "_tkinter - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "_tkinter - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName "_tkinter"
+# PROP Scc_LocalPath "..\..\.."
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "_tkinter - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-debug\_tkinter"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\..\tcltk\include" /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "WITH_APPINIT" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 ..\..\..\tcltk\lib\tk85g.lib ..\..\..\tcltk\lib\tcl85g.lib odbc32.lib odbccp32.lib user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /base:"0x1e190000" /subsystem:windows /dll /debug /machine:I386 /out:"./_tkinter_d.pyd" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "_tkinter - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-release\_tkinter"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\..\tcltk\include" /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "WITH_APPINIT" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 ..\..\..\tcltk\lib\tk85.lib ..\..\..\tcltk\lib\tcl85.lib odbc32.lib odbccp32.lib user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /base:"0x1e190000" /subsystem:windows /dll /debug /machine:I386 /out:"./_tkinter.pyd"
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "_tkinter - Win32 Release"
+# Name "_tkinter - Win32 Debug"
+# Begin Source File
+
+SOURCE=..\..\Modules\_tkinter.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\tkappinit.c
+# End Source File
+# End Target
+# End Project
diff --git a/PC/VC6/build_ssl.py b/PC/VC6/build_ssl.py
new file mode 100644
index 0000000..29a5192
--- /dev/null
+++ b/PC/VC6/build_ssl.py
@@ -0,0 +1,233 @@
+# Script for building the _ssl module for Windows.
+# Uses Perl to setup the OpenSSL environment correctly
+# and build OpenSSL, then invokes a simple nmake session
+# for _ssl.pyd itself.
+
+# THEORETICALLY, you can:
+# * Unpack the latest SSL release one level above your main Python source
+# directory. It is likely you will already find the zlib library and
+# any other external packages there.
+# * Install ActivePerl and ensure it is somewhere on your path.
+# * Run this script from the PC/VC6 directory.
+#
+# it should configure and build SSL, then build the ssl Python extension
+# without intervention.
+
+# Modified by Christian Heimes
+# Now this script supports pre-generated makefiles and assembly files.
+# Developers don't need an installation of Perl anymore to build Python. A svn
+# checkout from our svn repository is enough.
+
+import os, sys, re, shutil
+
+# Find all "foo.exe" files on the PATH.
+def find_all_on_path(filename, extras = None):
+ entries = os.environ["PATH"].split(os.pathsep)
+ ret = []
+ for p in entries:
+ fname = os.path.abspath(os.path.join(p, filename))
+ if os.path.isfile(fname) and fname not in ret:
+ ret.append(fname)
+ if extras:
+ for p in extras:
+ fname = os.path.abspath(os.path.join(p, filename))
+ if os.path.isfile(fname) and fname not in ret:
+ ret.append(fname)
+ return ret
+
+# Find a suitable Perl installation for OpenSSL.
+# cygwin perl does *not* work. ActivePerl does.
+# Being a Perl dummy, the simplest way I can check is if the "Win32" package
+# is available.
+def find_working_perl(perls):
+ for perl in perls:
+ fh = os.popen('"%s" -e "use Win32;"' % perl)
+ fh.read()
+ rc = fh.close()
+ if rc:
+ continue
+ return perl
+ print "Can not find a suitable PERL:"
+ if perls:
+ print " the following perl interpreters were found:"
+ for p in perls:
+ print " ", p
+ print " None of these versions appear suitable for building OpenSSL"
+ else:
+ print " NO perl interpreters were found on this machine at all!"
+ print " Please install ActivePerl and ensure it appears on your path"
+ return None
+
+# Locate the best SSL directory given a few roots to look into.
+def find_best_ssl_dir(sources):
+ candidates = []
+ for s in sources:
+ try:
+ # note: do not abspath s; the build will fail if any
+ # higher up directory name has spaces in it.
+ fnames = os.listdir(s)
+ except os.error:
+ fnames = []
+ for fname in fnames:
+ fqn = os.path.join(s, fname)
+ if os.path.isdir(fqn) and fname.startswith("openssl-"):
+ candidates.append(fqn)
+ # Now we have all the candidates, locate the best.
+ best_parts = []
+ best_name = None
+ for c in candidates:
+ parts = re.split("[.-]", os.path.basename(c))[1:]
+ # eg - openssl-0.9.7-beta1 - ignore all "beta" or any other qualifiers
+ if len(parts) >= 4:
+ continue
+ if parts > best_parts:
+ best_parts = parts
+ best_name = c
+ if best_name is not None:
+ print "Found an SSL directory at '%s'" % (best_name,)
+ else:
+ print "Could not find an SSL directory in '%s'" % (sources,)
+ sys.stdout.flush()
+ return best_name
+
+def fix_makefile(makefile):
+ """Fix some stuff in all makefiles
+ """
+ if not os.path.isfile(makefile):
+ return
+ # 2.4 compatibility
+ fin = open(makefile)
+ if 1: # with open(makefile) as fin:
+ lines = fin.readlines()
+ fin.close()
+ fout = open(makefile, 'w')
+ if 1: # with open(makefile, 'w') as fout:
+ for line in lines:
+ if line.startswith("PERL="):
+ continue
+ if line.startswith("CP="):
+ line = "CP=copy\n"
+ if line.startswith("MKDIR="):
+ line = "MKDIR=mkdir\n"
+ if line.startswith("CFLAG="):
+ line = line.strip()
+ for algo in ("RC5", "MDC2", "IDEA"):
+ noalgo = " -DOPENSSL_NO_%s" % algo
+ if noalgo not in line:
+ line = line + noalgo
+ line = line + '\n'
+ fout.write(line)
+ fout.close()
+
+def run_configure(configure, do_script):
+ print "perl Configure "+configure
+ os.system("perl Configure "+configure)
+ print do_script
+ os.system(do_script)
+
+def cmp(f1, f2):
+ bufsize = 1024 * 8
+ with open(f1, 'rb') as fp1, open(f2, 'rb') as fp2:
+ while True:
+ b1 = fp1.read(bufsize)
+ b2 = fp2.read(bufsize)
+ if b1 != b2:
+ return False
+ if not b1:
+ return True
+
+def copy(src, dst):
+ if os.path.isfile(dst) and cmp(src, dst):
+ return
+ shutil.copy(src, dst)
+
+def main():
+ debug = "-d" in sys.argv
+ build_all = "-a" in sys.argv
+ if 1: # Win32
+ arch = "x86"
+ configure = "VC-WIN32"
+ do_script = "ms\\do_nasm"
+ makefile="ms\\nt.mak"
+ m32 = makefile
+ dirsuffix = "32"
+ configure += " no-idea no-rc5 no-mdc2"
+ make_flags = ""
+ if build_all:
+ make_flags = "-a"
+ # perl should be on the path, but we also look in "\perl" and "c:\\perl"
+ # as "well known" locations
+ perls = find_all_on_path("perl.exe", ["\\perl\\bin", "C:\\perl\\bin"])
+ perl = find_working_perl(perls)
+ if perl:
+ print "Found a working perl at '%s'" % (perl,)
+ else:
+ print "No Perl installation was found. Existing Makefiles are used."
+ sys.stdout.flush()
+ # Look for SSL 3 levels up from PC/VC6 - ie, same place zlib etc all live.
+ ssl_dir = find_best_ssl_dir(("..\\..\\..",))
+ if ssl_dir is None:
+ sys.exit(1)
+
+ old_cd = os.getcwd()
+ try:
+ os.chdir(ssl_dir)
+ # If the ssl makefiles do not exist, we invoke Perl to generate them.
+ # Due to a bug in this script, the makefile sometimes ended up empty
+ # Force a regeneration if it is.
+ if not os.path.isfile(makefile) or os.path.getsize(makefile)==0:
+ if perl is None:
+ print "Perl is required to build the makefiles!"
+ sys.exit(1)
+
+ print "Creating the makefiles..."
+ sys.stdout.flush()
+ # Put our working Perl at the front of our path
+ os.environ["PATH"] = os.path.dirname(perl) + \
+ os.pathsep + \
+ os.environ["PATH"]
+ run_configure(configure, do_script)
+ if debug:
+ print "OpenSSL debug builds aren't supported."
+ #if arch=="x86" and debug:
+ # # the do_masm script in openssl doesn't generate a debug
+ # # build makefile so we generate it here:
+ # os.system("perl util\mk1mf.pl debug "+configure+" >"+makefile)
+
+ fix_makefile(makefile)
+ copy(r"crypto\buildinf.h", r"crypto\buildinf_%s.h" % arch)
+ copy(r"crypto\opensslconf.h", r"crypto\opensslconf_%s.h" % arch)
+
+ # If the assembler files don't exist in tmpXX, copy them there
+ if perl is None:
+ if not os.path.exists("tmp"+dirsuffix):
+ os.mkdir("tmp"+dirsuffix)
+ for f in os.listdir("asm"+dirsuffix):
+ if not f.endswith(".asm"): continue
+ if os.path.isfile(r"tmp%s\%s" % (dirsuffix, f)): continue
+ shutil.copy(r"asm%s\%s" % (dirsuffix, f), "tmp"+dirsuffix)
+
+ # Now run make.
+ copy(r"crypto\buildinf_%s.h" % arch, r"crypto\buildinf.h")
+ copy(r"crypto\opensslconf_%s.h" % arch, r"crypto\opensslconf.h")
+
+ #makeCommand = "nmake /nologo PERL=\"%s\" -f \"%s\"" %(perl, makefile)
+ makeCommand = "nmake /nologo -f \"%s\"" % makefile
+ print "Executing ssl makefiles:", makeCommand
+ sys.stdout.flush()
+ rc = os.system(makeCommand)
+ if rc:
+ print "Executing "+makefile+" failed"
+ print rc
+ sys.exit(rc)
+ finally:
+ os.chdir(old_cd)
+ # And finally, we can build the _ssl module itself for Python.
+ defs = "SSL_DIR=%s" % (ssl_dir,)
+ if debug:
+ defs = defs + " " + "DEBUG=1"
+ rc = os.system('nmake /nologo -f _ssl.mak ' + defs + " " + make_flags)
+ sys.exit(rc)
+
+if __name__=='__main__':
+ main()
diff --git a/PC/VC6/build_tkinter.py b/PC/VC6/build_tkinter.py
new file mode 100644
index 0000000..e5ca92c
--- /dev/null
+++ b/PC/VC6/build_tkinter.py
@@ -0,0 +1,81 @@
+import os
+import sys
+import subprocess
+
+TCL_MAJOR = 8
+TCL_MINOR = 5
+TCL_PATCH = 2
+
+TIX_MAJOR = 8
+TIX_MINOR = 4
+TIX_PATCH = 3
+
+def abspath(name):
+ par = os.path.pardir
+ return os.path.abspath(os.path.join(__file__, par, par, par, par, name))
+
+TCL_DIR = abspath("tcl%d.%d.%d" % (TCL_MAJOR, TCL_MINOR, TCL_PATCH))
+TK_DIR = abspath("tk%d.%d.%d" % (TCL_MAJOR, TCL_MINOR, TCL_PATCH))
+TIX_DIR = abspath("tix%d.%d.%d" % (TIX_MAJOR, TIX_MINOR, TIX_PATCH))
+OUT_DIR = abspath("tcltk")
+
+def have_args(*a):
+ return any(s in sys.argv[1:] for s in a)
+
+def enter(dir):
+ os.chdir(os.path.join(dir, "win"))
+
+def main():
+ debug = have_args("-d", "--debug")
+ clean = have_args("clean")
+ install = have_args("install")
+ tcl = have_args("tcl")
+ tk = have_args("tk")
+ tix = have_args("tix")
+ if not(tcl) and not(tk) and not(tix):
+ tcl = tk = tix = True
+
+ def nmake(makefile, *a):
+ args = ["nmake", "/nologo", "/f", makefile, "DEBUG=%d" % debug]
+ args.extend(a)
+ subprocess.check_call(args)
+
+ if tcl:
+ enter(TCL_DIR)
+ def nmake_tcl(*a):
+ nmake("makefile.vc", *a)
+ if clean:
+ nmake_tcl("clean")
+ elif install:
+ nmake_tcl("install", "INSTALLDIR=" + OUT_DIR)
+ else:
+ nmake_tcl()
+
+ if tk:
+ enter(TK_DIR)
+ def nmake_tk(*a):
+ nmake("makefile.vc", "TCLDIR=" + TCL_DIR, *a)
+ if clean:
+ nmake_tk("clean")
+ elif install:
+ nmake_tk("install", "INSTALLDIR=" + OUT_DIR)
+ else:
+ nmake_tk()
+
+ if tix:
+ enter(TIX_DIR)
+ def nmake_tix(*a):
+ nmake("python.mak",
+ "TCL_MAJOR=%d" % TCL_MAJOR,
+ "TCL_MINOR=%d" % TCL_MINOR,
+ "TCL_PATCH=%d" % TCL_PATCH,
+ "MACHINE=IX86", *a)
+ if clean:
+ nmake_tix("clean")
+ elif install:
+ nmake_tix("install", "INSTALL_DIR=" + OUT_DIR)
+ else:
+ nmake_tix()
+
+if __name__ == '__main__':
+ main()
diff --git a/PC/VC6/bz2.dsp b/PC/VC6/bz2.dsp
new file mode 100644
index 0000000..352cbad
--- /dev/null
+++ b/PC/VC6/bz2.dsp
@@ -0,0 +1,99 @@
+# Microsoft Developer Studio Project File - Name="bz2" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=bz2 - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "bz2.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "bz2.mak" CFG="bz2 - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "bz2 - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "bz2 - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName "bz2"
+# PROP Scc_LocalPath ".."
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "bz2 - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-release\bz2"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /I "..\..\..\bzip2-1.0.6" /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 ..\..\..\bzip2-1.0.6\libbz2.lib /nologo /base:"0x1D170000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc" /out:"./bz2.pyd"
+# SUBTRACT LINK32 /pdb:none /nodefaultlib
+
+!ELSEIF "$(CFG)" == "bz2 - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-debug\bz2"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /I "..\..\..\bzip2-1.0.6" /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 ..\..\..\bzip2-1.0.6\libbz2.lib /nologo /base:"0x1D170000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"msvcrt" /nodefaultlib:"libc" /out:"./bz2_d.pyd" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "bz2 - Win32 Release"
+# Name "bz2 - Win32 Debug"
+# Begin Source File
+
+SOURCE=..\..\Modules\bz2module.c
+# End Source File
+# End Target
+# End Project
diff --git a/PC/VC6/make_versioninfo.dsp b/PC/VC6/make_versioninfo.dsp
new file mode 100644
index 0000000..a735e12
--- /dev/null
+++ b/PC/VC6/make_versioninfo.dsp
@@ -0,0 +1,108 @@
+# Microsoft Developer Studio Project File - Name="make_versioninfo" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=make_versioninfo - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "make_versioninfo.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "make_versioninfo.mak" CFG="make_versioninfo - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "make_versioninfo - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "make_versioninfo - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName "make_versioninfo"
+# PROP Scc_LocalPath ".."
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "make_versioninfo - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-release\make_versioninfo"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /base:"0x1d000000" /subsystem:console /debug /machine:I386
+# SUBTRACT LINK32 /pdb:none
+# Begin Custom Build
+InputPath=.\make_versioninfo.exe
+SOURCE="$(InputPath)"
+
+"..\pythonnt_rc.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ .\make_versioninfo.exe >..\pythonnt_rc.h
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "make_versioninfo - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-debug\make_versioninfo"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /i "..\..\Include" /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /base:"0x1d000000" /subsystem:console /debug /machine:I386 /out:"./make_versioninfo_d.exe" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+# Begin Custom Build
+InputPath=.\make_versioninfo_d.exe
+SOURCE="$(InputPath)"
+
+"..\pythonnt_rc_d.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ .\make_versioninfo_d.exe >..\pythonnt_rc_d.h
+
+# End Custom Build
+
+!ENDIF
+
+# Begin Target
+
+# Name "make_versioninfo - Win32 Release"
+# Name "make_versioninfo - Win32 Debug"
+# Begin Source File
+
+SOURCE=..\make_versioninfo.c
+# End Source File
+# End Target
+# End Project
diff --git a/PC/VC6/pcbuild.dsw b/PC/VC6/pcbuild.dsw
new file mode 100644
index 0000000..c10c794
--- /dev/null
+++ b/PC/VC6/pcbuild.dsw
@@ -0,0 +1,320 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "_bsddb"=".\_bsddb.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name pythoncore
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "_ctypes"=".\_ctypes.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name pythoncore
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "_ctypes_test"=".\_ctypes_test.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "_elementtree"=".\_elementtree.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "_msi"=".\_msi.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name pythoncore
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "_multiprocessing"=".\_multiprocessing.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name pythoncore
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "_socket"=".\_socket.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name pythoncore
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "_sqlite3"=".\_sqlite3.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "_ssl"=".\_ssl.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name pythoncore
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name python
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name w9xpopen
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "_testcapi"=".\_testcapi.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name pythoncore
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "_tkinter"=".\_tkinter.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name pythoncore
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "bz2"=".\bz2.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "make_versioninfo"=".\make_versioninfo.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "pyexpat"=".\pyexpat.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name pythoncore
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "python"=".\python.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name pythoncore
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "pythoncore"=".\pythoncore.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name make_versioninfo
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "pythonw"=".\pythonw.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name pythoncore
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "select"=".\select.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name pythoncore
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "unicodedata"=".\unicodedata.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name pythoncore
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "w9xpopen"=".\w9xpopen.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "winsound"=".\winsound.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name pythoncore
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/PC/VC6/pyexpat.dsp b/PC/VC6/pyexpat.dsp
new file mode 100644
index 0000000..561c9ef
--- /dev/null
+++ b/PC/VC6/pyexpat.dsp
@@ -0,0 +1,111 @@
+# Microsoft Developer Studio Project File - Name="pyexpat" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=pyexpat - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "pyexpat.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "pyexpat.mak" CFG="pyexpat - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "pyexpat - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "pyexpat - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName "pyexpat"
+# PROP Scc_LocalPath ".."
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "pyexpat - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-release\pyexpat"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /I "..\..\Modules\expat" /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "XML_NS" /D "XML_DTD" /D BYTEORDER=1234 /D XML_CONTEXT_BYTES=1024 /D "XML_STATIC" /D "HAVE_MEMMOVE" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1D100000" /subsystem:windows /dll /debug /machine:I386 /out:"./pyexpat.pyd"
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "pyexpat - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-debug\pyexpat"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /I "..\..\Modules\expat" /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "HAVE_EXPAT_H" /D "WIN32" /D "_WINDOWS" /D "XML_NS" /D "XML_DTD" /D BYTEORDER=1234 /D XML_CONTEXT_BYTES=1024 /D "XML_STATIC" /D "HAVE_MEMMOVE" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1D100000" /subsystem:windows /dll /debug /machine:I386 /out:"./pyexpat_d.pyd" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "pyexpat - Win32 Release"
+# Name "pyexpat - Win32 Debug"
+# Begin Source File
+
+SOURCE=..\..\Modules\pyexpat.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\expat\xmlparse.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\expat\xmlrole.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\expat\xmltok.c
+# End Source File
+# End Target
+# End Project
diff --git a/PC/VC6/python.dsp b/PC/VC6/python.dsp
new file mode 100644
index 0000000..fa8b772
--- /dev/null
+++ b/PC/VC6/python.dsp
@@ -0,0 +1,100 @@
+# Microsoft Developer Studio Project File - Name="python" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=python - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "python.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "python.mak" CFG="python - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "python - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "python - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName "python"
+# PROP Scc_LocalPath ".."
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "python - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-release\python"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /base:"0x1d000000" /subsystem:console /debug /machine:I386
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "python - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-debug\python"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /i "....\\Include" /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /base:"0x1d000000" /stack:0x200000 /subsystem:console /debug /machine:I386 /out:"./python_d.exe" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "python - Win32 Release"
+# Name "python - Win32 Debug"
+# Begin Source File
+
+SOURCE=..\pycon.ico
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\python.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\python_exe.rc
+# End Source File
+# End Target
+# End Project
diff --git a/PC/VC6/pythoncore.dsp b/PC/VC6/pythoncore.dsp
new file mode 100644
index 0000000..e96336c
--- /dev/null
+++ b/PC/VC6/pythoncore.dsp
@@ -0,0 +1,813 @@
+# Microsoft Developer Studio Project File - Name="pythoncore" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=pythoncore - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "pythoncore.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "pythoncore.mak" CFG="pythoncore - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "pythoncore - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "pythoncore - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName "pythoncore"
+# PROP Scc_LocalPath ".."
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "pythoncore - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-release\pythoncore"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /I "..\..\modules\zlib" /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "USE_DL_EXPORT" /YX /FD /Zm200 /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL"
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL"
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /i "..\..\Include" /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 largeint.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x1e000000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc" /out:"./python27.dll"
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "pythoncore - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-debug\pythoncore"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /I "..\..\modules\zlib" /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "USE_DL_EXPORT" /D "WIN32" /D "_WINDOWS" /YX /FD /Zm200 /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL"
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL"
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /i "..\..\Include" /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 largeint.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x1e000000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc" /out:"./python27_d.dll" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "pythoncore - Win32 Release"
+# Name "pythoncore - Win32 Debug"
+# Begin Source File
+
+SOURCE=..\..\Modules\_bisectmodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\cjkcodecs\_codecs_cn.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\cjkcodecs\_codecs_hk.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\cjkcodecs\_codecs_iso2022.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\cjkcodecs\_codecs_jp.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\cjkcodecs\_codecs_kr.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\cjkcodecs\_codecs_tw.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_codecsmodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_collectionsmodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_csv.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_functoolsmodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_heapqmodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_hotshot.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_io\_iomodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_json.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_localemodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_lsprof.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_math.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_randommodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_sre.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_struct.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\PC\_subprocess.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\_warnings.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_weakref.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\_winreg.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\abstract.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Parser\acceler.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\zlib\adler32.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\arraymodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\asdl.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\ast.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\audioop.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\binascii.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Parser\bitset.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\bltinmodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\boolobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_io\bufferedio.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\bufferobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\bytearrayobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_io\bytesio.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\bytes_methods.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\capsule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\cellobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\ceval.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\classobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\cmathmodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\cobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\codecs.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\codeobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\compile.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\complexobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\zlib\compress.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\config.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\cPickle.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\zlib\crc32.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\cStringIO.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\datetimemodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\zlib\deflate.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\descrobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\dictobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\dl_nt.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\dtoa.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\dynload_win.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\enumobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\errnomodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\errors.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\exceptions.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_io\fileio.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\fileobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Parser\firstsets.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\floatobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\formatter_string.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\formatter_unicode.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\frameobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\frozen.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\funcobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\future.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\future_builtins.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\gcmodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\genobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\getargs.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\getbuildinfo.c
+# ADD CPP /D BUILD=46
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\getcompiler.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\getcopyright.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\getopt.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\getpathp.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\getplatform.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\getversion.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\graminit.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Parser\grammar.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Parser\grammar1.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\zlib\gzclose.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\zlib\gzlib.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\zlib\gzread.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\zlib\gzwrite.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_io\iobase.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\imageop.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\import.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\import_nt.c
+# ADD CPP /I "..\..\Python"
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\importdl.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\zlib\infback.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\zlib\inffast.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\zlib\inflate.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\zlib\inftrees.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\intobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\iterobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\itertoolsmodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Parser\listnode.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\listobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\longobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\main.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\marshal.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\mathmodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\md5.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\md5module.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\memoryobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Parser\metagrammar.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\methodobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\mmapmodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\modsupport.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\moduleobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\msvcrtmodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\cjkcodecs\multibytecodec.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Parser\myreadline.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\mysnprintf.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\mystrtoul.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Parser\node.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\object.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\obmalloc.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\operator.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Parser\parser.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\parsermodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Parser\parsetok.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\peephole.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\posixmodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\pyarena.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\pyctype.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\pyfpe.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\pymath.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\pystate.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\pystrcmp.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\pystrtod.c
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\Python\Python-ast.c"
+# End Source File
+# Begin Source File
+
+SOURCE=..\python_nt.rc
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\pythonrun.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\random.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\rangeobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\rotatingtree.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\setobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\sha256module.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\sha512module.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\shamodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\signalmodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\sliceobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_io\stringio.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\stringobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\stropmodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\structmember.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\structseq.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\symtable.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\symtablemodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\sysmodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\_io\textio.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\thread.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\threadmodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\timemodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Parser\tokenizer.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Python\traceback.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\zlib\trees.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\tupleobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\typeobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\zlib\uncompr.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\unicodectype.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\unicodeobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Objects\weakrefobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\xxsubtype.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\zipimport.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\zlibmodule.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Modules\zlib\zutil.c
+# End Source File
+# End Target
+# End Project
diff --git a/PC/VC6/pythonw.dsp b/PC/VC6/pythonw.dsp
new file mode 100644
index 0000000..e9c325c
--- /dev/null
+++ b/PC/VC6/pythonw.dsp
@@ -0,0 +1,101 @@
+# Microsoft Developer Studio Project File - Name="pythonw" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Application" 0x0101
+
+CFG=pythonw - Win32 Alpha Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "pythonw.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "pythonw.mak" CFG="pythonw - Win32 Alpha Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "pythonw - Win32 Release" (based on "Win32 (x86) Application")
+!MESSAGE "pythonw - Win32 Debug" (based on "Win32 (x86) Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName "pythonw"
+# PROP Scc_LocalPath "..\pc"
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "pythonw - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-release\pythonw"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1d000000" /subsystem:windows /debug /machine:I386
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "pythonw - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-debug\pythonw"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1d000000" /subsystem:windows /debug /machine:I386 /out:"./pythonw_d.exe" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "pythonw - Win32 Release"
+# Name "pythonw - Win32 Debug"
+# Begin Source File
+
+SOURCE=..\python_exe.rc
+# End Source File
+# Begin Source File
+
+SOURCE=..\WinMain.c
+# End Source File
+# End Target
+# End Project
diff --git a/PC/VC6/readme.txt b/PC/VC6/readme.txt
new file mode 100644
index 0000000..d48517d
--- /dev/null
+++ b/PC/VC6/readme.txt
@@ -0,0 +1,247 @@
+Building Python using VC++ 6.0 or 5.0
+-------------------------------------
+This directory is used to build Python for Win32 platforms, e.g. Windows
+2000 and XP. It requires Microsoft Visual C++ 6.x or 5.x and Platform
+SDK February 2003 Edition (Core SDK).
+(For other Windows platforms and compilers, see ../readme.txt.)
+
+All you need to do is open the workspace "pcbuild.dsw" in MSVC++, select
+the Debug or Release setting (using Build -> Set Active Configuration...),
+and build the projects.
+
+The proper order to build subprojects:
+
+1) pythoncore (this builds the main Python DLL and library files,
+ python27.{dll, lib} in Release mode)
+
+2) python (this builds the main Python executable,
+ python.exe in Release mode)
+
+3) the other subprojects, as desired or needed (note: you probably don't
+ want to build most of the other subprojects, unless you're building an
+ entire Python distribution from scratch, or specifically making changes
+ to the subsystems they implement; see SUBPROJECTS below)
+
+When using the Debug setting, the output files have a _d added to
+their name: python27_d.dll, python_d.exe, pyexpat_d.pyd, and so on.
+
+SUBPROJECTS
+-----------
+These subprojects should build out of the box. Subprojects other than the
+main ones (pythoncore, python, pythonw) generally build a DLL (renamed to
+.pyd) from a specific module so that users don't have to load the code
+supporting that module unless they import the module.
+
+pythoncore
+ .dll and .lib
+python
+ .exe
+pythonw
+ pythonw.exe, a variant of python.exe that doesn't pop up a DOS box
+_msi
+ _msi.c. You need to install Windows Installer SDK to build this module.
+_socket
+ socketmodule.c
+_testcapi
+ tests of the Python C API, run via Lib/test/test_capi.py, and
+ implemented by module Modules/_testcapimodule.c
+pyexpat
+ Python wrapper for accelerated XML parsing, which incorporates stable
+ code from the Expat project: http://sourceforge.net/projects/expat/
+select
+ selectmodule.c
+unicodedata
+ large tables of Unicode data
+winsound
+ play sounds (typically .wav files) under Windows
+
+The following subprojects will generally NOT build out of the box. They
+wrap code Python doesn't control, and you'll need to download the base
+packages first and unpack them into siblings of PCbuilds's parent
+directory; for example, if your PCbuild is .......\dist\src\PCbuild\,
+unpack into new subdirectories of dist\.
+
+_tkinter
+ Python wrapper for the Tk windowing system. Requires building
+ Tcl/Tk first. Following are instructions for Tcl/Tk 8.5.2.
+
+ Get source
+ ----------
+ In the dist directory, run
+ svn export http://svn.python.org/projects/external/tcl-8.5.2.1 tcl8.5.2
+ svn export http://svn.python.org/projects/external/tk-8.5.2.0 tk8.5.2
+ svn export http://svn.python.org/projects/external/tix-8.4.3.1 tix8.4.3
+
+ Debug Build
+ -----------
+ To build debug version, add DEBUG=1 to all nmake call bellow.
+
+ Build Tcl first (done here w/ MSVC 6 on Win2K)
+ ---------------
+ If your environment doesn't have struct _stat64, you need to apply
+ tcl852.patch in this directory to dist\tcl8.5.2\generic\tcl.h.
+
+ cd dist\tcl8.5.2\win
+ run vcvars32.bat
+ nmake -f makefile.vc
+ nmake -f makefile.vc INSTALLDIR=..\..\tcltk install
+
+ XXX Should we compile with OPTS=threads?
+
+ Optional: run tests, via
+ nmake -f makefile.vc test
+
+ all.tcl: Total 24242 Passed 23358 Skipped 877 Failed 7
+ Sourced 137 Test Files.
+ Files with failing tests: exec.test http.test io.test main.test string.test stri
+ ngObj.test
+
+ Build Tk
+ --------
+ cd dist\tk8.5.2\win
+ nmake -f makefile.vc TCLDIR=..\..\tcl8.5.2
+ nmake -f makefile.vc TCLDIR=..\..\tcl8.5.2 INSTALLDIR=..\..\tcltk install
+
+ XXX Should we compile with OPTS=threads?
+
+ XXX I have no idea whether "nmake -f makefile.vc test" passed or
+ XXX failed. It popped up tons of little windows, and did lots of
+ XXX stuff, and nothing blew up.
+
+ Build Tix
+ ---------
+ cd dist\tix8.4.3\win
+ nmake -f python.mak TCL_MAJOR=8 TCL_MINOR=5 TCL_PATCH=2 MACHINE=IX86 DEBUG=0
+ nmake -f python.mak TCL_MAJOR=8 TCL_MINOR=5 TCL_PATCH=2 MACHINE=IX86 DEBUG=0 INSTALL_DIR=..\..\tcltk install
+
+bz2
+ Python wrapper for the libbz2 compression library. Homepage
+ http://www.bzip.org/
+ Download the source from the python.org copy into the dist
+ directory:
+
+ svn export http://svn.python.org/projects/external/bzip2-1.0.6
+
+ And requires building bz2 first.
+
+ cd dist\bzip2-1.0.6
+ nmake -f makefile.msc
+
+ All of this managed to build bzip2-1.0.6\libbz2.lib, which the Python
+ project links in.
+
+
+_bsddb
+ To use the version of bsddb that Python is built with by default, invoke
+ (in the dist directory)
+
+ svn export http://svn.python.org/projects/external/db-4.7.25.0 db-4.7.25
+
+ Then open db-4.7.25\build_windows\Berkeley_DB.dsw and build the
+ "db_static" project for "Release" mode.
+
+ Alternatively, if you want to start with the original sources,
+ go to Oracle's download page:
+ http://www.oracle.com/technology/software/products/berkeley-db/db/
+
+ and download version 4.7.25.
+
+ With or without strong cryptography? You can choose either with or
+ without strong cryptography, as per the instructions below. By
+ default, Python is built and distributed WITHOUT strong crypto.
+
+ Unpack the sources; if you downloaded the non-crypto version, rename
+ the directory from db-4.7.25.NC to db-4.7.25.
+
+ Now apply any patches that apply to your version.
+
+ To run extensive tests, pass "-u bsddb" to regrtest.py. test_bsddb3.py
+ is then enabled. Running in verbose mode may be helpful.
+
+ XXX The test_bsddb3 tests don't always pass, on Windows (according to
+ XXX me) or on Linux (according to Barry). (I had much better luck
+ XXX on Win2K than on Win98SE.) The common failure mode across platforms
+ XXX is
+ XXX DBAgainError: (11, 'Resource temporarily unavailable -- unable
+ XXX to join the environment')
+ XXX
+ XXX and it appears timing-dependent. On Win2K I also saw this once:
+ XXX
+ XXX test02_SimpleLocks (bsddb.test.test_thread.HashSimpleThreaded) ...
+ XXX Exception in thread reader 1:
+ XXX Traceback (most recent call last):
+ XXX File "C:\Code\python\lib\threading.py", line 411, in __bootstrap
+ XXX self.run()
+ XXX File "C:\Code\python\lib\threading.py", line 399, in run
+ XXX apply(self.__target, self.__args, self.__kwargs)
+ XXX File "C:\Code\python\lib\bsddb\test\test_thread.py", line 268, in
+ XXX readerThread
+ XXX rec = c.next()
+ XXX DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed
+ XXX to resolve a deadlock')
+ XXX
+ XXX I'm told that DBLockDeadlockError is expected at times. It
+ XXX doesn't cause a test to fail when it happens (exceptions in
+ XXX threads are invisible to unittest).
+
+
+_sqlite3
+ Python wrapper for SQLite library.
+
+ Get the source code through
+
+ svn export http://svn.python.org/projects/external/sqlite-source-3.3.4
+
+ To use the extension module in a Python build tree, copy sqlite3.dll into
+ the PC/VC6 folder.
+
+
+_ssl
+ Python wrapper for the secure sockets library.
+
+ Get the latest source code for OpenSSL from
+ http://www.openssl.org
+
+ You (probably) don't want the "engine" code. For example, don't get
+ openssl-engine-0.9.6g.tar.gz
+
+ Unpack into the "dist" directory, retaining the folder name from
+ the archive - for example, the latest stable OpenSSL will install as
+ dist/openssl-1.0.0a
+
+ You can (theoretically) use any version of OpenSSL you like - the
+ build process will automatically select the latest version.
+
+ You can install the NASM assembler from
+ http://www.nasm.us/
+ for x86 builds. Put nasmw.exe anywhere in your PATH.
+ Note: recent releases of nasm only have nasm.exe. Just rename it to
+ nasmw.exe.
+
+ You can also install ActivePerl from
+ http://www.activestate.com/activeperl/
+ if you like to use the official sources instead of the files from
+ python's subversion repository. The svn version contains pre-build
+ makefiles and assembly files.
+
+ The MSVC project simply invokes PC/VC6/build_ssl.py to perform
+ the build. This Python script locates and builds your OpenSSL
+ installation, then invokes a simple makefile to build the final .pyd.
+
+ build_ssl.py attempts to catch the most common errors (such as not
+ being able to find OpenSSL sources, or not being able to find a Perl
+ that works with OpenSSL) and give a reasonable error message.
+ If you have a problem that doesn't seem to be handled correctly
+ (eg, you know you have ActivePerl but we can't find it), please take
+ a peek at build_ssl.py and suggest patches. Note that build_ssl.py
+ should be able to be run directly from the command-line.
+
+ build_ssl.py/MSVC isn't clever enough to clean OpenSSL - you must do
+ this by hand.
+
+
+YOUR OWN EXTENSION DLLs
+-----------------------
+If you want to create your own extension module DLL, there's an example
+with easy-to-follow instructions in ../PC/example/; read the file
+readme.txt there first.
diff --git a/PC/VC6/rmpyc.py b/PC/VC6/rmpyc.py
new file mode 100644
index 0000000..b8d6823
--- /dev/null
+++ b/PC/VC6/rmpyc.py
@@ -0,0 +1,25 @@
+# Remove all the .pyc and .pyo files under ../Lib.
+
+
+def deltree(root):
+ import os
+ from os.path import join
+
+ npyc = npyo = 0
+ for root, dirs, files in os.walk(root):
+ for name in files:
+ delete = False
+ if name.endswith('.pyc'):
+ delete = True
+ npyc += 1
+ elif name.endswith('.pyo'):
+ delete = True
+ npyo += 1
+
+ if delete:
+ os.remove(join(root, name))
+
+ return npyc, npyo
+
+npyc, npyo = deltree("../../Lib")
+print npyc, ".pyc deleted,", npyo, ".pyo deleted"
diff --git a/PC/VC6/rt.bat b/PC/VC6/rt.bat
new file mode 100755
index 0000000..dfdea67
--- /dev/null
+++ b/PC/VC6/rt.bat
@@ -0,0 +1,41 @@
+@rem Run Tests. Run the regression test suite.
+@rem Usage: rt [-d] [-O] [-q] regrtest_args
+@rem -d Run Debug build (python_d.exe). Else release build.
+@rem -O Run python.exe or python_d.exe (see -d) with -O.
+@rem -q "quick" -- normally the tests are run twice, the first time
+@rem after deleting all the .py[co] files reachable from Lib/.
+@rem -q runs the tests just once, and without deleting .py[co] files.
+@rem All leading instances of these switches are shifted off, and
+@rem whatever remains is passed to regrtest.py. For example,
+@rem rt -O -d -x test_thread
+@rem runs
+@rem python_d -O ../../lib/test/regrtest.py -x test_thread
+@rem twice, and
+@rem rt -q -g test_binascii
+@rem runs
+@rem python_d ../../lib/test/regrtest.py -g test_binascii
+@rem to generate the expected-output file for binascii quickly.
+@set _exe=python
+@set _qmode=no
+@set _dashO=
+@goto CheckOpts
+:Again
+@shift
+:CheckOpts
+@if "%1"=="-O" set _dashO=-O
+@if "%1"=="-O" goto Again
+@if "%1"=="-q" set _qmode=yes
+@if "%1"=="-q" goto Again
+@if "%1"=="-d" set _exe=python_d
+@if "%1"=="-d" goto Again
+@if "%_qmode%"=="yes" goto Qmode
+@echo Deleting .pyc/.pyo files ...
+@%_exe% rmpyc.py
+%_exe% %_dashO% -E -tt ../../lib/test/regrtest.py %1 %2 %3 %4 %5 %6 %7 %8 %9
+@echo About to run again without deleting .pyc/.pyo first:
+@pause
+:Qmode
+%_exe% %_dashO% -E -tt ../../lib/test/regrtest.py %1 %2 %3 %4 %5 %6 %7 %8 %9
+@set _exe=
+@set _qmode=
+@set _dashO=
diff --git a/PC/VC6/select.dsp b/PC/VC6/select.dsp
new file mode 100644
index 0000000..890ea6f
--- /dev/null
+++ b/PC/VC6/select.dsp
@@ -0,0 +1,99 @@
+# Microsoft Developer Studio Project File - Name="select" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=select - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "select.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "select.mak" CFG="select - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "select - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "select - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName "select"
+# PROP Scc_LocalPath ".."
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "select - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-release\select"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /base:"0x1D110000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc" /out:"./select.pyd"
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "select - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-debug\select"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /base:"0x1D110000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc" /nodefaultlib:"msvcrt" /out:"./select_d.pyd" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "select - Win32 Release"
+# Name "select - Win32 Debug"
+# Begin Source File
+
+SOURCE=..\..\Modules\selectmodule.c
+# End Source File
+# End Target
+# End Project
diff --git a/PC/VC6/tcl852.patch b/PC/VC6/tcl852.patch
new file mode 100644
index 0000000..ed6780a
--- /dev/null
+++ b/PC/VC6/tcl852.patch
@@ -0,0 +1,11 @@
+--- tcl8.5.2\generic\tcl.h Fri Jun 13 03:35:39 2008
++++ tcl8.5.2\generic\tcl.h Sun Jan 4 16:52:30 2009
+@@ -367,7 +367,7 @@
+ typedef struct stati64 Tcl_StatBuf;
+ # define TCL_LL_MODIFIER "L"
+ # else /* __BORLANDC__ */
+-# if _MSC_VER < 1400 && !defined(_M_IX86)
++# if _MSC_VER < 1400 /*&& !defined(_M_IX86)*/
+ typedef struct _stati64 Tcl_StatBuf;
+ # else
+ typedef struct _stat64 Tcl_StatBuf;
diff --git a/PC/VC6/unicodedata.dsp b/PC/VC6/unicodedata.dsp
new file mode 100644
index 0000000..a04db67
--- /dev/null
+++ b/PC/VC6/unicodedata.dsp
@@ -0,0 +1,99 @@
+# Microsoft Developer Studio Project File - Name="unicodedata" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=unicodedata - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "unicodedata.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "unicodedata.mak" CFG="unicodedata - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "unicodedata - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "unicodedata - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName "unicodedata"
+# PROP Scc_LocalPath ".."
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "unicodedata - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-release\unicodedata"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0xc09 /d "NDEBUG"
+# ADD RSC /l 0xc09 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1D120000" /dll /machine:I386 /out:"./unicodedata.pyd"
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "unicodedata - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-debug\unicodedata"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0xc09 /d "_DEBUG"
+# ADD RSC /l 0xc09 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1D120000" /dll /debug /machine:I386 /out:"./unicodedata_d.pyd" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "unicodedata - Win32 Release"
+# Name "unicodedata - Win32 Debug"
+# Begin Source File
+
+SOURCE=..\..\Modules\unicodedata.c
+# End Source File
+# End Target
+# End Project
diff --git a/PC/VC6/w9xpopen.dsp b/PC/VC6/w9xpopen.dsp
new file mode 100644
index 0000000..6a6403c
--- /dev/null
+++ b/PC/VC6/w9xpopen.dsp
@@ -0,0 +1,97 @@
+# Microsoft Developer Studio Project File - Name="w9xpopen" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Application" 0x0101
+
+CFG=w9xpopen - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "w9xpopen.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "w9xpopen.mak" CFG="w9xpopen - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "w9xpopen - Win32 Release" (based on "Win32 (x86) Application")
+!MESSAGE "w9xpopen - Win32 Debug" (based on "Win32 (x86) Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "w9xpopen - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-release\w9xpopen"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0xc09 /d "NDEBUG"
+# ADD RSC /l 0xc09 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
+# ADD LINK32 user32.lib /nologo /machine:I386
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "w9xpopen - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-debug\w9xpopen"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0xc09 /d "_DEBUG"
+# ADD RSC /l 0xc09 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 user32.lib /nologo /debug /machine:I386 /out:"./w9xpopen_d.exe" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "w9xpopen - Win32 Release"
+# Name "w9xpopen - Win32 Debug"
+# Begin Source File
+
+SOURCE=..\w9xpopen.c
+# End Source File
+# End Target
+# End Project
diff --git a/PC/VC6/winsound.dsp b/PC/VC6/winsound.dsp
new file mode 100644
index 0000000..6e09b9b
--- /dev/null
+++ b/PC/VC6/winsound.dsp
@@ -0,0 +1,99 @@
+# Microsoft Developer Studio Project File - Name="winsound" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=winsound - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "winsound.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "winsound.mak" CFG="winsound - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "winsound - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "winsound - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName "winsound"
+# PROP Scc_LocalPath "..\pc"
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "winsound - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-release\winsound"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "WINSOUND_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "WINSOUND_EXPORTS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0xc09 /d "NDEBUG"
+# ADD RSC /l 0xc09 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib winmm.lib user32.lib /nologo /base:"0x1D160000" /dll /machine:I386 /out:"./winsound.pyd"
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "winsound - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "x86-temp-debug\winsound"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+F90=df.exe
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "WINSOUND_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "WINSOUND_EXPORTS" /YX /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0xc09 /d "_DEBUG"
+# ADD RSC /l 0xc09 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 user32.lib kernel32.lib winmm.lib /nologo /base:"0x1D160000" /dll /debug /machine:I386 /out:"./winsound_d.pyd" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "winsound - Win32 Release"
+# Name "winsound - Win32 Debug"
+# Begin Source File
+
+SOURCE=..\winsound.c
+# End Source File
+# End Target
+# End Project
diff --git a/PC/VS7.1/Uninstal.wse b/PC/VS7.1/Uninstal.wse
new file mode 100644
index 0000000..216dd30
--- /dev/null
+++ b/PC/VS7.1/Uninstal.wse
@@ -0,0 +1,514 @@
+Document Type: WSE
+item: Global
+ Version=8.14
+ Flags=00000100
+ Split=1420
+ Languages=65 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ Copy Default=1
+ Japanese Font Name=MS Gothic
+ Japanese Font Size=10
+ Start Gradient=0 0 255
+ End Gradient=0 0 0
+ Windows Flags=00000000000000000000101000001000
+ Message Font=MS Sans Serif
+ Font Size=8
+ Disk Label=GLBS
+ Disk Filename=INSTALL
+ Patch Flags=0000000000000001
+ Patch Threshold=200
+ Patch Memory=4096
+ Per-User Version ID=1
+ Crystal Format=10111100101100000010001001001001
+ Step View=&Properties
+end
+item: Remark
+ Text=Note from Tim: This is a verbatim copy of Wise's Uninstal.wse, altered at the end to write
+end
+item: Remark
+ Text=uninstall info under HKCU instead of HKLM if our DOADMIN var is false.
+end
+item: Remark
+end
+item: Remark
+ Text= Install Support for uninstalling the application.
+end
+item: Remark
+end
+item: Set Variable
+ Variable=UNINSTALL_PATH
+ Value=%_LOGFILE_PATH_%
+ Flags=00000010
+end
+item: Set Variable
+ Variable=UNINSTALL_PATH
+ Value=%UNINSTALL_PATH%\UNWISE.EXE
+end
+item: Compiler Variable If
+ Variable=_EXE_OS_TYPE_
+ Value=WIN32
+end
+item: Install File
+ Source=%_WISE_%\UNWISE32.EXE
+ Destination=%UNINSTALL_PATH%
+ Flags=0000000000000010
+end
+item: Compiler Variable Else
+end
+item: Install File
+ Source=%_WISE_%\UNWISE.EXE
+ Destination=%UNINSTALL_PATH%
+ Flags=0000000000000010
+end
+item: Compiler Variable End
+end
+item: Remark
+end
+item: Remark
+ Text= Install Support for multiple languages
+end
+item: Remark
+end
+item: Set Variable
+ Variable=UNINSTALL_LANG
+ Value=%UNINSTALL_PATH%
+ Flags=00000010
+end
+item: Set Variable
+ Variable=UNINSTALL_LANG
+ Value=%UNINSTALL_LANG%\UNWISE.INI
+end
+item: Compiler Variable If
+ Variable=_LANG_LIST_
+ Value=C
+ Flags=00000010
+end
+item: Compiler Variable If
+ Value=%_WISE_%\LANGUAGE\UNWISE.FRA
+ Flags=00000011
+end
+item: If/While Statement
+ Variable=LANG
+ Value=%_LANG_C_NAME_%
+end
+item: Install File
+ Source=%_WISE_%\LANGUAGE\UNWISE.FRA
+ Destination=%UNINSTALL_LANG%
+ Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+ Variable=_LANG_LIST_
+ Value=D
+ Flags=00000010
+end
+item: Compiler Variable If
+ Value=%_WISE_%\LANGUAGE\UNWISE.FRA
+ Flags=00000011
+end
+item: If/While Statement
+ Variable=LANG
+ Value=%_LANG_D_NAME_%
+end
+item: Install File
+ Source=%_WISE_%\LANGUAGE\UNWISE.FRA
+ Destination=%UNINSTALL_LANG%
+ Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+ Variable=_LANG_LIST_
+ Value=E
+ Flags=00000010
+end
+item: Compiler Variable If
+ Value=%_WISE_%\LANGUAGE\UNWISE.DEU
+ Flags=00000011
+end
+item: If/While Statement
+ Variable=LANG
+ Value=%_LANG_E_NAME_%
+end
+item: Install File
+ Source=%_WISE_%\LANGUAGE\UNWISE.DEU
+ Destination=%UNINSTALL_LANG%
+ Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+ Variable=_LANG_LIST_
+ Value=F
+ Flags=00000010
+end
+item: Compiler Variable If
+ Value=%_WISE_%\LANGUAGE\UNWISE.PTG
+ Flags=00000011
+end
+item: If/While Statement
+ Variable=LANG
+ Value=%_LANG_F_NAME_%
+end
+item: Install File
+ Source=%_WISE_%\LANGUAGE\UNWISE.PTG
+ Destination=%UNINSTALL_LANG%
+ Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+ Variable=_LANG_LIST_
+ Value=G
+ Flags=00000010
+end
+item: Compiler Variable If
+ Value=%_WISE_%\LANGUAGE\UNWISE.ESP
+ Flags=00000011
+end
+item: If/While Statement
+ Variable=LANG
+ Value=%_LANG_G_NAME_%
+end
+item: Install File
+ Source=%_WISE_%\LANGUAGE\UNWISE.ESP
+ Destination=%UNINSTALL_LANG%
+ Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+ Variable=_LANG_LIST_
+ Value=H
+ Flags=00000010
+end
+item: Compiler Variable If
+ Value=%_WISE_%\LANGUAGE\UNWISE.ESP
+ Flags=00000011
+end
+item: If/While Statement
+ Variable=LANG
+ Value=%_LANG_H_NAME_%
+end
+item: Install File
+ Source=%_WISE_%\LANGUAGE\UNWISE.ESP
+ Destination=%UNINSTALL_LANG%
+ Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+ Variable=_LANG_LIST_
+ Value=I
+ Flags=00000010
+end
+item: Compiler Variable If
+ Value=%_WISE_%\LANGUAGE\UNWISE.ITA
+ Flags=00000011
+end
+item: If/While Statement
+ Variable=LANG
+ Value=%_LANG_I_NAME_%
+end
+item: Install File
+ Source=%_WISE_%\LANGUAGE\UNWISE.ITA
+ Destination=%UNINSTALL_LANG%
+ Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+ Variable=_LANG_LIST_
+ Value=J
+ Flags=00000010
+end
+item: Compiler Variable If
+ Value=%_WISE_%\LANGUAGE\UNWISE.DAN
+ Flags=00000011
+end
+item: If/While Statement
+ Variable=LANG
+ Value=%_LANG_J_NAME_%
+end
+item: Install File
+ Source=%_WISE_%\LANGUAGE\UNWISE.DAN
+ Destination=%UNINSTALL_LANG%
+ Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+ Variable=_LANG_LIST_
+ Value=K
+ Flags=00000010
+end
+item: Compiler Variable If
+ Value=%_WISE_%\LANGUAGE\UNWISE.FIN
+ Flags=00000011
+end
+item: If/While Statement
+ Variable=LANG
+ Value=%_LANG_K_NAME_%
+end
+item: Install File
+ Source=%_WISE_%\LANGUAGE\UNWISE.FIN
+ Destination=%UNINSTALL_LANG%
+ Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+ Variable=_LANG_LIST_
+ Value=L
+ Flags=00000010
+end
+item: Compiler Variable If
+ Value=%_WISE_%\LANGUAGE\UNWISE.ISL
+ Flags=00000011
+end
+item: If/While Statement
+ Variable=LANG
+ Value=%_LANG_L_NAME_%
+end
+item: Install File
+ Source=%_WISE_%\LANGUAGE\UNWISE.ISL
+ Destination=%UNINSTALL_LANG%
+ Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+ Variable=_LANG_LIST_
+ Value=M
+ Flags=00000010
+end
+item: Compiler Variable If
+ Value=%_WISE_%\LANGUAGE\UNWISE.NLD
+ Flags=00000011
+end
+item: If/While Statement
+ Variable=LANG
+ Value=%_LANG_M_NAME_%
+end
+item: Install File
+ Source=%_WISE_%\LANGUAGE\UNWISE.NLD
+ Destination=%UNINSTALL_LANG%
+ Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+ Variable=_LANG_LIST_
+ Value=N
+ Flags=00000010
+end
+item: Compiler Variable If
+ Value=%_WISE_%\LANGUAGE\UNWISE.NOR
+ Flags=00000011
+end
+item: If/While Statement
+ Variable=LANG
+ Value=%_LANG_N_NAME_%
+end
+item: Install File
+ Source=%_WISE_%\LANGUAGE\UNWISE.NOR
+ Destination=%UNINSTALL_LANG%
+ Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+ Variable=_LANG_LIST_
+ Value=O
+ Flags=00000010
+end
+item: Compiler Variable If
+ Value=%_WISE_%\LANGUAGE\UNWISE.SVE
+ Flags=00000011
+end
+item: If/While Statement
+ Variable=LANG
+ Value=%_LANG_O_NAME_%
+end
+item: Install File
+ Source=%_WISE_%\LANGUAGE\UNWISE.SVE
+ Destination=%UNINSTALL_LANG%
+ Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+ Variable=_LANG_LIST_
+ Value=P
+ Flags=00000010
+end
+item: Compiler Variable If
+ Value=%_WISE_%\LANGUAGE\UNWISE.JPN
+ Flags=00000011
+end
+item: If/While Statement
+ Variable=LANG
+ Value=%_LANG_P_NAME_%
+end
+item: Install File
+ Source=%_WISE_%\LANGUAGE\UNWISE.JPN
+ Destination=%UNINSTALL_LANG%
+ Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Remark
+end
+item: Remark
+ Text= Install the add/remove or uninstall icon
+end
+item: Remark
+end
+item: Set Variable
+ Variable=UNINSTALL_PATH
+ Value=%UNINSTALL_PATH%
+ Flags=00010100
+end
+item: Set Variable
+ Variable=INST_LOG_PATH
+ Value=%_LOGFILE_PATH_%
+ Flags=00010100
+end
+item: Check Configuration
+ Flags=10111011
+end
+item: If/While Statement
+ Variable=DOADMIN
+ Value=1
+end
+item: Remark
+ Text=Write uninstall info under HKLM. This if/else/end block added by Tim.
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE%
+ New Value=%APPTITLE%
+ Value Name=DisplayName
+ Root=2
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE%
+ New Value=%UNINSTALL_PATH% %INST_LOG_PATH%
+ New Value=
+ Value Name=UninstallString
+ Root=2
+end
+item: Else Statement
+end
+item: Remark
+ Text=The same, but write under HKCU instead.
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE%
+ New Value=%APPTITLE%
+ Value Name=DisplayName
+ Root=1
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE%
+ New Value=%UNINSTALL_PATH% %INST_LOG_PATH%
+ New Value=
+ Value Name=UninstallString
+ Root=1
+end
+item: End Block
+end
+item: Else Statement
+end
+item: Add ProgMan Icon
+ Group=%GROUP%
+ Icon Name=Uninstall %APPTITLE%
+ Command Line=%UNINSTALL_PATH% %INST_LOG_PATH%
+end
+item: End Block
+end
+item: Check Configuration
+ Flags=11110010
+end
+item: If/While Statement
+ Variable=DOBRAND
+ Value=1
+end
+item: Edit Registry
+ Total Keys=2
+ item: Key
+ Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE%
+ New Value=%COMPANY%
+ Value Name=RegCompany
+ Root=2
+ end
+ item: Key
+ Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE%
+ New Value=%NAME%
+ Value Name=RegOwner
+ Root=2
+ end
+end
+item: End Block
+end
+item: End Block
+end
diff --git a/PC/VS7.1/_bsddb.vcproj b/PC/VS7.1/_bsddb.vcproj
new file mode 100644
index 0000000..b535e4c
--- /dev/null
+++ b/PC/VS7.1/_bsddb.vcproj
@@ -0,0 +1,258 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="_bsddb"
+ SccProjectName="_bsddb"
+ SccLocalPath="..">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-debug\_bsddb"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\Include;..\..\PC;&quot;..\..\..\db-4.4.20\build_win32&quot;"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;_DEBUG;WIN32;_WINDOWS"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="..\..\..\db-4.4.20\build_win32\Debug\libdb44sd.lib"
+ OutputFile="./_bsddb_d.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ IgnoreDefaultLibraryNames=""
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./_bsddb_d.pdb"
+ SubSystem="2"
+ BaseAddress="0x1e180000"
+ ImportLibrary=".\./_bsddb_d.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-release\_bsddb"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include;..\..\PC;&quot;..\..\..\db-4.4.20\build_win32&quot;"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="..\..\..\db-4.4.20\build_win32\Release\libdb44s.lib"
+ OutputFile="./_bsddb.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ IgnoreDefaultLibraryNames=""
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./_bsddb.pdb"
+ SubSystem="2"
+ BaseAddress="0x1e180000"
+ ImportLibrary=".\./_bsddb.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseItanium|Win32"
+ OutputDirectory="./."
+ IntermediateDirectory=".\ia64-temp-release\_bsddb"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_ITANIUM /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include;..\..\PC;&quot;..\..\..\db-4.4.20\build_win32&quot;"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:IA64 /USELINK:MS_SDK"
+ AdditionalDependencies="..\..\..\db-4.4.20\build_win32\Release_IA64\libdb44s.lib"
+ OutputFile="./_bsddb.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ IgnoreDefaultLibraryNames=""
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./_bsddb.pdb"
+ SubSystem="2"
+ BaseAddress="0x1e180000"
+ ImportLibrary=".\./_bsddb.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseAMD64|Win32"
+ OutputDirectory="."
+ IntermediateDirectory="amd64-temp-release\_bsddb"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_OPTERON /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include;..\..\PC;&quot;..\..\..\db-4.4.20\build_win32&quot;"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:AMD64 /USELINK:MS_SDK"
+ AdditionalDependencies="..\..\..\db-4.4.20\build_win32\Release_AMD64\libdb44s.lib bufferoverflowU.lib"
+ OutputFile="./_bsddb.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ IgnoreDefaultLibraryNames=""
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./_bsddb.pdb"
+ SubSystem="2"
+ BaseAddress="0x1e180000"
+ ImportLibrary=".\./_bsddb.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\Modules\_bsddb.c">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS7.1/_ctypes.vcproj b/PC/VS7.1/_ctypes.vcproj
new file mode 100644
index 0000000..7dad3e1
--- /dev/null
+++ b/PC/VS7.1/_ctypes.vcproj
@@ -0,0 +1,311 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="_ctypes"
+ ProjectGUID="{F22F40F4-D318-40DC-96B3-88DC81CE0894}"
+ RootNamespace="_ctypes"
+ Keyword="Win32Proj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-debug\_ctypes"
+ ConfigurationType="2"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC,..\..\Modules\_ctypes\libffi_msvc"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;_DEBUG;_WINDOWS"
+ MinimalRebuild="FALSE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="FALSE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/EXPORT:DllGetClassObject,PRIVATE /EXPORT:DllCanUnloadNow,PRIVATE"
+ OutputFile="./_ctypes_d.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./_ctypes_d.pdb"
+ SubSystem="0"
+ BaseAddress="0x1D1A0000"
+ ImportLibrary=".\./_ctypes_d.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-release\_ctypes"
+ ConfigurationType="2"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC,..\..\Modules\_ctypes\libffi_msvc"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;NDEBUG;_WINDOWS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="FALSE"
+ DebugInformationFormat="0"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/EXPORT:DllGetClassObject,PRIVATE /EXPORT:DllCanUnloadNow,PRIVATE"
+ OutputFile="./_ctypes.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="FALSE"
+ ProgramDatabaseFile=".\./_ctypes.pdb"
+ SubSystem="0"
+ OptimizeReferences="0"
+ EnableCOMDATFolding="0"
+ BaseAddress="0x1D1A0000"
+ ImportLibrary=".\./_ctypes.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseAMD64|Win32"
+ OutputDirectory="."
+ IntermediateDirectory="amd64-temp-release\_ctypes"
+ ConfigurationType="2"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_OPTERON /GS-"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC,..\..\Modules\_ctypes\libffi_msvc"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;NDEBUG;_WINDOWS"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:AMD64 /USELINK:MS_SDK /EXPORT:DllGetClassObject,PRIVATE /EXPORT:DllCanUnloadNow,PRIVATE"
+ OutputFile="./_ctypes.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="FALSE"
+ ProgramDatabaseFile=".\./_ctypes.pdb"
+ SubSystem="0"
+ OptimizeReferences="0"
+ EnableCOMDATFolding="0"
+ BaseAddress="0x1D1A0000"
+ ImportLibrary=".\./_ctypes.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseItanium|Win32"
+ OutputDirectory="."
+ IntermediateDirectory="ia64-temp-release\_ctypes"
+ ConfigurationType="2"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_ITANIUM"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC,..\..\Modules\_ctypes\libffi_msvc"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;NDEBUG;_WINDOWS"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:IA64 /USELINK:MS_SDK /EXPORT:DllGetClassObject,PRIVATE /EXPORT:DllCanUnloadNow,PRIVATE"
+ OutputFile="./_ctypes.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="FALSE"
+ ProgramDatabaseFile=".\./_ctypes.pdb"
+ SubSystem="0"
+ OptimizeReferences="0"
+ EnableCOMDATFolding="0"
+ BaseAddress="0x1D1A0000"
+ ImportLibrary=".\./_ctypes.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\Modules\_ctypes\_ctypes.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\callbacks.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\callproc.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\cfield.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\libffi_msvc\ffi.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\malloc_closure.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\libffi_msvc\prep_cif.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\stgdict.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\libffi_msvc\win32.c">
+ <FileConfiguration
+ Name="ReleaseAMD64|Win32"
+ ExcludedFromBuild="TRUE">
+ <Tool
+ Name="VCCLCompilerTool"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\libffi_msvc\win64.asm">
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="TRUE">
+ <Tool
+ Name="VCCustomBuildTool"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ ExcludedFromBuild="TRUE">
+ <Tool
+ Name="VCCustomBuildTool"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="ReleaseAMD64|Win32">
+ <Tool
+ Name="VCCustomBuildTool"
+ CommandLine="amd64_ml64 /nologo /c /Fo &quot;$(IntDir)\win64.obj&quot; &quot;$(InputPath)&quot;
+"
+ Outputs="&quot;$(IntDir)\win64.obj&quot;"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="ReleaseItanium|Win32"
+ ExcludedFromBuild="TRUE">
+ <Tool
+ Name="VCCustomBuildTool"/>
+ </FileConfiguration>
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS7.1/_ctypes_test.vcproj b/PC/VS7.1/_ctypes_test.vcproj
new file mode 100644
index 0000000..b85b5d2
--- /dev/null
+++ b/PC/VS7.1/_ctypes_test.vcproj
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="_ctypes_test"
+ ProjectGUID="{8CF334D9-4F82-42EB-97AF-83592C5AFD2F}"
+ Keyword="Win32Proj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-debug\_ctypes_test"
+ ConfigurationType="2"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;_DEBUG;_WINDOWS"
+ MinimalRebuild="FALSE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="./_ctypes_test_d.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./_ctypes_test_d.pdb"
+ SubSystem="0"
+ ImportLibrary=".\./_ctypes_test_d.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-release\_ctypes_test"
+ ConfigurationType="2"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;NDEBUG;_WINDOWS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="0"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="./_ctypes_test.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="FALSE"
+ ProgramDatabaseFile=".\./_ctypes_test.pdb"
+ SubSystem="0"
+ OptimizeReferences="0"
+ EnableCOMDATFolding="0"
+ ImportLibrary=".\./_ctypes_test.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseItanium|Win32"
+ OutputDirectory="."
+ IntermediateDirectory="ia64-temp-release\_ctypes_test"
+ ConfigurationType="2"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_ITANIUM"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;_DEBUG;_WINDOWS"
+ MinimalRebuild="FALSE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="3"
+ BufferSecurityCheck="FALSE"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:IA64 /USELINK:MS_SDK"
+ OutputFile="./_ctypes_test_d.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./_ctypes_test_d.pdb"
+ SubSystem="0"
+ ImportLibrary=".\./_ctypes_test_d.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseAMD64|Win32"
+ OutputDirectory="."
+ IntermediateDirectory="amd64-temp-release\_ctypes_test"
+ ConfigurationType="2"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_OPTERON"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;NDEBUG;_WINDOWS"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:AMD64 /USELINK:MS_SDK"
+ OutputFile="./_ctypes_test.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="FALSE"
+ ProgramDatabaseFile=".\./_ctypes_test.pdb"
+ SubSystem="0"
+ OptimizeReferences="0"
+ EnableCOMDATFolding="0"
+ ImportLibrary=".\./_ctypes_test.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\Modules\_ctypes\_ctypes_test.c">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS7.1/_elementtree.vcproj b/PC/VS7.1/_elementtree.vcproj
new file mode 100644
index 0000000..fe22102
--- /dev/null
+++ b/PC/VS7.1/_elementtree.vcproj
@@ -0,0 +1,260 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="_elementtree"
+ ProjectGUID="{1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}"
+ SccProjectName="_elementtree"
+ SccLocalPath="..">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-debug\_elementtree"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC,..\..\Modules\expat"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;_DEBUG;HAVE_EXPAT_H;WIN32;_WINDOWS;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;USE_PYEXPAT_CAPI;XML_STATIC;HAVE_MEMMOVE"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="./_elementtree_d.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./_elementtree_d.pdb"
+ SubSystem="2"
+ BaseAddress="0x1D100000"
+ ImportLibrary=".\./_elementtree_d.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-release\_elementtree"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC,..\..\Modules\expat"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;USE_PYEXPAT_CAPI;XML_STATIC;HAVE_MEMMOVE"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="./_elementtree.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./_elementtree.pdb"
+ SubSystem="2"
+ BaseAddress="0x1D100000"
+ ImportLibrary=".\./_elementtree.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseItanium|Win32"
+ OutputDirectory="./."
+ IntermediateDirectory=".\ia64-temp-release\_elementtree"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_ITANIUM /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC,..\..\Modules\expat"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;USE_PYEXPAT_CAPI;XML_STATIC;HAVE_MEMMOVE"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:IA64 /USELINK:MS_SDK"
+ OutputFile="./_elementtree.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./_elementtree.pdb"
+ SubSystem="2"
+ BaseAddress="0x1D100000"
+ ImportLibrary=".\./_elementtree.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseAMD64|Win32"
+ OutputDirectory="."
+ IntermediateDirectory="amd64-temp-release\_elementtree"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_OPTERON /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC,..\..\Modules\expat"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;USE_PYEXPAT_CAPI;XML_STATIC;HAVE_MEMMOVE"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:AMD64 /USELINK:MS_SDK"
+ OutputFile="./_elementtree.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./_elementtree.pdb"
+ SubSystem="2"
+ BaseAddress="0x1D100000"
+ ImportLibrary=".\./_elementtree.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\Modules\_elementtree.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\xmlparse.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\xmlrole.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\xmltok.c">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS7.1/_msi.vcproj b/PC/VS7.1/_msi.vcproj
new file mode 100644
index 0000000..ecbcb85
--- /dev/null
+++ b/PC/VS7.1/_msi.vcproj
@@ -0,0 +1,252 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="_msi"
+ ProjectGUID="{2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}"
+ SccProjectName="_msi"
+ SccLocalPath="..\..\pc">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-debug\_msi"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;_DEBUG;_WINDOWS;_USRDLL"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fci.lib msi.lib rpcrt4.lib"
+ OutputFile="./_msi_d.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./_msi_d.pdb"
+ BaseAddress="0x1D160000"
+ ImportLibrary=".\./_msi_d.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-release\_msi"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;NDEBUG;_WINDOWS;_USRDLL"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fci.lib msi.lib rpcrt4.lib"
+ OutputFile="./_msi.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ProgramDatabaseFile=".\./_msi.pdb"
+ BaseAddress="0x1D160000"
+ ImportLibrary=".\./_msi.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseItanium|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\ia64-temp-release\_msi"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_ITANIUM /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;NDEBUG;_WINDOWS;_USRDLL"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:IA64 /USELINK:MS_SDK"
+ AdditionalDependencies="fci.lib msi.lib rpcrt4.lib bufferoverflowU.lib"
+ OutputFile="./_msi.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ProgramDatabaseFile=".\./_msi.pdb"
+ BaseAddress="0x1D160000"
+ ImportLibrary=".\./_msi.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseAMD64|Win32"
+ OutputDirectory="."
+ IntermediateDirectory="amd64-temp-release\_msi"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_OPTERON /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;NDEBUG;_WINDOWS;_USRDLL"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:AMD64 /USELINK:MS_SDK"
+ AdditionalDependencies="fci.lib msi.lib rpcrt4.lib bufferoverflowU.lib"
+ OutputFile="./_msi.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ProgramDatabaseFile=".\./_msi.pdb"
+ BaseAddress="0x1D160000"
+ ImportLibrary=".\./_msi.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\PC\_msi.c">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS7.1/_socket.vcproj b/PC/VS7.1/_socket.vcproj
new file mode 100644
index 0000000..157d7d9
--- /dev/null
+++ b/PC/VS7.1/_socket.vcproj
@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="_socket"
+ SccProjectName="_socket"
+ SccLocalPath="..">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-debug\_socket"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;_DEBUG;WIN32;_WINDOWS"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ OutputFile="./_socket_d.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./_socket_d.pdb"
+ SubSystem="2"
+ BaseAddress="0x1e1D0000"
+ ImportLibrary=".\./_socket_d.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-release\_socket"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ OutputFile="./_socket.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./_socket.pdb"
+ SubSystem="2"
+ BaseAddress="0x1e1D0000"
+ ImportLibrary=".\./_socket.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseItanium|Win32"
+ OutputDirectory="./."
+ IntermediateDirectory=".\ia64-temp-release\_socket"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_ITANIUM /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:IA64 /USELINK:MS_SDK"
+ AdditionalDependencies="ws2_32.lib"
+ OutputFile="./_socket.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./_socket.pdb"
+ SubSystem="2"
+ BaseAddress="0x1e1D0000"
+ ImportLibrary=".\./_socket.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseAMD64|Win32"
+ OutputDirectory="."
+ IntermediateDirectory="amd64-temp-release\_socket"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_OPTERON /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:AMD64 /USELINK:MS_SDK"
+ AdditionalDependencies="ws2_32.lib"
+ OutputFile="./_socket.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./_socket.pdb"
+ SubSystem="2"
+ BaseAddress="0x1e1D0000"
+ ImportLibrary=".\./_socket.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\Modules\socketmodule.c">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS7.1/_sqlite3.vcproj b/PC/VS7.1/_sqlite3.vcproj
new file mode 100644
index 0000000..de86c6f
--- /dev/null
+++ b/PC/VS7.1/_sqlite3.vcproj
@@ -0,0 +1,283 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="_sqlite3"
+ ProjectGUID="{2FF0A312-22F9-4C34-B070-842916DE27A9}"
+ SccProjectName="_sqlite3"
+ SccLocalPath="..">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-debug\_sqlite3"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\Include;..\..\PC;..\..\..\sqlite-source-3.3.4"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;_DEBUG;WIN32;_WINDOWS;MODULE_NAME=\&quot;sqlite3\&quot;"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="..\..\..\sqlite-source-3.3.4\sqlite3.lib"
+ OutputFile="./_sqlite3_d.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ IgnoreDefaultLibraryNames=""
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./_sqlite3_d.pdb"
+ SubSystem="2"
+ BaseAddress="0x1e180000"
+ ImportLibrary=".\./_sqlite3_d.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-release\_sqlite3"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include;..\..\PC;..\..\..\sqlite-source-3.3.4"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS;MODULE_NAME=\&quot;sqlite3\&quot;"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="..\..\..\sqlite-source-3.3.4\sqlite3.lib"
+ OutputFile="./_sqlite3.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ IgnoreDefaultLibraryNames=""
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./_sqlite3.pdb"
+ SubSystem="2"
+ BaseAddress="0x1e180000"
+ ImportLibrary=".\./_sqlite3.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseItanium|Win32"
+ OutputDirectory="./."
+ IntermediateDirectory=".\ia64-temp-release\_sqlite3"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_ITANIUM /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include;..\..\PC;..\..\..\sqlite-source-3.3.4"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS;MODULE_NAME=\&quot;sqlite3\&quot;"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:IA64 /USELINK:MS_SDK"
+ AdditionalDependencies="..\..\..\sqlite-source-3.3.4\ia64\sqlite3.lib"
+ OutputFile="./_sqlite3.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ IgnoreDefaultLibraryNames=""
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./_sqlite3.pdb"
+ SubSystem="2"
+ BaseAddress="0x1e180000"
+ ImportLibrary=".\./_sqlite3.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseAMD64|Win32"
+ OutputDirectory="."
+ IntermediateDirectory="amd64-temp-release\_sqlite3"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_OPTERON /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include;..\..\PC;..\..\..\sqlite-source-3.3.4"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS;MODULE_NAME=\&quot;sqlite3\&quot;"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:AMD64 /USELINK:MS_SDK"
+ AdditionalDependencies="..\..\..\sqlite-source-3.3.4\amd64\sqlite3.lib"
+ OutputFile="./_sqlite3.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ IgnoreDefaultLibraryNames=""
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./_sqlite3.pdb"
+ SubSystem="2"
+ BaseAddress="0x1e180000"
+ ImportLibrary=".\./_sqlite3.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\Modules\_sqlite\cache.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\connection.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\cursor.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\microprotocols.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\module.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\prepare_protocol.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\row.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\statement.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\util.c">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS7.1/_ssl.mak b/PC/VS7.1/_ssl.mak
new file mode 100644
index 0000000..8476a63
--- /dev/null
+++ b/PC/VS7.1/_ssl.mak
@@ -0,0 +1,38 @@
+EXTRA_LIBS=
+
+!IFDEF DEBUG
+SUFFIX=_d.pyd
+TEMP=x86-temp-debug/
+CFLAGS=/Od /Zi /MDd /LDd /DDEBUG /D_DEBUG /DWIN32
+SSL_LIB_DIR=$(SSL_DIR)/out32.dbg
+!ELSE
+SUFFIX=.pyd
+TEMP=x86-temp-release/
+CFLAGS=/Ox /MD /LD /DWIN32
+SSL_LIB_DIR=$(SSL_DIR)/out32
+!ENDIF
+
+INCLUDES=-I ../../Include -I ../../PC -I $(SSL_DIR)/inc32
+
+SSL_LIBS=gdi32.lib wsock32.lib user32.lib advapi32.lib /LIBPATH:$(SSL_LIB_DIR) libeay32.lib ssleay32.lib
+SSL_SOURCE=../../Modules/_ssl.c
+
+HASH_LIBS=gdi32.lib user32.lib advapi32.lib /libpath:$(SSL_LIB_DIR) libeay32.lib
+HASH_SOURCE=../../Modules/_hashopenssl.c
+
+all: _ssl$(SUFFIX) _hashlib$(SUFFIX)
+
+# Split compile/link into two steps to better support VSExtComp
+_ssl$(SUFFIX): $(SSL_SOURCE) $(SSL_LIB_DIR)/libeay32.lib $(SSL_LIB_DIR)/ssleay32.lib ../../PC/*.h ../../Include/*.h
+ @if not exist "$(TEMP)/_ssl/." mkdir "$(TEMP)/_ssl"
+ cl /nologo /c $(SSL_SOURCE) $(CFLAGS) /Fo$(TEMP)\_ssl\$*.obj $(INCLUDES)
+ link /nologo @<<
+ /dll /out:_ssl$(SUFFIX) $(TEMP)\_ssl\$*.obj $(SSL_LIBS) $(EXTRA_LIBS)
+<<
+
+_hashlib$(SUFFIX): $(HASH_SOURCE) $(SSL_LIB_DIR)/libeay32.lib ../../PC/*.h ../../Include/*.h
+ @if not exist "$(TEMP)/_hashlib/." mkdir "$(TEMP)/_hashlib"
+ cl /nologo /c $(HASH_SOURCE) $(CFLAGS) $(EXTRA_CFLAGS) /Fo$(TEMP)\_hashlib\$*.obj $(INCLUDES)
+ link /nologo @<<
+ /dll /out:_hashlib$(SUFFIX) $(HASH_LIBS) $(EXTRA_LIBS) $(TEMP)\_hashlib\$*.obj
+<<
diff --git a/PC/VS7.1/_ssl.vcproj b/PC/VS7.1/_ssl.vcproj
new file mode 100644
index 0000000..78eadd2
--- /dev/null
+++ b/PC/VS7.1/_ssl.vcproj
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="_ssl"
+ RootNamespace="_ssl"
+ SccProjectName=""
+ SccLocalPath=""
+ Keyword="MakeFileProj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-release\_ssl"
+ ConfigurationType="0"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCNMakeTool"
+ BuildCommandLine="build_ssl.bat $(ConfigurationName)"
+ ReBuildCommandLine="build_ssl.bat $(ConfigurationName) -a"
+ CleanCommandLine="echo Nothing to do"
+ Output="_ssl.pyd"/>
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-debug\_ssl"
+ ConfigurationType="0"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCNMakeTool"
+ BuildCommandLine="build_ssl.bat $(ConfigurationName)"
+ ReBuildCommandLine="build_ssl.bat $(ConfigurationName) -a"
+ CleanCommandLine="echo Nothing to do"
+ Output="_ssl_d.pyd"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseItanium|Win32"
+ OutputDirectory="./."
+ IntermediateDirectory=".\ia64-temp-release\_ssl"
+ ConfigurationType="0"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCNMakeTool"
+ BuildCommandLine="build_ssl.bat $(ConfigurationName)"
+ ReBuildCommandLine="build_ssl.bat $(ConfigurationName) -a"
+ CleanCommandLine="echo Nothing to do"
+ Output="_ssl.pyd"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseAMD64|Win32"
+ OutputDirectory="."
+ IntermediateDirectory="amd64-temp-release\_ssl"
+ ConfigurationType="0"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCNMakeTool"
+ BuildCommandLine="build_ssl.bat $(ConfigurationName)"
+ ReBuildCommandLine="build_ssl.bat $(ConfigurationName) -a"
+ CleanCommandLine="echo Nothing to do"
+ Output="_ssl.pyd"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\Modules\_ssl.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_hashopenssl.c">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS7.1/_testcapi.vcproj b/PC/VS7.1/_testcapi.vcproj
new file mode 100644
index 0000000..5261597
--- /dev/null
+++ b/PC/VS7.1/_testcapi.vcproj
@@ -0,0 +1,247 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="_testcapi"
+ SccProjectName="_testcapi"
+ SccLocalPath="..">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-release\_testcapi"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;NDEBUG;_WINDOWS;_USRDLL;MMAP_EXPORTS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="./_testcapi.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ProgramDatabaseFile=".\./_testcapi.pdb"
+ BaseAddress="0x1e1F0000"
+ ImportLibrary=".\./_testcapi.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-debug\_testcapi"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;_DEBUG;_WINDOWS;_USRDLL;MMAP_EXPORTS"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="./_testcapi_d.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./_testcapi_d.pdb"
+ BaseAddress="0x1e1F0000"
+ ImportLibrary=".\./_testcapi_d.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseItanium|Win32"
+ OutputDirectory="./."
+ IntermediateDirectory=".\ia64-temp-release\_testcapi"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_ITANIUM /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;NDEBUG;_WINDOWS;_USRDLL;MMAP_EXPORTS"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:IA64 /USELINK:MS_SDK"
+ OutputFile="./_testcapi.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ProgramDatabaseFile=".\./_testcapi.pdb"
+ BaseAddress="0x1e1F0000"
+ ImportLibrary=".\./_testcapi.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseAMD64|Win32"
+ OutputDirectory="."
+ IntermediateDirectory="amd64-temp-release\_testcapi"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_OPTERON /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;NDEBUG;_WINDOWS;_USRDLL;MMAP_EXPORTS"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:AMD64 /USELINK:MS_SDK"
+ OutputFile="./_testcapi.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ProgramDatabaseFile=".\./_testcapi.pdb"
+ BaseAddress="0x1e1F0000"
+ ImportLibrary=".\./_testcapi.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\Modules\_testcapimodule.c">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS7.1/_tkinter.vcproj b/PC/VS7.1/_tkinter.vcproj
new file mode 100644
index 0000000..07fc6c3
--- /dev/null
+++ b/PC/VS7.1/_tkinter.vcproj
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="_tkinter"
+ SccProjectName="_tkinter"
+ SccLocalPath="..\..\..\..">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-release\_tkinter"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\..\tcltk\include,..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS;WITH_APPINIT"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="..\..\..\tcltk\lib\tk84.lib ..\..\..\tcltk\lib\tcl84.lib"
+ OutputFile="./_tkinter.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories=""
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./_tkinter.pdb"
+ SubSystem="2"
+ BaseAddress="0x1e190000"
+ ImportLibrary=".\./_tkinter.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-debug\_tkinter"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\tcltk\include,..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;_DEBUG;WIN32;_WINDOWS;WITH_APPINIT"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="..\..\..\tcltk\lib\tk84.lib ..\..\..\tcltk\lib\tcl84.lib"
+ OutputFile="./_tkinter_d.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories=""
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./_tkinter_d.pdb"
+ SubSystem="2"
+ BaseAddress="0x1e190000"
+ ImportLibrary=".\./_tkinter_d.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseItanium|Win32"
+ OutputDirectory="./."
+ IntermediateDirectory=".\ia64-temp-release\_tkinter"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_ITANIUM /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\..\tcltk\include,..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS;WITH_APPINIT"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:IA64 /USELINK:MS_SDK"
+ AdditionalDependencies="..\..\..\tcltk\lib\tk84.lib ..\..\..\tcltk\lib\tcl84.lib"
+ OutputFile="./_tkinter.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories=""
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./_tkinter.pdb"
+ SubSystem="2"
+ BaseAddress="0x1e190000"
+ ImportLibrary=".\./_tkinter.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseAMD64|Win32"
+ OutputDirectory="."
+ IntermediateDirectory="amd64-temp-release\_tkinter"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_OPTERON /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\..\tcltk\include,..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS;WITH_APPINIT"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:AMD64 /USELINK:MS_SDK"
+ AdditionalDependencies="..\..\..\tcltk\lib\tk84.lib ..\..\..\tcltk\lib\tcl84.lib"
+ OutputFile="./_tkinter.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories=""
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./_tkinter.pdb"
+ SubSystem="2"
+ BaseAddress="0x1e190000"
+ ImportLibrary=".\./_tkinter.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\Modules\_tkinter.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\tkappinit.c">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS7.1/amd64_ml64.bat b/PC/VS7.1/amd64_ml64.bat
new file mode 100644
index 0000000..fa9acf1
--- /dev/null
+++ b/PC/VS7.1/amd64_ml64.bat
@@ -0,0 +1,17 @@
+@echo off
+rem Try to find the AMD64 assembler and call it with the supplied arguments.
+
+set MLEXE=Microsoft Platform SDK\Bin\Win64\x86\AMD64\ml64.EXE
+
+rem For the environment variables see also
+rem http://msdn.microsoft.com/library/en-us/win64/win64/wow64_implementation_details.asp
+
+if exist "%ProgramFiles%\%MLEXE%" (
+ set ML64="%ProgramFiles%\%MLEXE%"
+) else if exist "%ProgramW6432%\%MLEXE%" (
+ set ML64="%ProgramW6432%\%MLEXE%"
+) else (
+ set ML64=ml64.exe
+)
+
+%ML64% %*
diff --git a/PC/VS7.1/build_ssl.bat b/PC/VS7.1/build_ssl.bat
new file mode 100644
index 0000000..f6be3c0
--- /dev/null
+++ b/PC/VS7.1/build_ssl.bat
@@ -0,0 +1,12 @@
+if "%1" == "ReleaseAMD64" call "%MSSdk%\SetEnv" /XP64 /RETAIL
+
+@echo off
+if not defined HOST_PYTHON (
+ if %1 EQU Debug (
+ set HOST_PYTHON=python_d.exe
+ ) ELSE (
+ set HOST_PYTHON=python.exe
+ )
+)
+%HOST_PYTHON% build_ssl.py %1 %2
+
diff --git a/PC/VS7.1/build_ssl.py b/PC/VS7.1/build_ssl.py
new file mode 100644
index 0000000..2e9f4e3
--- /dev/null
+++ b/PC/VS7.1/build_ssl.py
@@ -0,0 +1,181 @@
+# Script for building the _ssl and _hashlib modules for Windows.
+# Uses Perl to setup the OpenSSL environment correctly
+# and build OpenSSL, then invokes a simple nmake session
+# for the actual _ssl.pyd and _hashlib.pyd DLLs.
+
+# THEORETICALLY, you can:
+# * Unpack the latest SSL release one level above your main Python source
+# directory. It is likely you will already find the zlib library and
+# any other external packages there.
+# * Install ActivePerl and ensure it is somewhere on your path.
+# * Run this script from the PCBuild directory.
+#
+# it should configure and build SSL, then build the _ssl and _hashlib
+# Python extensions without intervention.
+
+import os, sys, re
+
+# Find all "foo.exe" files on the PATH.
+def find_all_on_path(filename, extras = None):
+ entries = os.environ["PATH"].split(os.pathsep)
+ ret = []
+ for p in entries:
+ fname = os.path.abspath(os.path.join(p, filename))
+ if os.path.isfile(fname) and fname not in ret:
+ ret.append(fname)
+ if extras:
+ for p in extras:
+ fname = os.path.abspath(os.path.join(p, filename))
+ if os.path.isfile(fname) and fname not in ret:
+ ret.append(fname)
+ return ret
+
+# Find a suitable Perl installation for OpenSSL.
+# cygwin perl does *not* work. ActivePerl does.
+# Being a Perl dummy, the simplest way I can check is if the "Win32" package
+# is available.
+def find_working_perl(perls):
+ for perl in perls:
+ fh = os.popen(perl + ' -e "use Win32;"')
+ fh.read()
+ rc = fh.close()
+ if rc:
+ continue
+ return perl
+ print "Can not find a suitable PERL:"
+ if perls:
+ print " the following perl interpreters were found:"
+ for p in perls:
+ print " ", p
+ print " None of these versions appear suitable for building OpenSSL"
+ else:
+ print " NO perl interpreters were found on this machine at all!"
+ print " Please install ActivePerl and ensure it appears on your path"
+ print "The Python SSL module was not built"
+ return None
+
+# Locate the best SSL directory given a few roots to look into.
+def find_best_ssl_dir(sources):
+ candidates = []
+ for s in sources:
+ try:
+ # note: do not abspath s; the build will fail if any
+ # higher up directory name has spaces in it.
+ fnames = os.listdir(s)
+ except os.error:
+ fnames = []
+ for fname in fnames:
+ fqn = os.path.join(s, fname)
+ if os.path.isdir(fqn) and fname.startswith("openssl-"):
+ candidates.append(fqn)
+ # Now we have all the candidates, locate the best.
+ best_parts = []
+ best_name = None
+ for c in candidates:
+ parts = re.split("[.-]", os.path.basename(c))[1:]
+ # eg - openssl-0.9.7-beta1 - ignore all "beta" or any other qualifiers
+ if len(parts) >= 4:
+ continue
+ if parts > best_parts:
+ best_parts = parts
+ best_name = c
+ if best_name is not None:
+ print "Found an SSL directory at '%s'" % (best_name,)
+ else:
+ print "Could not find an SSL directory in '%s'" % (sources,)
+ sys.stdout.flush()
+ return best_name
+
+def run_configure(configure, do_script):
+ os.system("perl Configure "+configure)
+ os.system(do_script)
+
+def main():
+ build_all = "-a" in sys.argv
+ if sys.argv[1] == "Release":
+ arch = "x86"
+ debug = False
+ configure = "VC-WIN32"
+ do_script = "ms\\do_masm"
+ makefile = "ms\\nt.mak"
+ elif sys.argv[1] == "Debug":
+ arch = "x86"
+ debug = True
+ configure = "VC-WIN32"
+ do_script = "ms\\do_masm"
+ makefile="ms\\d32.mak"
+ elif sys.argv[1] == "ReleaseItanium":
+ arch = "ia64"
+ debug = False
+ configure = "VC-WIN64I"
+ do_script = "ms\\do_win64i"
+ makefile = "ms\\nt.mak"
+ os.environ["VSEXTCOMP_USECL"] = "MS_ITANIUM"
+ elif sys.argv[1] == "ReleaseAMD64":
+ arch="amd64"
+ debug=False
+ configure = "VC-WIN64A"
+ do_script = "ms\\do_win64a"
+ makefile = "ms\\nt.mak"
+ os.environ["VSEXTCOMP_USECL"] = "MS_OPTERON"
+ make_flags = ""
+ if build_all:
+ make_flags = "-a"
+ # perl should be on the path, but we also look in "\perl" and "c:\\perl"
+ # as "well known" locations
+ perls = find_all_on_path("perl.exe", ["\\perl\\bin", "C:\\perl\\bin"])
+ perl = find_working_perl(perls)
+ if perl is None:
+ sys.exit(1)
+
+ print "Found a working perl at '%s'" % (perl,)
+ sys.stdout.flush()
+ # Look for SSL 2 levels up from pcbuild - ie, same place zlib etc all live.
+ ssl_dir = find_best_ssl_dir(("..\\..\\..",))
+ if ssl_dir is None:
+ sys.exit(1)
+
+ old_cd = os.getcwd()
+ try:
+ os.chdir(ssl_dir)
+ # If the ssl makefiles do not exist, we invoke Perl to generate them.
+ # Due to a bug in this script, the makefile sometimes ended up empty
+ # Force a regeneration if it is.
+ if not os.path.isfile(makefile) or os.path.getsize(makefile)==0:
+ print "Creating the makefiles..."
+ sys.stdout.flush()
+ # Put our working Perl at the front of our path
+ os.environ["PATH"] = os.path.dirname(perl) + \
+ os.pathsep + \
+ os.environ["PATH"]
+ run_configure(configure, do_script)
+ if arch=="x86" and debug:
+ # the do_masm script in openssl doesn't generate a debug
+ # build makefile so we generate it here:
+ os.system("perl util\mk1mf.pl debug "+configure+" >"+makefile)
+
+ # Now run make.
+ makeCommand = "nmake /nologo PERL=\"%s\" -f \"%s\"" %(perl, makefile)
+ print "Executing ssl makefiles:", makeCommand
+ sys.stdout.flush()
+ rc = os.system(makeCommand)
+ if rc:
+ print "Executing "+makefile+" failed"
+ print rc
+ sys.exit(rc)
+ finally:
+ os.chdir(old_cd)
+ # And finally, we can build the _ssl module itself for Python.
+ defs = "SSL_DIR=\"%s\"" % (ssl_dir,)
+ if debug:
+ defs = defs + " " + "DEBUG=1"
+ if arch in ('amd64', 'ia64'):
+ defs = defs + " EXTRA_CFLAGS=/GS- EXTRA_LIBS=bufferoverflowU.lib"
+ makeCommand = 'nmake /nologo -f _ssl.mak ' + defs + " " + make_flags
+ print "Executing:", makeCommand
+ sys.stdout.flush()
+ rc = os.system(makeCommand)
+ sys.exit(rc)
+
+if __name__=='__main__':
+ main()
diff --git a/PC/VS7.1/bz2.vcproj b/PC/VS7.1/bz2.vcproj
new file mode 100644
index 0000000..bdd085d
--- /dev/null
+++ b/PC/VS7.1/bz2.vcproj
@@ -0,0 +1,271 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="bz2"
+ RootNamespace="bz2"
+ SccProjectName="bz2"
+ SccLocalPath="..">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-debug\bz2"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC,..\..\..\bzip2-1.0.3"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;_DEBUG;WIN32;_WINDOWS"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="..\..\..\bzip2-1.0.3\libbz2.lib"
+ OutputFile="./bz2_d.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ IgnoreDefaultLibraryNames="msvcrt,libc"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./bz2_d.pdb"
+ SubSystem="2"
+ BaseAddress="0x1D170000"
+ ImportLibrary=".\./bz2_d.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine="cd ..\..\..\bzip2-1.0.3
+nmake /nologo /f makefile.msc
+"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-release\bz2"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC,..\..\..\bzip2-1.0.3"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="..\..\..\bzip2-1.0.3\libbz2.lib"
+ OutputFile="./bz2.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ IgnoreDefaultLibraryNames="libc"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./bz2.pdb"
+ SubSystem="2"
+ BaseAddress="0x1D170000"
+ ImportLibrary=".\./bz2.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine="cd ..\..\..\bzip2-1.0.3
+nmake /nologo /f makefile.msc lib
+"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseItanium|Win32"
+ OutputDirectory="./."
+ IntermediateDirectory=".\ia64-temp-release\bz2"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_ITANIUM /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC,..\..\..\bzip2-1.0.3"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:IA64 /USELINK:MS_SDK"
+ AdditionalDependencies="..\..\..\bzip2-1.0.3\libbz2.lib"
+ OutputFile="./bz2.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ IgnoreDefaultLibraryNames="libc"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./bz2.pdb"
+ SubSystem="2"
+ BaseAddress="0x1D170000"
+ ImportLibrary=".\./bz2.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine="cd ..\..\..\bzip2-1.0.3
+nmake /nologo /f makefile.msc lib
+"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseAMD64|Win32"
+ OutputDirectory="."
+ IntermediateDirectory="amd64-temp-release\bz2"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_OPTERON /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC,..\..\..\bzip2-1.0.3"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:AMD64 /USELINK:MS_SDK"
+ AdditionalDependencies="..\..\..\bzip2-1.0.3\libbz2.lib"
+ OutputFile="./bz2.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ IgnoreDefaultLibraryNames="libc"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./bz2.pdb"
+ SubSystem="2"
+ BaseAddress="0x1D170000"
+ ImportLibrary=".\./bz2.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine="cd ..\..\..\bzip2-1.0.3
+nmake /nologo /f makefile.msc lib
+"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\Modules\bz2module.c">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS7.1/db.build b/PC/VS7.1/db.build
new file mode 100644
index 0000000..6a87f74
--- /dev/null
+++ b/PC/VS7.1/db.build
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<project>
+ <target name="all" description="Build all targets.">
+ <solution configuration="release">
+ <projects>
+ <include name="db_static.vcproj" />
+ </projects>
+ </solution>
+ </target>
+</project>
diff --git a/PC/VS7.1/field3.py b/PC/VS7.1/field3.py
new file mode 100644
index 0000000..47f24ca
--- /dev/null
+++ b/PC/VS7.1/field3.py
@@ -0,0 +1,35 @@
+# An absurd workaround for the lack of arithmetic in MS's resource compiler.
+# After building Python, run this, then paste the output into the appropriate
+# part of PC\python_nt.rc.
+# Example output:
+#
+# * For 2.3a0,
+# * PY_MICRO_VERSION = 0
+# * PY_RELEASE_LEVEL = 'alpha' = 0xA
+# * PY_RELEASE_SERIAL = 1
+# *
+# * and 0*1000 + 10*10 + 1 = 101.
+# */
+# #define FIELD3 101
+
+import sys
+
+major, minor, micro, level, serial = sys.version_info
+levelnum = {'alpha': 0xA,
+ 'beta': 0xB,
+ 'candidate': 0xC,
+ 'final': 0xF,
+ }[level]
+string = sys.version.split()[0] # like '2.3a0'
+
+print " * For %s," % string
+print " * PY_MICRO_VERSION = %d" % micro
+print " * PY_RELEASE_LEVEL = %r = %s" % (level, hex(levelnum))
+print " * PY_RELEASE_SERIAL = %d" % serial
+print " *"
+
+field3 = micro * 1000 + levelnum * 10 + serial
+
+print " * and %d*1000 + %d*10 + %d = %d" % (micro, levelnum, serial, field3)
+print " */"
+print "#define FIELD3", field3
diff --git a/PC/VS7.1/installer.bmp b/PC/VS7.1/installer.bmp
new file mode 100644
index 0000000..1875e19
--- /dev/null
+++ b/PC/VS7.1/installer.bmp
Binary files differ
diff --git a/PC/VS7.1/make_buildinfo.c b/PC/VS7.1/make_buildinfo.c
new file mode 100644
index 0000000..2aa2b66
--- /dev/null
+++ b/PC/VS7.1/make_buildinfo.c
@@ -0,0 +1,92 @@
+#include <windows.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <stdio.h>
+
+/* This file creates the getbuildinfo.o object, by first
+ invoking subwcrev.exe (if found), and then invoking cl.exe.
+ As a side effect, it might generate PC\VS7.1\getbuildinfo2.c
+ also. If this isn't a subversion checkout, or subwcrev isn't
+ found, it compiles ..\\..\\Modules\\getbuildinfo.c instead.
+
+ Currently, subwcrev.exe is found from the registry entries
+ of TortoiseSVN.
+
+ No attempt is made to place getbuildinfo.o into the proper
+ binary directory. This isn't necessary, as this tool is
+ invoked as a pre-link step for pythoncore, so that overwrites
+ any previous getbuildinfo.o.
+
+*/
+
+int make_buildinfo2()
+{
+ struct _stat st;
+ HKEY hTortoise;
+ char command[500];
+ DWORD type, size;
+ if (_stat(".svn", &st) < 0)
+ return 0;
+ /* Allow suppression of subwcrev.exe invocation if a no_subwcrev file is present. */
+ if (_stat("no_subwcrev", &st) == 0)
+ return 0;
+ if (RegOpenKey(HKEY_LOCAL_MACHINE, "Software\\TortoiseSVN", &hTortoise) != ERROR_SUCCESS &&
+ RegOpenKey(HKEY_CURRENT_USER, "Software\\TortoiseSVN", &hTortoise) != ERROR_SUCCESS)
+ /* Tortoise not installed */
+ return 0;
+ command[0] = '"'; /* quote the path to the executable */
+ size = sizeof(command) - 1;
+ if (RegQueryValueEx(hTortoise, "Directory", 0, &type, command+1, &size) != ERROR_SUCCESS ||
+ type != REG_SZ)
+ /* Registry corrupted */
+ return 0;
+ strcat(command, "bin\\subwcrev.exe");
+ if (_stat(command+1, &st) < 0)
+ /* subwcrev.exe not part of the release */
+ return 0;
+ strcat(command, "\" ..\\.. ..\\..\\Modules\\getbuildinfo.c getbuildinfo2.c");
+ puts(command); fflush(stdout);
+ if (system(command) < 0)
+ return 0;
+ return 1;
+}
+
+int main(int argc, char*argv[])
+{
+ char command[500] = "cl.exe -c -D_WIN32 -DUSE_DL_EXPORT -D_WINDOWS -DWIN32 -D_WINDLL ";
+ int do_unlink, result;
+ if (argc != 2) {
+ fprintf(stderr, "make_buildinfo $(ConfigurationName)\n");
+ return EXIT_FAILURE;
+ }
+ if (strcmp(argv[1], "Release") == 0) {
+ strcat(command, "-MD ");
+ }
+ else if (strcmp(argv[1], "Debug") == 0) {
+ strcat(command, "-D_DEBUG -MDd ");
+ }
+ else if (strcmp(argv[1], "ReleaseItanium") == 0) {
+ strcat(command, "-MD /USECL:MS_ITANIUM ");
+ }
+ else if (strcmp(argv[1], "ReleaseAMD64") == 0) {
+ strcat(command, "-MD ");
+ strcat(command, "-MD /USECL:MS_OPTERON ");
+ }
+ else {
+ fprintf(stderr, "unsupported configuration %s\n", argv[1]);
+ return EXIT_FAILURE;
+ }
+
+ if ((do_unlink = make_buildinfo2()))
+ strcat(command, "getbuildinfo2.c -DSUBWCREV ");
+ else
+ strcat(command, "..\\..\\Modules\\getbuildinfo.c");
+ strcat(command, " -Fogetbuildinfo.o -I..\\..\\Include -I..\\..\\PC");
+ puts(command); fflush(stdout);
+ result = system(command);
+ if (do_unlink)
+ unlink("getbuildinfo2.c");
+ if (result < 0)
+ return EXIT_FAILURE;
+ return 0;
+}
diff --git a/PC/VS7.1/make_buildinfo.vcproj b/PC/VS7.1/make_buildinfo.vcproj
new file mode 100644
index 0000000..c49f0fd
--- /dev/null
+++ b/PC/VS7.1/make_buildinfo.vcproj
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="windows-1250"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="make_buildinfo"
+ ProjectGUID="{C73F0EC1-358B-4177-940F-0846AC8B04CD}"
+ Keyword="Win32Proj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="."
+ IntermediateDirectory=".\x86-temp-release\make_buildinfo"
+ ConfigurationType="1"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ MinimalRebuild="TRUE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="5"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="4"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)/make_buildinfo.exe"
+ LinkIncremental="2"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/make_buildinfo.pdb"
+ SubSystem="1"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="."
+ IntermediateDirectory=".\x86-temp-release\make_buildinfo"
+ ConfigurationType="1"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="4"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)/make_buildinfo.exe"
+ LinkIncremental="1"
+ GenerateDebugInformation="TRUE"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+ <File
+ RelativePath=".\make_buildinfo.c">
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS7.1/make_versioninfo.vcproj b/PC/VS7.1/make_versioninfo.vcproj
new file mode 100644
index 0000000..5c6c9c5
--- /dev/null
+++ b/PC/VS7.1/make_versioninfo.vcproj
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="make_versioninfo"
+ RootNamespace="make_versioninfo"
+ SccProjectName="make_versioninfo"
+ SccLocalPath="..">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-release\make_versioninfo"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"
+ CommandLine=".\make_versioninfo.exe &gt;..\..\PC\pythonnt_rc.h
+"
+ Outputs="..\..\PC\pythonnt_rc.h"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile=".\./make_versioninfo.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./make_versioninfo.pdb"
+ SubSystem="1"
+ BaseAddress="0x1d000000"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="$(TargetFileName) &gt; ..\..\PC\python_nt.h"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-debug\make_versioninfo"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ BrowseInformation="1"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"
+ CommandLine=".\make_versioninfo_d.exe &gt;..\..\PC\pythonnt_rc_d.h
+"
+ Outputs="..\..\PC\pythonnt_rc_d.h"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="./make_versioninfo_d.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./make_versioninfo_d.pdb"
+ SubSystem="1"
+ BaseAddress="0x1d000000"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="$(TargetFileName) &gt; ..\..\PC\python_nt_d.h"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\PC\make_versioninfo.c">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS7.1/pcbuild.sln b/PC/VS7.1/pcbuild.sln
new file mode 100644
index 0000000..e44a39e
--- /dev/null
+++ b/PC/VS7.1/pcbuild.sln
@@ -0,0 +1,288 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_bsddb", "_bsddb.vcproj", "{E1DBB220-D64B-423D-A545-539A55AA7FE2}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_socket", "_socket.vcproj", "{324F66C2-44D0-4D50-B979-F9DAE7FD36DB}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ssl", "_ssl.vcproj", "{8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}"
+ ProjectSection(ProjectDependencies) = postProject
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} = {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058} = {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testcapi", "_testcapi.vcproj", "{59CBF474-9E06-4C50-9142-C44A118BB447}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_tkinter", "_tkinter.vcproj", "{5B51DFF7-5DC0-41F8-8791-A4AB7114A151}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bz2", "bz2.vcproj", "{AC557788-6354-43F7-BE05-C9C8C59A344A}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_versioninfo", "make_versioninfo.vcproj", "{F0E0541E-F17D-430B-97C4-93ADF0DD284E}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pyexpat", "pyexpat.vcproj", "{7E551393-3C43-47F8-9F3F-5BC368A6C487}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python", "python.vcproj", "{B11D750F-CD1F-4A96-85CE-E69A5C5259F9}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythoncore", "pythoncore.vcproj", "{CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}"
+ ProjectSection(ProjectDependencies) = postProject
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E} = {F0E0541E-F17D-430B-97C4-93ADF0DD284E}
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD} = {C73F0EC1-358B-4177-940F-0846AC8B04CD}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythonw", "pythonw.vcproj", "{F4229CC3-873C-49AE-9729-DD308ED4CD4A}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "select", "select.vcproj", "{97239A56-DBC0-41D2-BC14-C87D9B97D63B}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unicodedata", "unicodedata.vcproj", "{FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "w9xpopen", "w9xpopen.vcproj", "{E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winsound", "winsound.vcproj", "{51F35FAE-FB92-4B2C-9187-1542C065AD77}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_elementtree", "_elementtree.vcproj", "{1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_buildinfo", "make_buildinfo.vcproj", "{C73F0EC1-358B-4177-940F-0846AC8B04CD}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_msi", "_msi.vcproj", "{2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ctypes", "_ctypes.vcproj", "{F22F40F4-D318-40DC-96B3-88DC81CE0894}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ctypes_test", "_ctypes_test.vcproj", "{8CF334D9-4F82-42EB-97AF-83592C5AFD2F}"
+ ProjectSection(ProjectDependencies) = postProject
+ {F22F40F4-D318-40DC-96B3-88DC81CE0894} = {F22F40F4-D318-40DC-96B3-88DC81CE0894}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_sqlite3", "_sqlite3.vcproj", "{2FF0A312-22F9-4C34-B070-842916DE27A9}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ Debug = Debug
+ Release = Release
+ ReleaseAMD64 = ReleaseAMD64
+ ReleaseItanium = ReleaseItanium
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {E1DBB220-D64B-423D-A545-539A55AA7FE2}.Debug.ActiveCfg = Debug|Win32
+ {E1DBB220-D64B-423D-A545-539A55AA7FE2}.Debug.Build.0 = Debug|Win32
+ {E1DBB220-D64B-423D-A545-539A55AA7FE2}.Release.ActiveCfg = Release|Win32
+ {E1DBB220-D64B-423D-A545-539A55AA7FE2}.Release.Build.0 = Release|Win32
+ {E1DBB220-D64B-423D-A545-539A55AA7FE2}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32
+ {E1DBB220-D64B-423D-A545-539A55AA7FE2}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32
+ {E1DBB220-D64B-423D-A545-539A55AA7FE2}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32
+ {E1DBB220-D64B-423D-A545-539A55AA7FE2}.ReleaseItanium.Build.0 = ReleaseItanium|Win32
+ {324F66C2-44D0-4D50-B979-F9DAE7FD36DB}.Debug.ActiveCfg = Debug|Win32
+ {324F66C2-44D0-4D50-B979-F9DAE7FD36DB}.Debug.Build.0 = Debug|Win32
+ {324F66C2-44D0-4D50-B979-F9DAE7FD36DB}.Release.ActiveCfg = Release|Win32
+ {324F66C2-44D0-4D50-B979-F9DAE7FD36DB}.Release.Build.0 = Release|Win32
+ {324F66C2-44D0-4D50-B979-F9DAE7FD36DB}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32
+ {324F66C2-44D0-4D50-B979-F9DAE7FD36DB}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32
+ {324F66C2-44D0-4D50-B979-F9DAE7FD36DB}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32
+ {324F66C2-44D0-4D50-B979-F9DAE7FD36DB}.ReleaseItanium.Build.0 = ReleaseItanium|Win32
+ {8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}.Debug.ActiveCfg = Debug|Win32
+ {8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}.Debug.Build.0 = Debug|Win32
+ {8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}.Release.ActiveCfg = Release|Win32
+ {8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}.Release.Build.0 = Release|Win32
+ {8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32
+ {8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32
+ {8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32
+ {8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}.ReleaseItanium.Build.0 = ReleaseItanium|Win32
+ {59CBF474-9E06-4C50-9142-C44A118BB447}.Debug.ActiveCfg = Debug|Win32
+ {59CBF474-9E06-4C50-9142-C44A118BB447}.Debug.Build.0 = Debug|Win32
+ {59CBF474-9E06-4C50-9142-C44A118BB447}.Release.ActiveCfg = Release|Win32
+ {59CBF474-9E06-4C50-9142-C44A118BB447}.Release.Build.0 = Release|Win32
+ {59CBF474-9E06-4C50-9142-C44A118BB447}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32
+ {59CBF474-9E06-4C50-9142-C44A118BB447}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32
+ {59CBF474-9E06-4C50-9142-C44A118BB447}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32
+ {59CBF474-9E06-4C50-9142-C44A118BB447}.ReleaseItanium.Build.0 = ReleaseItanium|Win32
+ {5B51DFF7-5DC0-41F8-8791-A4AB7114A151}.Debug.ActiveCfg = Debug|Win32
+ {5B51DFF7-5DC0-41F8-8791-A4AB7114A151}.Debug.Build.0 = Debug|Win32
+ {5B51DFF7-5DC0-41F8-8791-A4AB7114A151}.Release.ActiveCfg = Release|Win32
+ {5B51DFF7-5DC0-41F8-8791-A4AB7114A151}.Release.Build.0 = Release|Win32
+ {5B51DFF7-5DC0-41F8-8791-A4AB7114A151}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32
+ {5B51DFF7-5DC0-41F8-8791-A4AB7114A151}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32
+ {5B51DFF7-5DC0-41F8-8791-A4AB7114A151}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32
+ {5B51DFF7-5DC0-41F8-8791-A4AB7114A151}.ReleaseItanium.Build.0 = ReleaseItanium|Win32
+ {AC557788-6354-43F7-BE05-C9C8C59A344A}.Debug.ActiveCfg = Debug|Win32
+ {AC557788-6354-43F7-BE05-C9C8C59A344A}.Debug.Build.0 = Debug|Win32
+ {AC557788-6354-43F7-BE05-C9C8C59A344A}.Release.ActiveCfg = Release|Win32
+ {AC557788-6354-43F7-BE05-C9C8C59A344A}.Release.Build.0 = Release|Win32
+ {AC557788-6354-43F7-BE05-C9C8C59A344A}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32
+ {AC557788-6354-43F7-BE05-C9C8C59A344A}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32
+ {AC557788-6354-43F7-BE05-C9C8C59A344A}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32
+ {AC557788-6354-43F7-BE05-C9C8C59A344A}.ReleaseItanium.Build.0 = ReleaseItanium|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Debug.ActiveCfg = Debug|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Debug.Build.0 = Debug|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Release.ActiveCfg = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Release.Build.0 = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.ReleaseAMD64.ActiveCfg = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.ReleaseAMD64.Build.0 = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.ReleaseItanium.ActiveCfg = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.ReleaseItanium.Build.0 = Release|Win32
+ {7E551393-3C43-47F8-9F3F-5BC368A6C487}.Debug.ActiveCfg = Debug|Win32
+ {7E551393-3C43-47F8-9F3F-5BC368A6C487}.Debug.Build.0 = Debug|Win32
+ {7E551393-3C43-47F8-9F3F-5BC368A6C487}.Release.ActiveCfg = Release|Win32
+ {7E551393-3C43-47F8-9F3F-5BC368A6C487}.Release.Build.0 = Release|Win32
+ {7E551393-3C43-47F8-9F3F-5BC368A6C487}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32
+ {7E551393-3C43-47F8-9F3F-5BC368A6C487}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32
+ {7E551393-3C43-47F8-9F3F-5BC368A6C487}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32
+ {7E551393-3C43-47F8-9F3F-5BC368A6C487}.ReleaseItanium.Build.0 = ReleaseItanium|Win32
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug.ActiveCfg = Debug|Win32
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug.Build.0 = Debug|Win32
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release.ActiveCfg = Release|Win32
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release.Build.0 = Release|Win32
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.ReleaseItanium.Build.0 = ReleaseItanium|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug.ActiveCfg = Debug|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug.Build.0 = Debug|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release.ActiveCfg = Release|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release.Build.0 = Release|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.ReleaseItanium.Build.0 = ReleaseItanium|Win32
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug.ActiveCfg = Debug|Win32
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug.Build.0 = Debug|Win32
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release.ActiveCfg = Release|Win32
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release.Build.0 = Release|Win32
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.ReleaseItanium.Build.0 = ReleaseItanium|Win32
+ {97239A56-DBC0-41D2-BC14-C87D9B97D63B}.Debug.ActiveCfg = Debug|Win32
+ {97239A56-DBC0-41D2-BC14-C87D9B97D63B}.Debug.Build.0 = Debug|Win32
+ {97239A56-DBC0-41D2-BC14-C87D9B97D63B}.Release.ActiveCfg = Release|Win32
+ {97239A56-DBC0-41D2-BC14-C87D9B97D63B}.Release.Build.0 = Release|Win32
+ {97239A56-DBC0-41D2-BC14-C87D9B97D63B}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32
+ {97239A56-DBC0-41D2-BC14-C87D9B97D63B}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32
+ {97239A56-DBC0-41D2-BC14-C87D9B97D63B}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32
+ {97239A56-DBC0-41D2-BC14-C87D9B97D63B}.ReleaseItanium.Build.0 = ReleaseItanium|Win32
+ {FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}.Debug.ActiveCfg = Debug|Win32
+ {FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}.Debug.Build.0 = Debug|Win32
+ {FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}.Release.ActiveCfg = Release|Win32
+ {FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}.Release.Build.0 = Release|Win32
+ {FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32
+ {FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32
+ {FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32
+ {FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}.ReleaseItanium.Build.0 = ReleaseItanium|Win32
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Debug.ActiveCfg = Debug|Win32
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Debug.Build.0 = Debug|Win32
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Release.ActiveCfg = Release|Win32
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Release.Build.0 = Release|Win32
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.ReleaseAMD64.ActiveCfg = Release|Win32
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.ReleaseItanium.ActiveCfg = Release|Win32
+ {51F35FAE-FB92-4B2C-9187-1542C065AD77}.Debug.ActiveCfg = Debug|Win32
+ {51F35FAE-FB92-4B2C-9187-1542C065AD77}.Debug.Build.0 = Debug|Win32
+ {51F35FAE-FB92-4B2C-9187-1542C065AD77}.Release.ActiveCfg = Release|Win32
+ {51F35FAE-FB92-4B2C-9187-1542C065AD77}.Release.Build.0 = Release|Win32
+ {51F35FAE-FB92-4B2C-9187-1542C065AD77}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32
+ {51F35FAE-FB92-4B2C-9187-1542C065AD77}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32
+ {51F35FAE-FB92-4B2C-9187-1542C065AD77}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32
+ {51F35FAE-FB92-4B2C-9187-1542C065AD77}.ReleaseItanium.Build.0 = ReleaseItanium|Win32
+ {1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}.Debug.ActiveCfg = Debug|Win32
+ {1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}.Debug.Build.0 = Debug|Win32
+ {1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}.Release.ActiveCfg = Release|Win32
+ {1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}.Release.Build.0 = Release|Win32
+ {1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32
+ {1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32
+ {1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32
+ {1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}.ReleaseItanium.Build.0 = ReleaseItanium|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Debug.ActiveCfg = Debug|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Debug.Build.0 = Debug|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Release.ActiveCfg = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Release.Build.0 = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.ReleaseAMD64.ActiveCfg = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.ReleaseAMD64.Build.0 = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.ReleaseItanium.ActiveCfg = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.ReleaseItanium.Build.0 = Release|Win32
+ {2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}.Debug.ActiveCfg = Debug|Win32
+ {2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}.Debug.Build.0 = Debug|Win32
+ {2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}.Release.ActiveCfg = Release|Win32
+ {2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}.Release.Build.0 = Release|Win32
+ {2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32
+ {2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32
+ {2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32
+ {2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}.ReleaseItanium.Build.0 = ReleaseItanium|Win32
+ {F22F40F4-D318-40DC-96B3-88DC81CE0894}.Debug.ActiveCfg = Debug|Win32
+ {F22F40F4-D318-40DC-96B3-88DC81CE0894}.Debug.Build.0 = Debug|Win32
+ {F22F40F4-D318-40DC-96B3-88DC81CE0894}.Release.ActiveCfg = Release|Win32
+ {F22F40F4-D318-40DC-96B3-88DC81CE0894}.Release.Build.0 = Release|Win32
+ {F22F40F4-D318-40DC-96B3-88DC81CE0894}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32
+ {F22F40F4-D318-40DC-96B3-88DC81CE0894}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32
+ {F22F40F4-D318-40DC-96B3-88DC81CE0894}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32
+ {8CF334D9-4F82-42EB-97AF-83592C5AFD2F}.Debug.ActiveCfg = Debug|Win32
+ {8CF334D9-4F82-42EB-97AF-83592C5AFD2F}.Debug.Build.0 = Debug|Win32
+ {8CF334D9-4F82-42EB-97AF-83592C5AFD2F}.Release.ActiveCfg = Release|Win32
+ {8CF334D9-4F82-42EB-97AF-83592C5AFD2F}.Release.Build.0 = Release|Win32
+ {8CF334D9-4F82-42EB-97AF-83592C5AFD2F}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32
+ {8CF334D9-4F82-42EB-97AF-83592C5AFD2F}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32
+ {8CF334D9-4F82-42EB-97AF-83592C5AFD2F}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32
+ {2FF0A312-22F9-4C34-B070-842916DE27A9}.Debug.ActiveCfg = Debug|Win32
+ {2FF0A312-22F9-4C34-B070-842916DE27A9}.Debug.Build.0 = Debug|Win32
+ {2FF0A312-22F9-4C34-B070-842916DE27A9}.Release.ActiveCfg = Release|Win32
+ {2FF0A312-22F9-4C34-B070-842916DE27A9}.Release.Build.0 = Release|Win32
+ {2FF0A312-22F9-4C34-B070-842916DE27A9}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32
+ {2FF0A312-22F9-4C34-B070-842916DE27A9}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32
+ {2FF0A312-22F9-4C34-B070-842916DE27A9}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32
+ {2FF0A312-22F9-4C34-B070-842916DE27A9}.ReleaseItanium.Build.0 = ReleaseItanium|Win32
+ EndGlobalSection
+ GlobalSection(SolutionItems) = postSolution
+ ..\Modules\getbuildinfo.c = ..\Modules\getbuildinfo.c
+ readme.txt = readme.txt
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/PC/VS7.1/pyexpat.vcproj b/PC/VS7.1/pyexpat.vcproj
new file mode 100644
index 0000000..71f0032
--- /dev/null
+++ b/PC/VS7.1/pyexpat.vcproj
@@ -0,0 +1,259 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="pyexpat"
+ SccProjectName="pyexpat"
+ SccLocalPath="..">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-debug\pyexpat"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC,..\..\Modules\expat"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;_DEBUG;HAVE_EXPAT_H;WIN32;_WINDOWS;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;XML_STATIC;HAVE_MEMMOVE"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="./pyexpat_d.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./pyexpat_d.pdb"
+ SubSystem="2"
+ BaseAddress="0x1D100000"
+ ImportLibrary=".\./pyexpat_d.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-release\pyexpat"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC,..\..\Modules\expat"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;XML_STATIC;HAVE_MEMMOVE"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="./pyexpat.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./pyexpat.pdb"
+ SubSystem="2"
+ BaseAddress="0x1D100000"
+ ImportLibrary=".\./pyexpat.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseItanium|Win32"
+ OutputDirectory="./."
+ IntermediateDirectory=".\ia64-temp-release\pyexpat"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_ITANIUM /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC,..\..\Modules\expat"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;XML_STATIC;HAVE_MEMMOVE"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:IA64 /USELINK:MS_SDK"
+ OutputFile="./pyexpat.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./pyexpat.pdb"
+ SubSystem="2"
+ BaseAddress="0x1D100000"
+ ImportLibrary=".\./pyexpat.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseAMD64|Win32"
+ OutputDirectory="."
+ IntermediateDirectory="amd64-temp-release\pyexpat"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_OPTERON /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC,..\..\Modules\expat"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;XML_STATIC;HAVE_MEMMOVE"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:AMD64 /USELINK:MS_SDK"
+ OutputFile="./pyexpat.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./pyexpat.pdb"
+ SubSystem="2"
+ BaseAddress="0x1D100000"
+ ImportLibrary=".\./pyexpat.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\Modules\pyexpat.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\xmlparse.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\xmlrole.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\xmltok.c">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS7.1/python.build b/PC/VS7.1/python.build
new file mode 100644
index 0000000..61bbe89
--- /dev/null
+++ b/PC/VS7.1/python.build
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<project>
+ <target name="all" description="Build all targets.">
+ <solution configuration="release">
+ <projects>
+ <include name="make_versioninfo.vcproj" />
+ </projects>
+ </solution>
+ <exec program="make_versioninfo" output="pythonnt_rc.h" />
+
+ <solution configuration="release" solutionfile="pcbuild.sln">
+ <excludeprojects>
+ <include name="_tkinter.vcproj" />
+ <include name="bz2.vcproj" />
+ <include name="_bsddb.vcproj" />
+ <include name="_sqlite3.vcproj" />
+ <include name="_ssl.vcproj" />
+ </excludeprojects>
+ </solution>
+ </target>
+</project>
diff --git a/PC/VS7.1/python.iss b/PC/VS7.1/python.iss
new file mode 100644
index 0000000..40365be
--- /dev/null
+++ b/PC/VS7.1/python.iss
@@ -0,0 +1,346 @@
+; Script generated by the Inno Setup Script Wizard.
+; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
+
+; This is the whole ball of wax for an Inno installer for Python.
+; To use, download Inno Setup from http://www.jrsoftware.org/isdl.htm/,
+; install it, and double-click on this file. That launches the Inno
+; script compiler. The GUI is extemely simple, and has only one button
+; you may not recognize instantly: click it. You're done. It builds
+; the installer into PCBuild/Python-2.2a1.exe. Size and speed of the
+; installer are competitive with the Wise installer; Inno uninstall
+; seems much quicker than Wise (but also feebler, and the uninstall
+; log is in some un(human)readable binary format).
+;
+; What's Done
+; -----------
+; All the usual Windows Python files are installed by this now.
+; All the usual Windows Python Start menu entries are created and
+; work fine.
+; .py, .pyw, .pyc and .pyo extensions are registered.
+; PROBLEM: Inno uninstall does not restore their previous registry
+; associations (if any). Wise did. This will make life
+; difficult for alpha (etc) testers.
+; The Python install is fully functional for "typical" uses.
+;
+; What's Not Done
+; ---------------
+; None of "Mark Hammond's" registry entries are written.
+; No installation of files is done into the system dir:
+; The MS DLLs aren't handled at all by this yet.
+; Python22.dll is unpacked into the main Python dir.
+;
+; Inno can't do different things on NT/2000 depending on whether the user
+; has Admin privileges, so I don't know how to "solve" either of those,
+; short of building two installers (one *requiring* Admin privs, the
+; other not doing anything that needs Admin privs).
+;
+; Inno has no concept of variables, so lots of lines in this file need
+; to be fiddled by hand across releases. Simplest way out: stick this
+; file in a giant triple-quoted r-string (note that backslashes are
+; required all over the place here -- forward slashes DON'T WORK in
+; Inno), and use %(yadda)s string interpolation to do substitutions; i.e.,
+; write a very simple Python program to *produce* this script.
+
+[Setup]
+AppName=Python and combined Win32 Extensions
+AppVerName=Python 2.2.2 and combined Win32 Extensions 150
+AppId=Python 2.2.2.150
+AppVersion=2.2.2.150
+AppCopyright=Python is Copyright © 2001 Python Software Foundation. Win32 Extensions are Copyright © 1996-2001 Greg Stein and Mark Hammond.
+
+; Default install dir; value of {app} later (unless user overrides).
+; {sd} = system root drive, probably "C:".
+DefaultDirName={sd}\Python22
+;DefaultDirName={pf}\Python
+
+; Start menu folder name; value of {group} later (unless user overrides).
+DefaultGroupName=Python 2.2
+
+; Point SourceDir to one above PCBuild = src.
+; means this script can run unchanged from anyone's CVS tree, no matter
+; what they called the top-level directories.
+SourceDir=.
+OutputDir=..
+OutputBaseFilename=Python-2.2.2-Win32-150-Setup
+
+AppPublisher=PythonLabs at Digital Creations
+AppPublisherURL=http://www.python.org
+AppSupportURL=http://www.python.org
+AppUpdatesURL=http://www.python.org
+
+AlwaysCreateUninstallIcon=true
+ChangesAssociations=true
+UninstallLogMode=new
+AllowNoIcons=true
+AdminPrivilegesRequired=true
+UninstallDisplayIcon={app}\pyc.ico
+WizardDebug=false
+
+; The fewer screens the better; leave these commented.
+
+Compression=bzip
+InfoBeforeFile=LICENSE.txt
+;InfoBeforeFile=Misc\NEWS
+
+; uncomment the following line if you want your installation to run on NT 3.51 too.
+; MinVersion=4,3.51
+
+[Types]
+Name: normal; Description: Select desired components; Flags: iscustom
+
+[Components]
+Name: main; Description: Python and Win32 Extensions; Types: normal
+Name: docs; Description: Python documentation (HTML); Types: normal
+Name: tk; Description: TCL/TK, tkinter, and Idle; Types: normal
+Name: tools; Description: Python utility scripts (Tools\); Types: normal
+Name: test; Description: Python test suite (Lib\test\); Types: normal
+
+[Tasks]
+Name: extensions; Description: Register file associations (.py, .pyw, .pyc, .pyo); Components: main; Check: IsAdminLoggedOn
+
+[Files]
+; Caution: Using forward slashes instead screws up in amazing ways.
+; Unknown: By the time Components (and other attrs) are added to these lines, they're
+; going to get awfully long. But don't see a way to continue logical lines across
+; physical lines.
+
+Source: LICENSE.txt; DestDir: {app}; CopyMode: alwaysoverwrite
+Source: README.txt; DestDir: {app}; CopyMode: alwaysoverwrite
+Source: News.txt; DestDir: {app}; CopyMode: alwaysoverwrite
+Source: *.ico; DestDir: {app}; CopyMode: alwaysoverwrite; Components: main
+
+Source: python.exe; DestDir: {app}; CopyMode: alwaysoverwrite; Components: main
+Source: pythonw.exe; DestDir: {app}; CopyMode: alwaysoverwrite; Components: main
+Source: w9xpopen.exe; DestDir: {app}; CopyMode: alwaysoverwrite; Components: main
+
+
+Source: DLLs\tcl83.dll; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: tk
+Source: DLLs\tk83.dll; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: tk
+Source: tcl\*.*; DestDir: {app}\tcl; CopyMode: alwaysoverwrite; Components: tk; Flags: recursesubdirs
+
+Source: sysdir\python22.dll; DestDir: {sys}; CopyMode: alwaysskipifsameorolder; Components: main; Flags: sharedfile restartreplace
+Source: sysdir\PyWinTypes22.dll; DestDir: {sys}; CopyMode: alwaysskipifsameorolder; Components: main; Flags: restartreplace sharedfile
+Source: sysdir\pythoncom22.dll; DestDir: {sys}; CopyMode: alwaysskipifsameorolder; Components: main; Flags: restartreplace sharedfile
+
+Source: DLLs\_socket.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main
+Source: libs\_socket.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main
+
+Source: DLLs\_sre.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main
+Source: libs\_sre.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main
+
+Source: DLLs\_symtable.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main
+Source: libs\_symtable.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main
+
+Source: DLLs\_testcapi.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main
+Source: libs\_testcapi.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main
+
+Source: DLLs\_tkinter.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: tk
+Source: libs\_tkinter.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: tk
+
+Source: DLLs\bsddb.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main
+Source: libs\bsddb.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main
+
+Source: DLLs\mmap.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main
+Source: libs\mmap.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main
+
+Source: DLLs\parser.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main
+Source: libs\parser.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main
+
+Source: DLLs\pyexpat.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main
+Source: libs\pyexpat.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main
+
+Source: DLLs\select.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main
+Source: libs\select.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main
+
+Source: DLLs\unicodedata.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main
+Source: libs\unicodedata.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main
+
+Source: DLLs\_winreg.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main
+Source: libs\_winreg.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main
+
+Source: DLLs\winsound.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main
+Source: libs\winsound.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main
+
+Source: DLLs\zlib.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main
+Source: libs\zlib.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main
+
+Source: libs\python22.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main
+
+Source: DLLs\expat.dll; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main
+
+
+
+Source: Lib\*.py; DestDir: {app}\Lib; CopyMode: alwaysoverwrite; Components: main
+Source: Lib\compiler\*.*; DestDir: {app}\Lib\compiler; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs
+Source: Lib\distutils\*.*; DestDir: {app}\Lib\distutils; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs
+Source: Lib\email\*.*; DestDir: {app}\Lib\email; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs
+Source: Lib\encodings\*.*; DestDir: {app}\Lib\encodings; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs
+Source: Lib\hotshot\*.*; DestDir: {app}\Lib\hotshot; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs
+Source: Lib\lib-old\*.*; DestDir: {app}\Lib\lib-old; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs
+Source: Lib\xml\*.*; DestDir: {app}\Lib\xml; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs
+Source: Lib\hotshot\*.*; DestDir: {app}\Lib\hotshot; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs
+Source: Lib\test\*.*; DestDir: {app}\Lib\test; CopyMode: alwaysoverwrite; Components: test; Flags: recursesubdirs
+
+Source: Lib\site-packages\README.txt; DestDir: {app}\Lib\site-packages; CopyMode: alwaysoverwrite; Components: main
+
+Source: Lib\site-packages\PyWin32.chm; DestDir: {app}\Lib\site-packages; CopyMode: alwaysoverwrite; Components: docs
+Source: Lib\site-packages\win32\*.*; DestDir: {app}\Lib\site-packages\win32; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs
+Source: Lib\site-packages\win32com\*.*; DestDir: {app}\Lib\site-packages\win32com; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs
+Source: Lib\site-packages\win32comext\*.*; DestDir: {app}\Lib\site-packages\win32comext; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs
+
+Source: Lib\lib-tk\*.py; DestDir: {app}\Lib\lib-tk; CopyMode: alwaysoverwrite; Components: tk; Flags: recursesubdirs
+
+Source: include\*.h; DestDir: {app}\include; CopyMode: alwaysoverwrite; Components: main
+
+Source: Tools\idle\*.*; DestDir: {app}\Tools\idle; CopyMode: alwaysoverwrite; Components: tk; Flags: recursesubdirs
+
+Source: Tools\pynche\*.*; DestDir: {app}\Tools\pynche; CopyMode: alwaysoverwrite; Components: tools; Flags: recursesubdirs
+Source: Tools\scripts\*.*; DestDir: {app}\Tools\Scripts; CopyMode: alwaysoverwrite; Components: tools; Flags: recursesubdirs
+Source: Tools\webchecker\*.*; DestDir: {app}\Tools\webchecker; CopyMode: alwaysoverwrite; Components: tools; Flags: recursesubdirs
+Source: Tools\versioncheck\*.*; DestDir: {app}\Tools\versioncheck; CopyMode: alwaysoverwrite; Components: tools; Flags: recursesubdirs
+
+Source: Doc\*.*; DestDir: {app}\Doc; CopyMode: alwaysoverwrite; Flags: recursesubdirs; Components: docs
+
+
+[Icons]
+Name: {group}\Python (command line); Filename: {app}\python.exe; WorkingDir: {app}; Components: main
+Name: {group}\Python Manuals; Filename: {app}\Doc\index.html; WorkingDir: {app}; Components: docs
+Name: {group}\Win32 Extensions Help; Filename: {app}\Lib\site-packages\PyWin32.chm; WorkingDir: {app}\Lib\site-packages; Components: docs
+Name: {group}\Module Docs; Filename: {app}\pythonw.exe; WorkingDir: {app}; Parameters: """{app}\Tools\Scripts\pydoc.pyw"""; Components: tools
+Name: {group}\IDLE (Python GUI); Filename: {app}\pythonw.exe; WorkingDir: {app}; Parameters: """{app}\Tools\idle\idle.pyw"""; Components: tools
+
+[Registry]
+; Register .py
+Tasks: extensions; Root: HKCR; Subkey: .py; ValueType: string; ValueName: ; ValueData: Python File; Flags: uninsdeletevalue
+Tasks: extensions; Root: HKCR; Subkey: .py; ValueType: string; ValueName: Content Type; ValueData: text/plain; Flags: uninsdeletevalue
+Tasks: extensions; Root: HKCR; Subkey: Python File; ValueType: string; ValueName: ; ValueData: Python File; Flags: uninsdeletekey
+Tasks: extensions; Root: HKCR; Subkey: Python File\DefaultIcon; ValueType: string; ValueName: ; ValueData: {app}\Py.ico
+Tasks: extensions; Root: HKCR; Subkey: Python File\shell\open\command; ValueType: string; ValueName: ; ValueData: """{app}\python.exe"" ""%1"" %*"
+
+; Register .pyc
+Tasks: extensions; Root: HKCR; Subkey: .pyc; ValueType: string; ValueName: ; ValueData: Python CompiledFile; Flags: uninsdeletevalue
+Tasks: extensions; Root: HKCR; Subkey: Python CompiledFile; ValueType: string; ValueName: ; ValueData: Compiled Python File; Flags: uninsdeletekey
+Tasks: extensions; Root: HKCR; Subkey: Python CompiledFile\DefaultIcon; ValueType: string; ValueName: ; ValueData: {app}\pyc.ico
+Tasks: extensions; Root: HKCR; Subkey: Python CompiledFile\shell\open\command; ValueType: string; ValueName: ; ValueData: """{app}\python.exe"" ""%1"" %*"
+
+; Register .pyo
+Tasks: extensions; Root: HKCR; Subkey: .pyo; ValueType: string; ValueName: ; ValueData: Python CompiledFile; Flags: uninsdeletevalue
+
+; Register .pyw
+Tasks: extensions; Root: HKCR; Subkey: .pyw; ValueType: string; ValueName: ; ValueData: Python NoConFile; Flags: uninsdeletevalue
+Tasks: extensions; Root: HKCR; Subkey: .pyw; ValueType: string; ValueName: Content Type; ValueData: text/plain; Flags: uninsdeletevalue
+Tasks: extensions; Root: HKCR; Subkey: Python NoConFile; ValueType: string; ValueName: ; ValueData: Python File (no console); Flags: uninsdeletekey
+Tasks: extensions; Root: HKCR; Subkey: Python NoConFile\DefaultIcon; ValueType: string; ValueName: ; ValueData: {app}\Py.ico
+Tasks: extensions; Root: HKCR; Subkey: Python NoConFile\shell\open\command; ValueType: string; ValueName: ; ValueData: """{app}\pythonw.exe"" ""%1"" %*"
+
+
+; Python Registry Keys
+Root: HKLM; Subkey: SOFTWARE\Python; Flags: uninsdeletekeyifempty; Check: IsAdminLoggedOn
+Root: HKLM; Subkey: SOFTWARE\Python\PythonCore; Flags: uninsdeletekeyifempty
+Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2; Flags: uninsdeletekeyifempty
+Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\PythonPath; ValueData: "{app}\Lib;{app}\DLLs"; Flags: uninsdeletekeyifempty
+Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\PythonPath\tk; ValueData: {app}\Lib\lib-tk; Flags: uninsdeletekey; Components: tk
+Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\PythonPath\win32; ValueData: "{app}\lib\site-packages\win32;{app}\lib\site-packages\win32\lib"; Flags: uninsdeletekey
+Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\PythonPath\win32com; ValueData: C:\Python\lib\site-packages; Flags: uninsdeletekey
+Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\Modules; Flags: uninsdeletekeyifempty
+Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\Modules\pythoncom; ValueData: {sys}\pythoncom22.dll; Flags: uninsdeletekey
+Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\Modules\pywintypes; ValueData: {sys}\PyWinTypes22.dll; Flags: uninsdeletekey
+Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\InstallPath; ValueData: {app}; Flags: uninsdeletekeyifempty; ValueType: string
+Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\InstallPath\InstallGroup; ValueData: {group}; Flags: uninsdeletekey
+Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\Help; Flags: uninsdeletekeyifempty
+Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\Help\Main Python Documentation; ValueType: string; ValueData: {app}\Doc\index.html; Flags: uninsdeletekey; Components: docs
+Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\Help\Python Win32 Documentation; ValueType: string; ValueData: {app}\lib\site-packages\PyWin32.chm; Flags: uninsdeletekey; Components: docs
+
+[_ISTool]
+EnableISX=true
+
+
+[Code]
+Program Setup;
+
+Function IsAdminNotLoggedOn(): Boolean;
+begin
+ Result := Not IsAdminLoggedOn();
+end;
+
+begin
+end.
+
+
+
+
+[UninstallDelete]
+Name: {app}\Lib\compiler\*.pyc; Type: files
+Name: {app}\Lib\compiler\*.pyo; Type: files
+Name: {app}\Lib\compiler; Type: dirifempty
+Name: {app}\Lib\distutils\command\*.pyc; Type: files
+Name: {app}\Lib\distutils\command\*.pyo; Type: files
+Name: {app}\Lib\distutils\command; Type: dirifempty
+Name: {app}\Lib\distutils\*.pyc; Type: files
+Name: {app}\Lib\distutils\*.pyo; Type: files
+Name: {app}\Lib\distutils; Type: dirifempty
+Name: {app}\Lib\email\test\*.pyc; Type: files
+Name: {app}\Lib\email\test\*.pyo; Type: files
+Name: {app}\Lib\email\test; Type: dirifempty
+Name: {app}\Lib\email\*.pyc; Type: files
+Name: {app}\Lib\email\*.pyo; Type: files
+Name: {app}\Lib\email; Type: dirifempty
+Name: {app}\Lib\encodings\*.pyc; Type: files
+Name: {app}\Lib\encodings\*.pyo; Type: files
+Name: {app}\Lib\encodings; Type: dirifempty
+Name: {app}\Lib\hotshot\*.pyc; Type: files
+Name: {app}\Lib\hotshot\*.pyo; Type: files
+Name: {app}\Lib\hotshot; Type: dirifempty
+Name: {app}\Lib\lib-old\*.pyc; Type: files
+Name: {app}\Lib\lib-old\*.pyo; Type: files
+Name: {app}\Lib\lib-old; Type: dirifempty
+Name: {app}\Lib\lib-tk\*.pyc; Type: files
+Name: {app}\Lib\lib-tk\*.pyo; Type: files
+Name: {app}\Lib\lib-tk; Type: dirifempty
+Name: {app}\Lib\test\*.pyc; Type: files
+Name: {app}\Lib\test\*.pyo; Type: files
+Name: {app}\Lib\test; Type: dirifempty
+Name: {app}\Lib\xml\dom\*.pyc; Type: files
+Name: {app}\Lib\xml\dom\*.pyo; Type: files
+Name: {app}\Lib\xml\dom; Type: dirifempty
+Name: {app}\Lib\xml\parsers\*.pyc; Type: files
+Name: {app}\Lib\xml\parsers\*.pyo; Type: files
+Name: {app}\Lib\xml\parsers; Type: dirifempty
+Name: {app}\Lib\xml\sax\*.pyc; Type: files
+Name: {app}\Lib\xml\sax\*.pyo; Type: files
+Name: {app}\Lib\xml\sax; Type: dirifempty
+Name: {app}\Lib\xml\*.pyc; Type: files
+Name: {app}\Lib\xml\*.pyo; Type: files
+Name: {app}\Lib\xml; Type: dirifempty
+
+Name: {app}\Lib\site-packages\win32; Type: filesandordirs
+Name: {app}\Lib\site-packages\win32com; Type: filesandordirs
+Name: {app}\Lib\site-packages\win32comext; Type: filesandordirs
+Name: {app}\Lib\site-packages\pythoncom.py*; Type: files
+Name: {app}\Lib\site-packages; Type: dirifempty
+
+Name: {app}\Lib\*.pyc; Type: files
+Name: {app}\Lib; Type: dirifempty
+
+Name: {app}\Tools\pynche\*.pyc; Type: files
+Name: {app}\Tools\pynche\*.pyo; Type: files
+Name: {app}\Tools\pynche; Type: dirifempty
+
+Name: {app}\Tools\idle\*.pyc; Type: files
+Name: {app}\Tools\idle\*.pyo; Type: files
+Name: {app}\Tools\idle; Type: dirifempty
+
+Name: {app}\Tools\scripts\*.pyc; Type: files
+Name: {app}\Tools\scripts\*.pyo; Type: files
+Name: {app}\Tools\scripts; Type: dirifempty
+
+Name: {app}\Tools\versioncheck\*.pyc; Type: files
+Name: {app}\Tools\versioncheck\*.pyo; Type: files
+Name: {app}\Tools\versioncheck; Type: dirifempty
+
+Name: {app}\Tools\webchecker\*.pyc; Type: files
+Name: {app}\Tools\webchecker\*.pyo; Type: files
+Name: {app}\Tools\webchecker; Type: dirifempty
+
+Name: {app}\Tools; Type: dirifempty
+
diff --git a/PC/VS7.1/python.vcproj b/PC/VS7.1/python.vcproj
new file mode 100644
index 0000000..b3f046f
--- /dev/null
+++ b/PC/VS7.1/python.vcproj
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="python"
+ SccProjectName="python"
+ SccLocalPath="..">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-release\python"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile=".\./python.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./python.pdb"
+ SubSystem="1"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-debug\python"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ BrowseInformation="1"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="./python_d.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./python_d.pdb"
+ SubSystem="1"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\Include"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseItanium|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\ia64-temp-release\python"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_ITANIUM /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:IA64 /USELINK:MS_SDK /VSEXTCOMP_VERBOSE"
+ OutputFile=".\./python.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./python.pdb"
+ SubSystem="1"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseAMD64|Win32"
+ OutputDirectory="."
+ IntermediateDirectory="amd64-temp-release\python"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_OPTERON"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:AMD64 /USELINK:MS_SDK"
+ OutputFile=".\./python.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./python.pdb"
+ SubSystem="1"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\PC\pycon.ico">
+ </File>
+ <File
+ RelativePath="..\..\Modules\python.c">
+ </File>
+ <File
+ RelativePath="..\..\PC\python_exe.rc">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS7.1/python20.wse b/PC/VS7.1/python20.wse
new file mode 100644
index 0000000..fa11af4
--- /dev/null
+++ b/PC/VS7.1/python20.wse
@@ -0,0 +1,3135 @@
+Document Type: WSE
+item: Global
+ Version=9.0
+ Title=Python 2.4a1
+ Flags=00010100
+ Languages=65 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ Japanese Font Name=MS Gothic
+ Japanese Font Size=10
+ Start Gradient=0 255 0
+ End Gradient=0 128 0
+ Windows Flags=00000100000011010010010100001010
+ Log Pathname=%MAINDIR%\INSTALL.LOG
+ Message Font=MS Sans Serif
+ Font Size=8
+ Pages Modified=00010000011101000000000100000111
+ Extra Pages=00000000000000000000000010110010
+ Disk Filename=SETUP
+ Patch Flags=0000000000001001
+ Patch Threshold=85
+ Patch Memory=4000
+ MIF PDF Version=1.0
+ MIF SMS Version=2.0
+ EXE Filename=Python-2.4a1.exe
+ Dialogs Version=8
+ Version File=2.4a1
+ Version Description=Python Programming Language
+ Version Copyright=©2001-2007 Python Software Foundation
+ Version Company=Python Software Foundation
+ Crystal Format=10111100101100000010001001001001
+ Step View=&All
+ Variable Name1=_WISE_
+ Variable Description1=WISE root directory
+ Variable Default1=C:\Programme\Wise Installation System
+ Variable Flags1=00001000
+ Variable Name2=_TCLDIR_
+ Variable Description2=The directory in which the Tcl/Tk installation
+ Variable Description2=lives. This must be a sibling of the Python
+ Variable Description2=directory.
+ Variable Default2=tcl84
+ Variable Flags2=00001000
+ Variable Name3=_DOC_
+ Variable Description3=The unpacked HTML doc directory.
+ Variable Default3=..\html
+ Variable Flags3=00001001
+ Variable Name4=_SYS_
+ Variable Description4=System directory (where to find MSVCRT.DLL)
+ Variable Default4=C:\Windows\System
+ Variable Values4=C:\Windows\System
+ Variable Values4=C:\WINNT\System32
+ Variable Values4=C:\Code\MSDLLs
+ Variable Values4=C:\Windows\System32
+ Variable Flags4=00000010
+ Variable Name5=_PYMAJOR_
+ Variable Description5=Python major version number; the 2 in 2.3.
+ Variable Default5=2
+ Variable Flags5=00001000
+ Variable Name6=_PYMINOR_
+ Variable Description6=Python minor version number; the 3 in 2.3
+ Variable Default6=3
+ Variable Flags6=00001000
+ Variable Name7=_DOADMIN_
+ Variable Description7=The initial value for %DOADMIN%.
+ Variable Description7=When 0, we never try to write under HKLM,
+ Variable Description7=and install the Python + MS runtime DLLs in
+ Variable Description7=the Python directory instead of the system dir.
+ Variable Default7=1
+ Variable Values7=1
+ Variable Values7=0
+ Variable Flags7=00001010
+ Variable Name8=_ALIASNAME_
+ Variable Flags8=00001000
+ Variable Name9=_ALIASPATH_
+ Variable Flags9=00001000
+ Variable Name10=_ALIASTYPE_
+ Variable Flags10=00001000
+end
+item: Set Variable
+ Variable=PYVER_STRING
+ Value=2.3
+end
+item: Remark
+end
+item: Remark
+ Text=When the version number changes, set the compiler
+end
+item: Remark
+ Text=vrbls _PYMAJOR_ and _PYMINOR_.
+end
+item: Remark
+ Text=Nothing in the script below should need fiddling then.
+end
+item: Remark
+ Text=Other things that need fiddling:
+end
+item: Remark
+ Text= PYVER_STRING above.
+end
+item: Remark
+ Text= The "Title:" in the upper left corner of the GUI.
+end
+item: Remark
+ Text= Build Settings and Version Resource on step 6 (Finish) of the Installation Expert
+end
+item: Remark
+ Text= Be sure to select Steps->All or you may not see these!
+end
+item: Remark
+end
+item: Remark
+ Text=When the version of Tcl/Tk changes, the compiler vrbl
+end
+item: Remark
+ Text=_TCLDIR_ may also need to be changed.
+end
+item: Remark
+end
+item: Set Variable
+ Variable=APPTITLE
+ Value=Python %PYVER_STRING%
+end
+item: Remark
+ Text=PY_VERSION should be major.minor only; used to create the registry key; must match MS_DLL_ID in python_nt.rc
+end
+item: Set Variable
+ Variable=PY_VERSION
+ Value=%_PYMAJOR_%.%_PYMINOR_%
+end
+item: Remark
+ Text=GROUP is the Start menu group name; user can override.
+end
+item: Set Variable
+ Variable=GROUP
+ Value=Python %PY_VERSION%
+ Flags=10000000
+end
+item: Remark
+ Text=MAINDIR is the app directory; user can override.
+end
+item: Set Variable
+ Variable=MAINDIR
+ Value=Python%_PYMAJOR_%%_PYMINOR_%
+end
+item: Remark
+end
+item: Set Variable
+ Variable=DOADMIN
+ Value=%_DOADMIN_%
+end
+item: Remark
+ Text=Give non-admin users a chance to abort.
+end
+item: Check Configuration
+ Flags=10011111
+end
+item: Set Variable
+ Variable=DOADMIN
+ Value=0
+end
+item: Display Message
+ Title=Doing non-admin install
+ Text=The current login does not have Administrator Privileges on this machine. Python will install its registry information into the per-user area only for the current login, instead of into the per-machine area for every account on this machine. Some advanced uses of Python may not work as a result (for example, running a Python script as a service).
+ Text=
+ Text=If this is not what you want, please click Cancel to abort this installation, log on as an Administrator, and start the installation again.
+ Flags=00001000
+end
+item: End Block
+end
+item: Remark
+end
+item: Remark
+ Text=BEGIN WIZARD STUFF -----------------------------------------------------------------------------------------------------------------------------
+end
+item: Remark
+ Text=Note from Tim: the "stop" on the next line is actually "pause".
+end
+item: Open/Close INSTALL.LOG
+ Flags=00000001
+end
+item: Remark
+ Text=If the destination system does not have a writable Windows\System directory, system files will be written to the Windows\ directory
+end
+item: Check if File/Dir Exists
+ Pathname=%SYS%
+ Flags=10000100
+end
+item: Set Variable
+ Variable=SYS
+ Value=%WIN%
+end
+item: End Block
+end
+item: Check Configuration
+ Flags=10111011
+end
+item: Get Registry Key Value
+ Variable=COMMON
+ Key=SOFTWARE\Microsoft\Windows\CurrentVersion
+ Default=C:\Program Files\Common Files
+ Value Name=CommonFilesDir
+ Flags=00000100
+end
+item: Get Registry Key Value
+ Variable=PROGRAM_FILES
+ Key=SOFTWARE\Microsoft\Windows\CurrentVersion
+ Default=C:\Program Files
+ Value Name=ProgramFilesDir
+ Flags=00000100
+end
+item: Set Variable
+ Variable=EXPLORER
+ Value=1
+end
+item: End Block
+end
+item: Remark
+ Text=Note from Tim: The Wizard hardcod "C:" at the start of the replacement text for MAINDIR.
+end
+item: Remark
+ Text=That's not appropriate if the system drive doesn't happen to be C:.
+end
+item: Remark
+ Text=I removed the "C:", and that did the right thing for two people who tested it on non-C: machines,
+end
+item: Remark
+ Text=but it's unclear whether it will always do the right thing.
+end
+item: Set Variable
+ Variable=MAINDIR
+ Value=\%MAINDIR%
+ Flags=00001100
+end
+item: Remark
+ Text=BACKUP is the variable that holds the path that all backup files will be copied to when overwritten
+end
+item: Set Variable
+ Variable=BACKUP
+ Value=%MAINDIR%\BACKUP
+ Flags=10000000
+end
+item: Remark
+ Text=DOBACKUP determines if a backup will be performed. The possible values are A (do backup) or B (do not do backup)
+end
+item: Set Variable
+ Variable=DOBACKUP
+ Value=A
+end
+item: Remark
+ Text=BRANDING determines if the installation will be branded with a name and company. By default, this is written to the INST directory (installation media).
+end
+item: Set Variable
+ Variable=BRANDING
+ Value=0
+end
+item: If/While Statement
+ Variable=BRANDING
+ Value=1
+end
+item: Read INI Value
+ Variable=NAME
+ Pathname=%INST%\CUSTDATA.INI
+ Section=Registration
+ Item=Name
+end
+item: Read INI Value
+ Variable=COMPANY
+ Pathname=%INST%\CUSTDATA.INI
+ Section=Registration
+ Item=Company
+end
+item: If/While Statement
+ Variable=NAME
+end
+item: Set Variable
+ Variable=DOBRAND
+ Value=1
+end
+item: Get System Information
+ Variable=NAME
+ Flags=00000110
+end
+item: Get System Information
+ Variable=COMPANY
+ Flags=00000111
+end
+item: End Block
+end
+item: End Block
+end
+item: Remark
+ Text=END WIZARD STUFF -----------------------------------------------------------------------------------------------------------------------------
+end
+item: Remark
+end
+item: Remark
+ Text=Set vrbls for the "Advanced Options" subdialog of Components.
+end
+item: Set Variable
+ Variable=SELECT_ADMIN
+ Value=A
+end
+item: If/While Statement
+ Variable=DOADMIN
+ Value=0
+end
+item: Set Variable
+ Variable=SELECT_ADMIN
+ Value=B
+end
+item: End Block
+end
+item: Remark
+end
+item: Remark
+ Text=TASKS values:
+end
+item: Remark
+ Text=A: Register file extensions
+end
+item: Remark
+ Text=B: Create Start Menu shortcuts
+end
+item: Set Variable
+ Variable=TASKS
+ Value=AB
+end
+item: Remark
+end
+item: Remark
+ Text=COMPONENTS values:
+end
+item: Remark
+ Text=A: interpreter and libraries
+end
+item: Remark
+ Text=B: Tcl/Tk
+end
+item: Remark
+ Text=C: docs
+end
+item: Remark
+ Text=D: tools
+end
+item: Remark
+ Text=E: test suite
+end
+item: Set Variable
+ Variable=COMPONENTS
+ Value=ABCDE
+end
+item: Remark
+end
+item: Remark
+ Text=March thru the user GUI.
+end
+item: Wizard Block
+ Direction Variable=DIRECTION
+ Display Variable=DISPLAY
+ Bitmap Pathname=.\installer.bmp
+ X Position=9
+ Y Position=10
+ Filler Color=11173759
+ Dialog=Select Destination Directory
+ Dialog=Backup Replaced Files
+ Dialog=Select Components
+ Dialog=Select Program Manager Group
+ Variable=
+ Variable=
+ Variable=
+ Variable=TASKS
+ Value=
+ Value=
+ Value=
+ Value=B
+ Compare=0
+ Compare=0
+ Compare=0
+ Compare=3
+ Flags=00000011
+end
+item: If/While Statement
+ Variable=DISPLAY
+ Value=Start Installation
+end
+item: Set Variable
+ Variable=SUMMARY
+ Value=Install directory: %MAINDIR%%CRLF%
+end
+item: Remark
+end
+item: If/While Statement
+ Variable=SELECT_ADMIN
+ Value=A
+end
+item: Set Variable
+ Variable=SUMMARY
+ Value=%CRLF%Doing admin install.%CRLF%
+ Flags=00000001
+end
+item: Else Statement
+end
+item: Set Variable
+ Variable=SUMMARY
+ Value=%CRLF%Doing non-admin install.%CRLF%
+ Flags=00000001
+end
+item: End Block
+end
+item: Remark
+end
+item: If/While Statement
+ Variable=DOBACKUP
+ Value=A
+end
+item: Set Variable
+ Variable=SUMMARY
+ Value=%CRLF%Make backups, into %BACKUP%%CRLF%
+ Flags=00000001
+end
+item: Else Statement
+end
+item: Set Variable
+ Variable=SUMMARY
+ Value=%CRLF%Don't make backups.%CRLF%
+ Flags=00000001
+end
+item: End Block
+end
+item: Remark
+end
+item: Set Variable
+ Variable=SUMMARY
+ Value=%CRLF%Components:%CRLF%
+ Flags=00000001
+end
+item: If/While Statement
+ Variable=COMPONENTS
+ Value=A
+ Flags=00000010
+end
+item: Set Variable
+ Variable=SUMMARY
+ Value= Python interpreter and libraries%CRLF%
+ Flags=00000001
+end
+item: End Block
+end
+item: If/While Statement
+ Variable=COMPONENTS
+ Value=B
+ Flags=00000010
+end
+item: Set Variable
+ Variable=SUMMARY
+ Value= Tcl/Tk (Tkinter, IDLE, pydoc)%CRLF%
+ Flags=00000001
+end
+item: End Block
+end
+item: If/While Statement
+ Variable=COMPONENTS
+ Value=C
+ Flags=00000010
+end
+item: Set Variable
+ Variable=SUMMARY
+ Value= Python documentation%CRLF%
+ Flags=00000001
+end
+item: End Block
+end
+item: If/While Statement
+ Variable=COMPONENTS
+ Value=D
+ Flags=00000010
+end
+item: Set Variable
+ Variable=SUMMARY
+ Value= Tool and utility scripts%CRLF%
+ Flags=00000001
+end
+item: End Block
+end
+item: If/While Statement
+ Variable=COMPONENTS
+ Value=E
+ Flags=00000010
+end
+item: Set Variable
+ Variable=SUMMARY
+ Value= Python test suite%CRLF%
+ Flags=00000001
+end
+item: End Block
+end
+item: Remark
+end
+item: If/While Statement
+ Variable=TASKS
+ Value=A
+ Flags=00000010
+end
+item: Set Variable
+ Variable=SUMMARY
+ Value=%CRLF%Register file extensions.%CRLF%
+ Flags=00000001
+end
+item: Else Statement
+end
+item: Set Variable
+ Variable=SUMMARY
+ Value=%CRLF%Don't register file extensions.%CRLF%
+ Flags=00000001
+end
+item: End Block
+end
+item: Remark
+end
+item: If/While Statement
+ Variable=TASKS
+ Value=B
+ Flags=00000010
+end
+item: Set Variable
+ Variable=SUMMARY
+ Value=%CRLF%Start Menu group: %GROUP%%CRLF%
+ Flags=00000001
+end
+item: Else Statement
+end
+item: Set Variable
+ Variable=SUMMARY
+ Value=%CRLF%No Start Menu shortcuts.%CRLF%
+ Flags=00000001
+end
+item: End Block
+end
+item: End Block
+end
+item: Remark
+end
+item: Custom Dialog Set
+ Name=Select Destination Directory
+ Display Variable=DISPLAY
+ item: Dialog
+ Title=%APPTITLE% Installation
+ Title French=Installation de %APPTITLE%
+ Title German=Installation von %APPTITLE%
+ Title Spanish=Instalación de %APPTITLE%
+ Title Italian=Installazione di %APPTITLE%
+ Width=339
+ Height=280
+ Font Name=Helv
+ Font Size=8
+ item: Push Button
+ Rectangle=188 234 244 253
+ Variable=DIRECTION
+ Value=N
+ Create Flags=01010000000000010000000000000001
+ Text=&Next >
+ Text French=&Suite >
+ Text German=&Weiter >
+ Text Spanish=&Siguiente >
+ Text Italian=&Avanti >
+ end
+ item: Push Button
+ Rectangle=264 234 320 253
+ Action=3
+ Create Flags=01010000000000010000000000000000
+ Text=&Cancel
+ Text French=&Annuler
+ Text German=&Abbrechen
+ Text Spanish=&Cancelar
+ Text Italian=&Annulla
+ end
+ item: Static
+ Rectangle=10 225 320 226
+ Action=3
+ Create Flags=01010000000000000000000000000111
+ end
+ item: Static
+ Rectangle=108 11 323 33
+ Create Flags=01010000000000000000000000000000
+ Flags=0000000000000001
+ Name=Times New Roman
+ Font Style=-24 0 0 0 700 255 0 0 0 3 2 1 18
+ Text=Select Destination Directory
+ Text French=Sélectionner le répertoire de destination
+ Text German=Zielverzeichnis wählen
+ Text Spanish=Seleccione el directorio de destino
+ Text Italian=Selezionare Directory di destinazione
+ end
+ item: Listbox
+ Rectangle=108 58 321 219
+ Variable=MAINDIR
+ Enabled Color=00000000000000001111111111111111
+ Create Flags=01010000100000010000000101000001
+ Flags=0000110000001010
+ Text=%MAINDIR%
+ Text=
+ end
+ item: Static
+ Rectangle=108 40 313 58
+ Enabled Color=00000000000000001111111111111111
+ Create Flags=01010000000000000000000000000000
+ Text=Please select a directory for the %APPTITLE% files.
+ end
+ end
+ item: Dialog
+ Title=Select Destination Directory
+ Title French=Sélectionner le répertoire de destination
+ Title German=Zielverzeichnis wählen
+ Title Spanish=Seleccione el directorio de destino
+ Title Italian=Selezionare Directory di destinazione
+ Width=276
+ Height=216
+ Font Name=Helv
+ Font Size=8
+ item: Listbox
+ Rectangle=6 6 204 186
+ Variable=MAINDIR
+ Create Flags=01010000100000010000000101000000
+ Flags=0000110000100010
+ Text=%MAINDIR%
+ Text French=%MAINDIR%
+ Text German=%MAINDIR%
+ Text Spanish=%MAINDIR%
+ Text Italian=%MAINDIR%
+ end
+ item: Push Button
+ Rectangle=209 8 265 26
+ Create Flags=01010000000000010000000000000001
+ Text=OK
+ Text French=OK
+ Text German=OK
+ Text Spanish=Aceptar
+ Text Italian=OK
+ end
+ item: Push Button
+ Rectangle=209 31 265 50
+ Variable=MAINDIR
+ Value=%MAINDIR_SAVE%
+ Create Flags=01010000000000010000000000000000
+ Flags=0000000000000001
+ Text=Cancel
+ Text French=Annuler
+ Text German=Abbrechen
+ Text Spanish=Cancelar
+ Text Italian=Annulla
+ end
+ end
+end
+item: Custom Dialog Set
+ Name=Backup Replaced Files
+ Display Variable=DISPLAY
+ item: Dialog
+ Title=%APPTITLE% Installation
+ Title French=Fichiers de Sauvegarde Remplacés
+ Title German=Sicherungskopie von ersetzten Dateien erstellen
+ Title Portuguese=Ficheiros substituídos de segurança
+ Title Spanish=Copias de seguridad de los archivos reemplazados
+ Title Italian=Backup file sostituiti
+ Title Danish=Sikkerhedskopiering af erstattede filer
+ Title Dutch=Vervangen bestanden kopiëren
+ Title Norwegian=Sikkerhetskopiere erstattede filer
+ Title Swedish=Säkerhetskopiera utbytta filer
+ Width=350
+ Height=280
+ Font Name=Helv
+ Font Size=8
+ item: Push Button
+ Rectangle=188 234 244 251
+ Variable=DIRECTION
+ Value=N
+ Create Flags=01010000000000010000000000000001
+ Text=&Next >
+ Text French=&Suivant>
+ Text German=&Weiter>
+ Text Portuguese=&Próximo>
+ Text Spanish=&Siguiente >
+ Text Italian=&Avanti >
+ Text Danish=&Næste>
+ Text Dutch=&Volgende>
+ Text Norwegian=&Neste>
+ Text Swedish=&Nästa >
+ end
+ item: Push Button
+ Rectangle=131 234 188 251
+ Variable=DIRECTION
+ Value=B
+ Create Flags=01010000000000010000000000000000
+ Text=< &Back
+ Text French=<&Retour
+ Text German=<&Zurück
+ Text Portuguese=<&Retornar
+ Text Spanish=<&Retroceder
+ Text Italian=< &Indietro
+ Text Danish=<&Tilbage
+ Text Dutch=<&Terug
+ Text Norwegian=<&Tilbake
+ Text Swedish=< &Tillbaka
+ end
+ item: Push Button
+ Rectangle=278 234 330 251
+ Action=3
+ Create Flags=01010000000000010000000000000000
+ Text=Cancel
+ Text French=Annuler
+ Text German=Abbrechen
+ Text Portuguese=Cancelar
+ Text Spanish=Cancelar
+ Text Italian=Annulla
+ Text Danish=Annuller
+ Text Dutch=Annuleren
+ Text Norwegian=Avbryt
+ Text Swedish=Avbryt
+ end
+ item: Static
+ Rectangle=11 221 329 223
+ Action=3
+ Create Flags=01010000000000000000000000000111
+ end
+ item: Static
+ Rectangle=108 46 320 98
+ Create Flags=01010000000000000000000000000000
+ Text=This installation program can create backup copies of all files replaced during the installation. These files will be used when the software is uninstalled and a rollback is requested. If backup copies are not created, you will only be able to uninstall the software and not roll the system back to a previous state.
+ Text=
+ Text=Do you want to create backups of replaced files?
+ Text French=Le programme d'installation peut créer des copies de sauvegarde de tous les fichiers remplacés pendant l'installation. Ces fichiers sont utilisés au cas où le logiciel est désinstallé et que l'on procède à la reprise du système. Si les copies de sauvegarde ne sont pas créées, on ne pourra que désinstaller le logiciel sans reprendre le système à un état précédent. Voulez-vous créer une sauvegarde des fichiers remplacés ?
+ Text German=Dieses Installationsprogramm kann Sicherungskopien von allen während der Installation ersetzten Dateien erstellen. Diese Dateien werden zur Rückgängigmachung der Installation und bei Anforderung eines Rollbacks verwendet. Ohne Sicherungskopien ist nur eine Rückgängigmachung der Installation möglich, nicht aber ein Rollback des Systems. Sicherungskopien der ersetzten Dateien erstellen?
+ Text Portuguese=Este programa de instalação pode criar cópias de segurança de todos os ficheiros substituídos durante a instalação. Estes ficheiros serão utilizados quando o programa for desinstalado e for requisitada uma retomada. Se as cópias de segurança não forem criadas, só poderá desinstalar o programa e não pode retomar um estado anterior do sistema. Deseja criar cópias de segurança dos ficheiros substituídos?
+ Text Spanish=Este programa de instalación puede crear copias de seguridad de todos los archivos reemplazados durante la instalación. Estos archivos se utilizarán cuando se desinstale el software y se solicite volver al estado anterior. Si no se crean copias de seguridad, únicamente podrá desinstalar el software y no podrá devolver el sistema al estado anterior. ¿Desea crear archivos de seguridad de los archivos reemplazados?
+ Text Italian=Questo programma di installazione può creare copie di backup di tutti i file sostituiti durante l’installazione. Questi file saranno usati quando il software sarà disinstallato e sarà richiesto un ritorno allo stato precedente. Se non crei le copie di backup, potrai solo disinstallare il software, ma non potrai riportare il sistema allo stato precedente. Vuoi creare i file di backup dei file sostituiti?
+ Text Danish=Dette installationsprogram kan oprette sikkerhedskopier af alle filer, som erstattes under installationen. Disse filer benyttes, når softwaren fjernes, og den tidligere systemkonfiguration genetableres. Hvis der ikke oprettes sikkerhedskopier, kan du kun fjerne den installerede software og ikke genetablere den tidligere systemkonfiguration. Vil du oprette sikkerhedskopier af filer, som erstattes?
+ Text Dutch=Dit installatieprogramma kan kopieën maken van alle bestanden die tijdens de installatie worden vervangen. Deze worden dan gebruikt als de software-installatie ongedaan wordt gemaakt en u het systeem wilt laten terugkeren naar de oorspronkelijke staat. Als er geen back-up kopieën worden gemaakt, kunt u de software enkel verwijderen maar het systeem niet in de oorspronkelijke staat terugbrengen. Wilt u een back-up maken van de vervangen bestanden?
+ Text Norwegian=Dette installasjonsprogrammet kan lage sikkerhetskopier av alle filer som blir erstattet under installasjonen. Disse filene vil tas i bruk når programvaren er avinstallert og det er behov for tilbakestilling. Hvis det ikke er laget sikkerhetskopier, kan du kun avinstallere programvaren og ikke stille systemet tilbake til tidligere status. Ønsker du å lage sikkerhetskopier av de filene som blir erstattet nå?
+ Text Swedish=Installationsprogrammet kan skapa säkerhetskopior av alla filer som byts ut under installationen. Dessa filer kan sedan användas när programvaran avinstalleras och du begär rollback. Om du då inte har några säkerhetskopior kan du bara avinstallera programvaran, inte återskapa systemet i dess tidigare skick. Vill du göra säkerhetskopior av de ersatta filerna?
+ end
+ item: Radio Button
+ Rectangle=141 106 265 136
+ Variable=DOBACKUP
+ Create Flags=01010000000000010000000000001001
+ Text=&Yes, make backups
+ Text=N&o, do not make backups
+ Text=
+ Text French=&Oui
+ Text French=N&on
+ Text French=
+ Text German=&Ja
+ Text German=N&ein
+ Text German=
+ Text Portuguese=&Sim
+ Text Portuguese=Nã&o
+ Text Portuguese=
+ Text Spanish=&Sí
+ Text Spanish=N&o
+ Text Spanish=
+ Text Italian=&Sì
+ Text Italian=N&o
+ Text Italian=
+ Text Danish=&Ja
+ Text Danish=&Nej
+ Text Danish=
+ Text Dutch=&Ja
+ Text Dutch=N&ee
+ Text Dutch=
+ Text Norwegian=&Ja
+ Text Norwegian=&Nei
+ Text Norwegian=
+ Text Swedish=&Ja
+ Text Swedish=N&ej
+ Text Swedish=
+ end
+ item: Static
+ Control Name=BACK2
+ Rectangle=108 173 320 208
+ Action=1
+ Create Flags=01010000000000000000000000000111
+ Text=Backup File Destination Directory
+ Text French=Répertoire de destination des fichiers de sauvegarde
+ Text German=Zielverzeichnis für die Sicherungsdatei
+ Text Portuguese=Directório de destino de ficheiro de segurança
+ Text Spanish=Directorio de Destino de los Archivos de Seguridad
+ Text Italian=Directory di destinazione dei file di backup
+ Text Danish=Destinationsbibliotek til sikkerhedskopier
+ Text Dutch=Doeldirectory backup-bestand
+ Text Norwegian=Målkatalog for sikkerhetskopier
+ Text Swedish=Katalog för säkerhetskopierade filer
+ end
+ item: Push Button
+ Control Name=BACK3
+ Rectangle=265 185 318 203
+ Variable=BACKUP_SAVE
+ Value=%BACKUP%
+ Destination Dialog=1
+ Action=2
+ Create Flags=01010000000000010000000000000000
+ Text=B&rowse...
+ Text French=P&arcourir
+ Text German=B&lättern...
+ Text Portuguese=P&rocurar
+ Text Spanish=V&isualizar...
+ Text Italian=Sfoglia...
+ Text Danish=&Gennemse...
+ Text Dutch=B&laderen...
+ Text Norwegian=Bla igjennom
+ Text Swedish=&Bläddra
+ end
+ item: Static
+ Control Name=BACK4
+ Rectangle=129 188 254 200
+ Destination Dialog=2
+ Create Flags=01010000000000000000000000000000
+ Text=%BACKUP%
+ Text French=%BACKUP%
+ Text German=%BACKUP%
+ Text Portuguese=%BACKUP%
+ Text Spanish=%BACKUP%
+ Text Italian=%BACKUP%
+ Text Danish=%BACKUP%
+ Text Dutch=%BACKUP%
+ Text Norwegian=%BACKUP%
+ Text Swedish=%BACKUP%
+ end
+ item: Static
+ Rectangle=108 11 323 36
+ Create Flags=01010000000000000000000000000000
+ Flags=0000000000000001
+ Name=Times New Roman
+ Font Style=-24 0 0 0 700 255 0 0 0 3 2 1 18
+ Text=Backup Replaced Files
+ Text French=Sélectionner les composants
+ Text German=Komponenten auswählen
+ Text Spanish=Seleccione componentes
+ Text Italian=Selezionare i componenti
+ end
+ item: If/While Statement
+ Variable=DOBACKUP
+ Value=B
+ end
+ item: Set Control Attribute
+ Control Name=BACK3
+ Operation=1
+ end
+ item: Set Control Attribute
+ Control Name=BACK4
+ Operation=1
+ end
+ item: Else Statement
+ end
+ item: Set Control Attribute
+ Control Name=BACK3
+ end
+ item: Set Control Attribute
+ Control Name=BACK4
+ end
+ item: End Block
+ end
+ end
+ item: Dialog
+ Title=Select Destination Directory
+ Title French=Choisissez le répertoire de destination
+ Title German=Zielverzeichnis wählen
+ Title Portuguese=Seleccionar Directório de Destino
+ Title Spanish=Seleccione el Directorio de Destino
+ Title Italian=Seleziona Directory di destinazione
+ Title Danish=Vælg Destinationsbibliotek
+ Title Dutch=Kies Doeldirectory
+ Title Norwegian=Velg målkatalog
+ Title Swedish=Välj destinationskalatog
+ Width=276
+ Height=216
+ Font Name=Helv
+ Font Size=8
+ item: Listbox
+ Rectangle=6 3 200 186
+ Variable=BACKUP
+ Create Flags=01010000100000010000000101000000
+ Flags=0000110000100010
+ Text=%BACKUP%
+ Text=
+ Text French=%BACKUP%
+ Text French=
+ Text German=%BACKUP%
+ Text German=
+ Text Portuguese=%BACKUP%
+ Text Portuguese=
+ Text Spanish=%BACKUP%
+ Text Spanish=
+ Text Italian=%BACKUP%
+ Text Italian=
+ Text Danish=%BACKUP%
+ Text Danish=
+ Text Dutch=%BACKUP%
+ Text Dutch=
+ Text Norwegian=%BACKUP%
+ Text Norwegian=
+ Text Swedish=%BACKUP%
+ Text Swedish=
+ end
+ item: Push Button
+ Rectangle=209 8 265 26
+ Create Flags=01010000000000010000000000000001
+ Text=OK
+ Text French=OK
+ Text German=OK
+ Text Portuguese=OK
+ Text Spanish=ACEPTAR
+ Text Italian=OK
+ Text Danish=OK
+ Text Dutch=OK
+ Text Norwegian=OK
+ Text Swedish=OK
+ end
+ item: Push Button
+ Rectangle=209 31 265 50
+ Variable=BACKUP
+ Value=%BACKUP_SAVE%
+ Create Flags=01010000000000010000000000000000
+ Flags=0000000000000001
+ Text=Cancel
+ Text French=Annuler
+ Text German=Abbrechen
+ Text Portuguese=Cancelar
+ Text Spanish=Cancelar
+ Text Italian=Annulla
+ Text Danish=Slet
+ Text Dutch=Annuleren
+ Text Norwegian=Avbryt
+ Text Swedish=Avbryt
+ end
+ end
+end
+item: Custom Dialog Set
+ Name=Select Components
+ Display Variable=DISPLAY
+ item: Dialog
+ Title=%APPTITLE% Installation
+ Title French=Installation de %APPTITLE%
+ Title German=Installation von %APPTITLE%
+ Title Spanish=Instalación de %APPTITLE%
+ Title Italian=Installazione di %APPTITLE%
+ Width=339
+ Height=280
+ Font Name=Helv
+ Font Size=8
+ item: Push Button
+ Rectangle=188 234 244 253
+ Variable=DIRECTION
+ Value=N
+ Create Flags=01010000000000010000000000000001
+ Text=&Next >
+ Text French=&Suite >
+ Text German=&Weiter >
+ Text Spanish=&Siguiente >
+ Text Italian=&Avanti >
+ end
+ item: Push Button
+ Rectangle=131 234 188 253
+ Variable=DIRECTION
+ Value=B
+ Create Flags=01010000000000010000000000000000
+ Text=< &Back
+ Text French=< &Retour
+ Text German=< &Zurück
+ Text Spanish=< &Atrás
+ Text Italian=< &Indietro
+ end
+ item: Push Button
+ Rectangle=264 234 320 253
+ Action=3
+ Create Flags=01010000000000010000000000000000
+ Text=&Cancel
+ Text French=&Annuler
+ Text German=&Abbrechen
+ Text Spanish=&Cancelar
+ Text Italian=&Annulla
+ end
+ item: Checkbox
+ Rectangle=108 66 313 156
+ Variable=COMPONENTS
+ Create Flags=01010000000000010000000000000011
+ Flags=0000000000000110
+ Text=Python interpreter and libraries
+ Text=Tcl/Tk (Tkinter, IDLE, pydoc)
+ Text=Python HTML docs
+ Text=Python utility scripts (Tools/)
+ Text=Python test suite (Lib/test/)
+ Text=
+ Text French=Python interpreter, library and IDLE
+ Text French=Python HTML docs
+ Text French=Python utility scripts (Tools/)
+ Text French=Python test suite (Lib/test/)
+ Text French=
+ Text German=Python interpreter, library and IDLE
+ Text German=Python HTML docs
+ Text German=Python utility scripts (Tools/)
+ Text German=Python test suite (Lib/test/)
+ Text German=
+ Text Spanish=Python interpreter, library and IDLE
+ Text Spanish=Python HTML docs
+ Text Spanish=Python utility scripts (Tools/)
+ Text Spanish=Python test suite (Lib/test/)
+ Text Spanish=
+ Text Italian=Python interpreter, library and IDLE
+ Text Italian=Python HTML docs
+ Text Italian=Python utility scripts (Tools/)
+ Text Italian=Python test suite (Lib/test/)
+ Text Italian=
+ end
+ item: Static
+ Rectangle=108 45 320 63
+ Create Flags=01010000000000000000000000000000
+ Text=Choose which components to install by checking the boxes below.
+ Text French=Choisissez les composants que vous voulez installer en cochant les cases ci-dessous.
+ Text German=Wählen Sie die zu installierenden Komponenten, indem Sie in die entsprechenden Kästchen klicken.
+ Text Spanish=Elija los componentes que desee instalar marcando los cuadros de abajo.
+ Text Italian=Scegliere quali componenti installare selezionando le caselle sottostanti.
+ end
+ item: Push Button
+ Rectangle=188 203 269 220
+ Destination Dialog=1
+ Action=2
+ Enabled Color=00000000000000000000000011111111
+ Create Flags=01010000000000010000000000000000
+ Text=Advanced Options ...
+ end
+ item: Static
+ Rectangle=10 225 320 226
+ Action=3
+ Create Flags=01010000000000000000000000000111
+ end
+ item: Static
+ Rectangle=108 10 323 43
+ Create Flags=01010000000000000000000000000000
+ Flags=0000000000000001
+ Name=Times New Roman
+ Font Style=-24 0 0 0 700 255 0 0 0 3 2 1 18
+ Text=Select Components
+ Text French=Sélectionner les composants
+ Text German=Komponenten auswählen
+ Text Spanish=Seleccione componentes
+ Text Italian=Selezionare i componenti
+ end
+ item: Static
+ Rectangle=251 180 311 193
+ Variable=COMPONENTS
+ Value=MAINDIR
+ Create Flags=01010000000000000000000000000010
+ end
+ item: Static
+ Rectangle=251 168 311 179
+ Variable=COMPONENTS
+ Create Flags=01010000000000000000000000000010
+ end
+ item: Static
+ Rectangle=123 168 234 181
+ Create Flags=01010000000000000000000000000000
+ Text=Disk Space Required:
+ Text French=Espace disque requis :
+ Text German=Notwendiger Speicherplatz:
+ Text Spanish=Espacio requerido en el disco:
+ Text Italian=Spazio su disco necessario:
+ end
+ item: Static
+ Rectangle=123 180 234 193
+ Create Flags=01010000000000000000000000000000
+ Text=Disk Space Remaining:
+ Text French=Espace disque disponible :
+ Text German=Verbleibender Speicherplatz:
+ Text Spanish=Espacio en disco disponible:
+ Text Italian=Spazio su disco disponibile:
+ end
+ item: Static
+ Rectangle=108 158 320 196
+ Action=1
+ Create Flags=01010000000000000000000000000111
+ end
+ item: If/While Statement
+ Variable=DLG_EVENT_TYPE
+ Value=VERIFY
+ end
+ item: Remark
+ Text=If they're installing Tcl/Tk, Tools, or the test suite, doesn't make much sense unless they're installing Python too.
+ end
+ item: If/While Statement
+ Variable=COMPONENTS
+ Value=BDE
+ Flags=00001010
+ end
+ item: If/While Statement
+ Variable=COMPONENTS
+ Value=A
+ Flags=00000011
+ end
+ item: Display Message
+ Title=Are you sure?
+ Text=Installing Tcl/Tk, Tools or the test suite doesn't make much sense unless you install the Python interpreter and libraries too.
+ Text=
+ Text=Click Yes if that's really what you want.
+ Flags=00101101
+ end
+ item: Remark
+ Text=Nothing -- just proceed to the next dialog.
+ end
+ item: Else Statement
+ end
+ item: Remark
+ Text=Return to the dialog.
+ end
+ item: Set Variable
+ Variable=DLG_EVENT_TYPE
+ end
+ item: End Block
+ end
+ item: End Block
+ end
+ item: End Block
+ end
+ item: End Block
+ end
+ end
+ item: Dialog
+ Title=Advanced Options
+ Width=339
+ Height=213
+ Font Name=Helv
+ Font Size=8
+ item: Radio Button
+ Control Name=ADMIN2
+ Rectangle=11 46 90 76
+ Variable=SELECT_ADMIN
+ Enabled Color=00000000000000001111111111111111
+ Create Flags=01010000000000010000000000001001
+ Text=Admin install
+ Text=Non-Admin installl
+ Text=
+ end
+ item: Push Button
+ Rectangle=188 170 244 189
+ Variable=DIRECTION
+ Value=N
+ Create Flags=01010000000000010000000000000001
+ Text=OK
+ Text French=&Suite >
+ Text German=&Weiter >
+ Text Spanish=&Siguiente >
+ Text Italian=&Avanti >
+ end
+ item: Static
+ Rectangle=5 3 326 83
+ Action=1
+ Enabled Color=00000000000000001111111111111111
+ Create Flags=01010000000000000000000000000111
+ end
+ item: Static
+ Control Name=ADMIN1
+ Rectangle=11 11 321 45
+ Enabled Color=00000000000000001111111111111111
+ Create Flags=01010000000000000000000000000000
+ Text=By default, the install records settings in the per-machine area of the registry (HKLM), and installs the Python and C runtime DLLs to %SYS32%. Choose "Non-Admin install" if you would prefer settings made in the per-user registry (HKCU), and DLLs installed in %MAINDIR%.
+ end
+ item: Static
+ Rectangle=5 90 326 157
+ Action=1
+ Enabled Color=00000000000000001111111111111111
+ Create Flags=01010000000000000000000000000111
+ end
+ item: Checkbox
+ Rectangle=11 121 243 151
+ Variable=TASKS
+ Enabled Color=00000000000000001111111111111111
+ Create Flags=01010000000000010000000000000011
+ Text=Register file extensions (.py, .pyw, .pyc, .pyo)
+ Text=Create Start Menu shortcuts
+ Text=
+ end
+ item: Static
+ Rectangle=11 103 320 121
+ Enabled Color=00000000000000001111111111111111
+ Create Flags=01010000000000000000000000000000
+ Text=Choose tasks to perform by checking the boxes below.
+ end
+ item: If/While Statement
+ Variable=DLG_EVENT_TYPE
+ Value=INIT
+ end
+ item: If/While Statement
+ Variable=DOADMIN
+ Value=1
+ end
+ item: Set Control Attribute
+ Control Name=ADMIN2
+ end
+ item: Else Statement
+ end
+ item: Set Control Text
+ Control Name=ADMIN1
+ Control Text=This section is available only if logged in to an account with Administrator privileges.
+ end
+ item: Set Control Attribute
+ Control Name=ADMIN2
+ Operation=1
+ end
+ item: End Block
+ end
+ item: End Block
+ end
+ end
+end
+item: Custom Dialog Set
+ Name=Select Program Manager Group
+ Display Variable=DISPLAY
+ item: Dialog
+ Title=%APPTITLE% Installation
+ Title French=Installation de %APPTITLE%
+ Title German=Installation von %APPTITLE%
+ Title Spanish=Instalación de %APPTITLE%
+ Title Italian=Installazione di %APPTITLE%
+ Width=339
+ Height=280
+ Font Name=Helv
+ Font Size=8
+ item: Push Button
+ Rectangle=188 234 244 253
+ Variable=DIRECTION
+ Value=N
+ Create Flags=01010000000000010000000000000001
+ Text=&Next >
+ Text French=&Suite >
+ Text German=&Weiter >
+ Text Spanish=&Siguiente >
+ Text Italian=&Avanti >
+ end
+ item: Push Button
+ Rectangle=131 234 188 253
+ Variable=DIRECTION
+ Value=B
+ Create Flags=01010000000000010000000000000000
+ Flags=0000000000000001
+ Text=< &Back
+ Text French=< &Retour
+ Text German=< &Zurück
+ Text Spanish=< &Atrás
+ Text Italian=< &Indietro
+ end
+ item: Push Button
+ Rectangle=264 234 320 253
+ Action=3
+ Create Flags=01010000000000010000000000000000
+ Text=&Cancel
+ Text French=&Annuler
+ Text German=&Abbrechen
+ Text Spanish=&Cancelar
+ Text Italian=&Annulla
+ end
+ item: Static
+ Rectangle=10 225 320 226
+ Action=3
+ Create Flags=01010000000000000000000000000111
+ end
+ item: Static
+ Rectangle=108 10 323 53
+ Create Flags=01010000000000000000000000000000
+ Flags=0000000000000001
+ Name=Times New Roman
+ Font Style=-24 0 0 0 700 255 0 0 0 3 2 1 18
+ Text=Select Start Menu Group
+ Text French=Sélectionner le groupe du Gestionnaire de programme
+ Text German=Bestimmung der Programm-Managergruppe
+ Text Spanish=Seleccione grupo del Administrador de programas
+ Text Italian=Selezionare il gruppo ProgMan
+ end
+ item: Static
+ Rectangle=108 35 320 65
+ Create Flags=01010000000000000000000000000000
+ Text=Enter the name of the Start Menu program group to which to add the %APPTITLE% icons:
+ Text French=Entrez le nom du groupe du Gestionnaire de programme dans lequel vous souhaitez ajouter les icônes de %APPTITLE% :
+ Text German=Geben Sie den Namen der Programmgruppe ein, der das Symbol %APPTITLE% hinzugefügt werden soll:
+ Text Spanish=Escriba el nombre del grupo del Administrador de programas en el que desea agregar los iconos de %APPTITLE%:
+ Text Italian=Inserire il nome del gruppo Program Manager per aggiungere le icone %APPTITLE% a:
+ end
+ item: Combobox
+ Rectangle=108 56 320 219
+ Variable=GROUP
+ Create Flags=01010000001000010000001100000001
+ Flags=0000000000000001
+ Text=%GROUP%
+ Text=
+ Text French=%GROUP%
+ Text German=%GROUP%
+ Text Spanish=%GROUP%
+ Text Italian=%GROUP%
+ end
+ end
+end
+item: Custom Dialog Set
+ Name=Start Installation
+ Display Variable=DISPLAY
+ item: Dialog
+ Title=%APPTITLE% Installation
+ Title French=Installation de %APPTITLE%
+ Title German=Installation von %APPTITLE%
+ Title Spanish=Instalación de %APPTITLE%
+ Title Italian=Installazione di %APPTITLE%
+ Width=339
+ Height=280
+ Font Name=Helv
+ Font Size=8
+ item: Push Button
+ Rectangle=188 234 244 253
+ Variable=DIRECTION
+ Value=N
+ Create Flags=01010000000000010000000000000001
+ Text=&Next >
+ Text French=&Suite >
+ Text German=&Weiter >
+ Text Spanish=&Siguiente >
+ Text Italian=&Avanti >
+ end
+ item: Push Button
+ Rectangle=131 234 188 253
+ Variable=DIRECTION
+ Value=B
+ Create Flags=01010000000000010000000000000000
+ Text=< &Back
+ Text French=< &Retour
+ Text German=< &Zurück
+ Text Spanish=< &Atrás
+ Text Italian=< &Indietro
+ end
+ item: Push Button
+ Rectangle=264 234 320 253
+ Action=3
+ Create Flags=01010000000000010000000000000000
+ Text=&Cancel
+ Text French=&Annuler
+ Text German=&Abbrechen
+ Text Spanish=&Cancelar
+ Text Italian=&Annulla
+ end
+ item: Static
+ Rectangle=10 225 320 226
+ Action=3
+ Create Flags=01010000000000000000000000000111
+ end
+ item: Static
+ Rectangle=108 10 323 53
+ Create Flags=01010000000000000000000000000000
+ Flags=0000000000000001
+ Name=Times New Roman
+ Font Style=-24 0 0 0 700 255 0 0 0 3 2 1 18
+ Text=Ready to Install!
+ Text French=Prêt à installer !
+ Text German=Installationsbereit!
+ Text Spanish=¡Preparado para la instalación!
+ Text Italian=Pronto per l'installazione!
+ end
+ item: Static
+ Rectangle=108 40 320 62
+ Create Flags=01010000000000000000000000000000
+ Text=Click the Next button to install %APPTITLE%, or the Back button to change choices:
+ Text French=Vous êtes maintenant prêt à installer les fichiers %APPTITLE%.
+ Text French=
+ Text French=Cliquez sur le bouton Suite pour commencer l'installation ou sur le bouton Retour pour entrer les informations d'installation à nouveau.
+ Text German=Sie können %APPTITLE% nun installieren.
+ Text German=
+ Text German=Klicken Sie auf "Weiter", um mit der Installation zu beginnen. Klicken Sie auf "Zurück", um die Installationsinformationen neu einzugeben.
+ Text Spanish=Ya está listo para instalar %APPTITLE%.
+ Text Spanish=
+ Text Spanish=Presione el botón Siguiente para comenzar la instalación o presione Atrás para volver a ingresar la información para la instalación.
+ Text Italian=Ora è possibile installare %APPTITLE%.
+ Text Italian=
+ Text Italian=Premere il pulsante Avanti per avviare l'installazione o il pulsante Indietro per reinserire le informazioni di installazione.
+ end
+ item: Editbox
+ Rectangle=108 66 324 219
+ Help Context=16711681
+ Enabled Color=00000000000000001111111111111111
+ Create Flags=01010000100000000001100011000100
+ Text=%SUMMARY%
+ end
+ end
+end
+item: Remark
+end
+item: If/While Statement
+ Variable=DISPLAY
+ Value=Select Destination Directory
+end
+item: Remark
+ Text=User may have changed MAINDIR, so reset BACKUP to match.
+end
+item: Set Variable
+ Variable=BACKUP
+ Value=%MAINDIR%\BACKUP
+end
+item: End Block
+end
+item: Remark
+end
+item: End Block
+end
+item: Remark
+end
+item: Remark
+ Text=BEGIN WIZARD STUFF -----------------------------------------------------------------------------------------------------------------------------
+end
+item: Remark
+ Text=When the BACKUP feature is enabled, the BACKUPDIR is initialized
+end
+item: If/While Statement
+ Variable=DOBACKUP
+ Value=A
+end
+item: Set Variable
+ Variable=BACKUPDIR
+ Value=%BACKUP%
+end
+item: End Block
+end
+item: Remark
+ Text=The BRANDING information is written to the INI file on the installation media.
+end
+item: If/While Statement
+ Variable=BRANDING
+ Value=1
+end
+item: If/While Statement
+ Variable=DOBRAND
+ Value=1
+end
+item: Edit INI File
+ Pathname=%INST%\CUSTDATA.INI
+ Settings=[Registration]
+ Settings=NAME=%NAME%
+ Settings=COMPANY=%COMPANY%
+ Settings=
+end
+item: End Block
+end
+item: End Block
+end
+item: Remark
+ Text=Begin writing to the INSTALL.LOG
+end
+item: Open/Close INSTALL.LOG
+end
+item: Remark
+ Text=Check free disk space calculates free disk space as well as component sizes.
+end
+item: Remark
+ Text=It should be located before all Install File actions.
+end
+item: Check Disk Space
+ Component=COMPONENTS
+end
+item: Remark
+ Text=This include script allows uninstall support
+end
+item: Remark
+ Text=Note from Tim: this is our own Uninstal.wse, a copy of Wise's except
+end
+item: Remark
+ Text=it writes to HKCU (instead of HKLM) if the user doesn't have admin privs.
+end
+item: Include Script
+ Pathname=.\Uninstal.wse
+end
+item: Remark
+ Text=Note from Tim: these seeming no-ops actually convert to short filenames.
+end
+item: Set Variable
+ Variable=COMMON
+ Value=%COMMON%
+ Flags=00010100
+end
+item: Set Variable
+ Variable=MAINDIR
+ Value=%MAINDIR%
+ Flags=00010100
+end
+item: Remark
+ Text=This IF/THEN/ELSE reads the correct registry entries for shortcut/icon placement
+end
+item: Check Configuration
+ Flags=10111011
+end
+item: Get Registry Key Value
+ Variable=STARTUPDIR
+ Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
+ Default=%WIN%\Start Menu\Programs\StartUp
+ Value Name=StartUp
+ Flags=00000010
+end
+item: Get Registry Key Value
+ Variable=DESKTOPDIR
+ Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
+ Default=%WIN%\Desktop
+ Value Name=Desktop
+ Flags=00000010
+end
+item: Get Registry Key Value
+ Variable=STARTMENUDIR
+ Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
+ Default=%WIN%\Start Menu
+ Value Name=Start Menu
+ Flags=00000010
+end
+item: Get Registry Key Value
+ Variable=GROUPDIR
+ Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
+ Default=%WIN%\Start Menu\Programs
+ Value Name=Programs
+ Flags=00000010
+end
+item: Get Registry Key Value
+ Variable=CSTARTUPDIR
+ Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
+ Default=%STARTUPDIR%
+ Value Name=Common Startup
+ Flags=00000100
+end
+item: Get Registry Key Value
+ Variable=CDESKTOPDIR
+ Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
+ Default=%DESKTOPDIR%
+ Value Name=Common Desktop
+ Flags=00000100
+end
+item: Get Registry Key Value
+ Variable=CSTARTMENUDIR
+ Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
+ Default=%STARTMENUDIR%
+ Value Name=Common Start Menu
+ Flags=00000100
+end
+item: Get Registry Key Value
+ Variable=CGROUPDIR
+ Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
+ Default=%GROUPDIR%
+ Value Name=Common Programs
+ Flags=00000100
+end
+item: Else Statement
+end
+item: Remark
+ Text=Note from Tim: the Wizard left this block empty!
+end
+item: Remark
+ Text=Perhaps it's only relevant on Windows 3.1.
+end
+item: End Block
+end
+item: Remark
+ Text=END WIZARD STUFF -----------------------------------------------------------------------------------------------------------------------------
+end
+item: Remark
+end
+item: If/While Statement
+ Variable=SELECT_ADMIN
+ Value=B
+end
+item: Remark
+ Text=The user chose a non-admin install in "Advanced Options".
+end
+item: Remark
+ Text=This should come after the include of Uninstal.wse above, because
+end
+item: Remark
+ Text=writing uninstall info to HKCU is ineffective except under Win2K.
+end
+item: Set Variable
+ Variable=DOADMIN
+ Value=0
+end
+item: End Block
+end
+item: Remark
+end
+item: Set Variable
+ Variable=CGROUP_SAVE
+ Value=%GROUP%
+end
+item: If/While Statement
+ Variable=TASKS
+ Value=B
+ Flags=00000010
+end
+item: If/While Statement
+ Variable=DOADMIN
+ Value=1
+end
+item: Set Variable
+ Variable=GROUP
+ Value=%CGROUPDIR%\%GROUP%
+end
+item: Else Statement
+end
+item: Set Variable
+ Variable=GROUP
+ Value=%GROUPDIR%\%GROUP%
+end
+item: End Block
+end
+item: End Block
+end
+item: Remark
+end
+item: Remark
+ Text=Long section to install files.
+end
+item: Remark
+end
+item: If/While Statement
+ Variable=DOADMIN
+ Value=1
+end
+item: Set Variable
+ Variable=DLLDEST
+ Value=%SYS32%
+end
+item: Else Statement
+end
+item: Set Variable
+ Variable=DLLDEST
+ Value=%MAINDIR%
+end
+item: End Block
+end
+item: Remark
+end
+item: Remark
+ Text=Install the license even if they deselect everything <wink>.
+end
+item: Install File
+ Source=..\license
+ Destination=%MAINDIR%\LICENSE.txt
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\readme
+ Destination=%MAINDIR%\README.txt
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\misc\news
+ Destination=%MAINDIR%\NEWS.txt
+ Flags=0000000000000010
+end
+item: Remark
+ Text=Icons -- always install so that the uninstaller can use them for its own display.
+end
+item: Install File
+ Source=..\pc\pycon.ico
+ Destination=%MAINDIR%\pycon.ico
+ Flags=0000000010000010
+end
+item: Install File
+ Source=..\pc\pyc.ico
+ Destination=%MAINDIR%\pyc.ico
+ Flags=0000000010000010
+end
+item: Install File
+ Source=..\pc\py.ico
+ Destination=%MAINDIR%\py.ico
+ Flags=0000000010000010
+end
+item: Remark
+end
+item: Remark
+ Text=These arrange to (recursively!) delete all .pyc and .pyo files at uninstall time.
+end
+item: Remark
+ Text=This "does the right thing": any directories left empty at the end are removed.
+end
+item: Add Text to INSTALL.LOG
+ Text=File Tree: %MAINDIR%\*.pyc
+end
+item: Add Text to INSTALL.LOG
+ Text=File Tree: %MAINDIR%\*.pyo
+end
+item: Remark
+end
+item: Remark
+ Text=A: interpreter and libraries
+end
+item: If/While Statement
+ Variable=COMPONENTS
+ Value=A
+ Flags=00000010
+end
+item: Remark
+ Text=Executables
+end
+item: Install File
+ Source=.\python.exe
+ Destination=%MAINDIR%\python.exe
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\pythonw.exe
+ Destination=%MAINDIR%\pythonw.exe
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\w9xpopen.exe
+ Destination=%MAINDIR%\w9xpopen.exe
+ Flags=0000000000000010
+end
+item: Remark
+end
+item: Remark
+ Text=Extension module DLLs (.pyd); keep in synch with libs directory next
+end
+item: Install File
+ Source=.\_winreg.pyd
+ Destination=%MAINDIR%\DLLs\_winreg.pyd
+ Description=Extension modules
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\_csv.pyd
+ Destination=%MAINDIR%\DLLs\_csv.pyd
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\_sre.pyd
+ Destination=%MAINDIR%\DLLs\_sre.pyd
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\_ssl.pyd
+ Destination=%MAINDIR%\DLLs\_ssl.pyd
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\_symtable.pyd
+ Destination=%MAINDIR%\DLLs\_symtable.pyd
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\_testcapi.pyd
+ Destination=%MAINDIR%\DLLs\_testcapi.pyd
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\_tkinter.pyd
+ Destination=%MAINDIR%\DLLs\_tkinter.pyd
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\_socket.pyd
+ Destination=%MAINDIR%\DLLs\_socket.pyd
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\_bsddb.pyd
+ Destination=%MAINDIR%\DLLs\_bsddb.pyd
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\bz2.pyd
+ Destination=%MAINDIR%\DLLs\bz2.pyd
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\datetime.pyd
+ Destination=%MAINDIR%\DLLs\datetime.pyd
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\mmap.pyd
+ Destination=%MAINDIR%\DLLs\mmap.pyd
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\parser.pyd
+ Destination=%MAINDIR%\DLLs\parser.pyd
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\pyexpat.pyd
+ Destination=%MAINDIR%\DLLs\pyexpat.pyd
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\select.pyd
+ Destination=%MAINDIR%\DLLs\select.pyd
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\unicodedata.pyd
+ Destination=%MAINDIR%\DLLs\unicodedata.pyd
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\winsound.pyd
+ Destination=%MAINDIR%\DLLs\winsound.pyd
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\zlib.pyd
+ Destination=%MAINDIR%\DLLs\zlib.pyd
+ Flags=0000000000000010
+end
+item: Remark
+end
+item: Remark
+ Text=Link libraries (.lib); keep in synch with DLLs above, except that the Python lib lives here.
+end
+item: Install File
+ Source=.\_winreg.lib
+ Destination=%MAINDIR%\libs\_winreg.lib
+ Description=Link library files
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\_csv.lib
+ Destination=%MAINDIR%\libs\_csv.lib
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\_sre.lib
+ Destination=%MAINDIR%\libs\_sre.lib
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\_ssl.lib
+ Destination=%MAINDIR%\libs\_ssl.lib
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\_symtable.lib
+ Destination=%MAINDIR%\libs\_symtable.lib
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\_testcapi.lib
+ Destination=%MAINDIR%\libs\_testcapi.lib
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\_tkinter.lib
+ Destination=%MAINDIR%\libs\_tkinter.lib
+ Description=Extension modules
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\_socket.lib
+ Destination=%MAINDIR%\libs\_socket.lib
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\_bsddb.lib
+ Destination=%MAINDIR%\libs\_bsddb.lib
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\bz2.lib
+ Destination=%MAINDIR%\libs\bz2.lib
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\datetime.lib
+ Destination=%MAINDIR%\libs\datetime.lib
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\mmap.lib
+ Destination=%MAINDIR%\libs\mmap.lib
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\parser.lib
+ Destination=%MAINDIR%\libs\parser.lib
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\pyexpat.lib
+ Destination=%MAINDIR%\libs\pyexpat.lib
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\select.lib
+ Destination=%MAINDIR%\libs\select.lib
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\unicodedata.lib
+ Destination=%MAINDIR%\libs\unicodedata.lib
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\winsound.lib
+ Destination=%MAINDIR%\libs\winsound.lib
+ Flags=0000000000000010
+end
+item: Install File
+ Source=.\zlib.lib
+ Destination=%MAINDIR%\libs\zlib.lib
+ Flags=0000000000000010
+end
+item: Remark
+end
+item: Install File
+ Source=.\python%_pymajor_%%_pyminor_%.lib
+ Destination=%MAINDIR%\libs\python%_PYMAJOR_%%_PYMINOR_%.lib
+ Flags=0000000000000010
+end
+item: Remark
+end
+item: Remark
+ Text=Main Python DLL
+end
+item: Remark
+ Text=Tell Wise it's OK to delete the Python DLL at uninstall time,
+end
+item: Remark
+ Text=despite that we (may) write it into a system directory.
+end
+item: Add Text to INSTALL.LOG
+ Text=Non-System File:
+end
+item: Install File
+ Source=.\python%_pymajor_%%_pyminor_%.dll
+ Destination=%DLLDEST%\python%_PYMAJOR_%%_PYMINOR_%.dll
+ Flags=0000000000000010
+end
+item: Remark
+end
+item: Remark
+ Text=Libraries (Lib/)
+end
+item: Install File
+ Source=..\lib\*.py
+ Destination=%MAINDIR%\Lib
+ Description=Library Modules
+ Flags=0000000000000010
+end
+item: Remark
+end
+item: Install File
+ Source=..\lib\bsddb\*.py
+ Destination=%MAINDIR%\Lib\bsddb
+ Description=Berkeley database package
+ Flags=0000000100000010
+end
+item: Remark
+end
+item: Install File
+ Source=..\lib\compiler\*.py
+ Destination=%MAINDIR%\Lib\compiler
+ Description=Python compiler written in Python
+ Flags=0000000000000010
+end
+item: Remark
+end
+item: Install File
+ Source=..\lib\distutils\*.py
+ Destination=%MAINDIR%\Lib\distutils
+ Description=Distribution utility modules
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\lib\distutils\readme
+ Destination=%MAINDIR%\Lib\distutils\README.txt
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\lib\distutils\command\*.py
+ Destination=%MAINDIR%\Lib\distutils\command
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\lib\distutils\command\wininst.exe
+ Destination=%MAINDIR%\Lib\distutils\command\wininst.exe
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\lib\distutils\command\command_template
+ Destination=%MAINDIR%\Lib\distutils\command\command_template
+ Flags=0000000000000010
+end
+item: Remark
+end
+item: Install File
+ Source=..\lib\email\*.py
+ Destination=%MAINDIR%\Lib\email
+ Description=Library email package
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\lib\email\test\*.py
+ Destination=%MAINDIR%\Lib\email\test
+ Description=email tests
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\lib\email\test\data\*.txt
+ Destination=%MAINDIR%\Lib\email\test\data
+ Description=email test data
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\lib\email\test\data\*.gif
+ Destination=%MAINDIR%\Lib\email\test\data
+ Description=email test data
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\lib\email\test\data\*.au
+ Destination=%MAINDIR%\Lib\email\test\data
+ Description=email test data
+ Flags=0000000000000010
+end
+item: Remark
+end
+item: Install File
+ Source=..\lib\encodings\*.py
+ Destination=%MAINDIR%\Lib\encodings
+ Description=Unicode encoding tables
+ Flags=0000000000000010
+end
+item: Remark
+end
+item: Install File
+ Source=..\lib\hotshot\*.py
+ Destination=%MAINDIR%\Lib\hotshot
+ Description=Fast Python profiler
+ Flags=0000000000000010
+end
+item: Remark
+end
+item: Install File
+ Source=..\lib\lib-old\*.py
+ Destination=%MAINDIR%\Lib\lib-old
+ Description=Obsolete modules
+ Flags=0000000000000010
+end
+item: Remark
+end
+item: Install File
+ Source=..\lib\lib-tk\*.py
+ Destination=%MAINDIR%\Lib\lib-tk
+ Description=Tkinter related library modules
+ Flags=0000000000000010
+end
+item: Remark
+end
+item: Install File
+ Source=..\lib\logging\*.py
+ Destination=%MAINDIR%\Lib\logging
+ Description=Logging package
+ Flags=0000000000000010
+end
+item: Remark
+end
+item: Install File
+ Source=..\lib\site-packages\readme
+ Destination=%MAINDIR%\Lib\site-packages\README.txt
+ Description=Site packages
+ Flags=0000000000000010
+end
+item: Remark
+end
+item: Install File
+ Source=..\lib\xml\*.py
+ Destination=%MAINDIR%\Lib\xml
+ Description=XML support packages
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\lib\xml\dom\*.py
+ Destination=%MAINDIR%\Lib\xml\dom
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\lib\xml\parsers\*.py
+ Destination=%MAINDIR%\Lib\xml\parsers
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\lib\xml\sax\*.py
+ Destination=%MAINDIR%\Lib\xml\sax
+ Flags=0000000000000010
+end
+item: Remark
+end
+item: Remark
+ Text=C Include files
+end
+item: Install File
+ Source=..\include\*.h
+ Destination=%MAINDIR%\include
+ Description=Header files
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\pc\pyconfig.h
+ Destination=%MAINDIR%\include\pyconfig.h
+ Description=Header files (pyconfig.h)
+ Flags=0000000000000010
+end
+item: Remark
+end
+item: Remark
+ Text=Microsoft C runtime libraries
+end
+item: Install File
+ Source=%_SYS_%\MSVCIRT.DLL
+ Destination=%DLLDEST%\MSVCIRT.DLL
+ Description=Visual C++ Runtime DLLs
+ Flags=0000011000010011
+end
+item: Install File
+ Source=%_SYS_%\MSVCRT.DLL
+ Destination=%DLLDEST%\MSVCRT.DLL
+ Description=Visual C++ Runtime DLLs
+ Flags=0000011000010011
+end
+item: End Block
+end
+item: Remark
+end
+item: Remark
+ Text=B: Tcl/Tk (Tkinter, IDLE, pydoc)
+end
+item: If/While Statement
+ Variable=COMPONENTS
+ Value=B
+ Flags=00000010
+end
+item: Remark
+ Text=Tcl/Tk
+end
+item: Install File
+ Source=..\..\%_tcldir_%\bin\*.dll
+ Destination=%MAINDIR%\DLLs
+ Description=Tcl/Tk binaries and libraries
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\..\%_tcldir_%\lib\*.*
+ Destination=%MAINDIR%\tcl
+ Description=Tcl/Tk binaries and libraries
+ Flags=0000000100000010
+end
+item: Remark
+end
+item: Remark
+ Text=IDLE
+end
+item: Install File
+ Source=..\Lib\idlelib\*.py
+ Destination=%MAINDIR%\Lib\idlelib
+ Description=Integrated DeveLopment Environment for Python
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\Lib\idlelib\*.txt
+ Destination=%MAINDIR%\Lib\idlelib
+ Description=Integrated DeveLopment Environment for Python
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\Lib\idlelib\*.def
+ Destination=%MAINDIR%\Lib\idlelib
+ Description=Integrated DeveLopment Environment for Python
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\Lib\idlelib\Icons\*
+ Destination=%MAINDIR%\Lib\idlelib\Icons
+ Description=Integrated DeveLopment Environment for Python
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\Tools\scripts\idle
+ Destination=%MAINDIR%\Lib\idlelib\idle.pyw
+ Description=IDLE bootstrap script
+ Flags=0000000000000010
+end
+item: Remark
+end
+item: Remark
+ Text=Windows pydoc driver
+end
+item: Install File
+ Source=..\tools\scripts\*.pyw
+ Destination=%MAINDIR%\Tools\Scripts
+ Description=Windows pydoc driver
+ Flags=0000000000000010
+end
+item: End Block
+end
+item: Remark
+end
+item: Remark
+ Text=C: docs
+end
+item: If/While Statement
+ Variable=COMPONENTS
+ Value=C
+ Flags=00000010
+end
+item: Install File
+ Source=%_DOC_%\*.*
+ Destination=%MAINDIR%\Doc
+ Description=Python Documentation (HTML)
+ Flags=0000000100000010
+end
+item: End Block
+end
+item: Remark
+end
+item: Remark
+ Text=D: tools
+end
+item: If/While Statement
+ Variable=COMPONENTS
+ Value=D
+ Flags=00000010
+end
+item: Install File
+ Source=..\tools\scripts\*.py
+ Destination=%MAINDIR%\Tools\Scripts
+ Description=Utility Scripts
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\tools\scripts\*.doc
+ Destination=%MAINDIR%\Tools\Scripts
+ Description=Utility Scripts
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\tools\scripts\readme
+ Destination=%MAINDIR%\Tools\Scripts\README.txt
+ Description=Utility Scripts
+ Flags=0000000000000010
+end
+item: Remark
+end
+item: Install File
+ Source=..\tools\webchecker\*.py
+ Destination=%MAINDIR%\Tools\webchecker
+ Description=Web checker tool
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\tools\webchecker\readme
+ Destination=%MAINDIR%\Tools\webchecker\README.txt
+ Description=Web checker tool
+ Flags=0000000000000010
+end
+item: Remark
+end
+item: Install File
+ Source=..\tools\versioncheck\*.py
+ Destination=%MAINDIR%\Tools\versioncheck
+ Description=Version checker tool
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\tools\versioncheck\readme
+ Destination=%MAINDIR%\Tools\versioncheck\README.txt
+ Description=Version checker tool
+ Flags=0000000000000010
+end
+item: Remark
+end
+item: Install File
+ Source=..\tools\pynche\*.py
+ Destination=%MAINDIR%\Tools\pynche
+ Description=pynche color editor
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\tools\pynche\*.txt
+ Destination=%MAINDIR%\Tools\pynche
+ Description=pynche color editor
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\tools\pynche\x\*.txt
+ Destination=%MAINDIR%\Tools\pynche\X
+ Description=pynche color editor - X files
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\tools\pynche\readme
+ Destination=%MAINDIR%\Tools\pynche\README.txt
+ Description=pynche color editor - README
+ Flags=0000000100000010
+end
+item: Install File
+ Source=..\tools\pynche\pynche
+ Destination=%MAINDIR%\Tools\pynche\pynche.py
+ Description=pynche color editor - main
+ Flags=0000000100000010
+end
+item: Install File
+ Source=..\tools\pynche\pynche.pyw
+ Destination=%MAINDIR%\Tools\pynche\pynche.pyw
+ Description=pynche color editor - noconsole main
+ Flags=0000000100000010
+end
+item: Remark
+end
+item: Install File
+ Source=..\tools\i18n\*.py
+ Destination=%MAINDIR%\Tools\i18n
+ Description=Internationalization helpers
+ Flags=0000000000000010
+end
+item: End Block
+end
+item: Remark
+end
+item: Remark
+ Text=E: test suite
+end
+item: If/While Statement
+ Variable=COMPONENTS
+ Value=E
+ Flags=00000010
+end
+item: Install File
+ Source=..\lib\test\audiotest.au
+ Destination=%MAINDIR%\Lib\test\audiotest.au
+ Description=Python Test files
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\lib\test\*.uue
+ Destination=%MAINDIR%\Lib\test
+ Description=Python Test files
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\lib\test\*.py
+ Destination=%MAINDIR%\Lib\test
+ Description=Python Test files
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\lib\test\*.xml
+ Destination=%MAINDIR%\Lib\test
+ Description=Python Test files
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\lib\test\*.out
+ Destination=%MAINDIR%\Lib\test
+ Description=Python Test files
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\lib\test\*.bz2
+ Destination=%MAINDIR%\Lib\test
+ Description=Python Test files
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\lib\test\*.tar
+ Destination=%MAINDIR%\Lib\test
+ Description=Python Test files
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\lib\test\*.gz
+ Destination=%MAINDIR%\Lib\test
+ Description=Python Test files
+ Flags=0000000000000010
+end
+item: Install File
+ Source=..\lib\test\*.txt
+ Destination=%MAINDIR%\Lib\test
+ Description=Python Test files
+ Flags=0000000000000010
+end
+item: Remark
+end
+item: Install File
+ Source=..\lib\test\output\*.*
+ Destination=%MAINDIR%\Lib\test\output
+ Description=Python Test output files
+ Flags=0000000000000010
+end
+item: End Block
+end
+item: Remark
+end
+item: Remark
+ Text=DONE with file copying.
+end
+item: Remark
+ Text=The rest is registry and Start Menu fiddling.
+end
+item: Remark
+end
+item: If/While Statement
+ Variable=COMPONENTS
+ Value=A
+ Flags=00000010
+end
+item: If/While Statement
+ Variable=TASKS
+ Value=A
+ Flags=00000010
+end
+item: Remark
+ Text=Register file extensions. As usual, Admin privs get in the way, but with a twist:
+end
+item: Remark
+ Text=You don't need admin privs to write to HKEY_CLASSES_ROOT *except* under Win2K.
+end
+item: Remark
+ Text=On Win2K, a user without Admin privs has to register extensions under HKCU\Software\CLASSES instead.
+end
+item: Remark
+ Text=But while you can *do* that under other flavors of Windows too, it has no useful effect except in Win2K.
+end
+item: Set Variable
+ Variable=USE_HKCR
+ Value=1
+end
+item: Check Configuration
+ Flags=11110010
+end
+item: If/While Statement
+ Variable=DOADMIN
+ Value=0
+end
+item: Set Variable
+ Variable=USE_HKCR
+ Value=0
+end
+item: End Block
+end
+item: End Block
+end
+item: If/While Statement
+ Variable=USE_HKCR
+ Value=1
+end
+item: Remark
+ Text=File types.
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Python.File
+ New Value=Python File
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Python.File\shell\open\command
+ New Value=%MAINDIR%\python.exe "%%1" %%*
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Python.File\DefaultIcon
+ New Value=%MAINDIR%\Py.ico
+end
+item: Remark
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Python.NoConFile
+ New Value=Python File (no console)
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Python.NoConFile\shell\open\command
+ New Value=%MAINDIR%\pythonw.exe "%%1" %%*
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Python.NoConFile\DefaultIcon
+ New Value=%MAINDIR%\Py.ico
+end
+item: Remark
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Python.CompiledFile
+ New Value=Compiled Python File
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Python.CompiledFile\shell\open\command
+ New Value=%MAINDIR%\python.exe "%%1" %%*
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Python.CompiledFile\DefaultIcon
+ New Value=%MAINDIR%\pyc.ico
+end
+item: Remark
+end
+item: Remark
+ Text=File extensions.
+end
+item: Edit Registry
+ Total Keys=1
+ Key=.py
+ New Value=Python.File
+end
+item: Edit Registry
+ Total Keys=1
+ Key=.py
+ New Value=text/plain
+ Value Name=Content Type
+end
+item: Remark
+end
+item: Edit Registry
+ Total Keys=1
+ Key=.pyw
+ New Value=Python.NoConFile
+end
+item: Edit Registry
+ Total Keys=1
+ Key=.pyw
+ New Value=text/plain
+ Value Name=Content Type
+end
+item: Remark
+end
+item: Edit Registry
+ Total Keys=1
+ Key=.pyc
+ New Value=Python.CompiledFile
+end
+item: Edit Registry
+ Total Keys=1
+ Key=.pyo
+ New Value=Python.CompiledFile
+end
+item: Else Statement
+end
+item: Remark
+ Text=File types.
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\CLASSES\Python.File
+ New Value=Python File
+ Root=1
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\CLASSES\Python.File\shell\open\command
+ New Value=%MAINDIR%\python.exe "%%1" %%*
+ Root=1
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\CLASSES\Python.File\DefaultIcon
+ New Value=%MAINDIR%\Py.ico
+ Root=1
+end
+item: Remark
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\CLASSES\Python.NoConFile
+ New Value=Python File (no console)
+ Root=1
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\CLASSES\Python.NoConFile\shell\open\command
+ New Value=%MAINDIR%\pythonw.exe "%%1" %%*
+ Root=1
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\CLASSES\Python.NoConFile\DefaultIcon
+ New Value=%MAINDIR%\Py.ico
+ Root=1
+end
+item: Remark
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\CLASSES\Python.CompiledFile
+ New Value=Compiled Python File
+ Root=1
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\CLASSES\Python.CompiledFile\shell\open\command
+ New Value=%MAINDIR%\python.exe "%%1" %%*
+ Root=1
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\CLASSES\Python.CompiledFile\DefaultIcon
+ New Value=%MAINDIR%\pyc.ico
+ Root=1
+end
+item: Remark
+end
+item: Remark
+ Text=File extensions.
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\CLASSES\.py
+ New Value=Python.File
+ Root=1
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\CLASSES\.py
+ New Value=text/plain
+ Value Name=Content Type
+ Root=1
+end
+item: Remark
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\CLASSES\.pyw
+ New Value=Python.NoConFile
+ Root=1
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\CLASSES\.pyw
+ New Value=text/plain
+ Value Name=Content Type
+ Root=1
+end
+item: Remark
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\CLASSES\.pyc
+ New Value=Python.CompiledFile
+ Root=1
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\CLASSES\.pyo
+ New Value=Python.CompiledFile
+ Root=1
+end
+item: End Block
+end
+item: Remark
+end
+item: Remark
+ Text=If we're installing IDLE, also set an Edit context menu action to use IDLE, for .py and .pyw files.
+end
+item: If/While Statement
+ Variable=COMPONENTS
+ Value=B
+ Flags=00000010
+end
+item: If/While Statement
+ Variable=USE_HKCR
+ Value=1
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Python.NoConFile\shell\Edit with IDLE\command
+ New Value=%MAINDIR%\pythonw.exe %MAINDIR%\Lib\idlelib\idle.pyw -n -e "%%1"
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Python.File\shell\Edit with IDLE\command
+ New Value=%MAINDIR%\pythonw.exe %MAINDIR%\Lib\idlelib\idle.pyw -n -e "%%1"
+end
+item: Else Statement
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\CLASSES\Python.NoConFile\shell\Edit with IDLE\command
+ New Value=%MAINDIR%\pythonw.exe %MAINDIR%\Lib\idlelib\idle.pyw -n -e "%%1"
+ Root=1
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\CLASSES\Python.File\shell\Edit with IDLE\command
+ New Value=%MAINDIR%\pythonw.exe %MAINDIR%\Lib\idlelib\idle.pyw -n -e "%%1"
+ Root=1
+end
+item: End Block
+end
+item: End Block
+end
+item: End Block
+end
+item: Remark
+end
+item: Remark
+ Text=Register Python paths.
+end
+item: Remark
+ Text=Write to HKLM for admin, else HKCU. Keep these blocks otherwise identical!
+end
+item: If/While Statement
+ Variable=DOADMIN
+ Value=1
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Python\PythonCore\CurrentVersion
+ Root=130
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Python\PythonCore\%PY_VERSION%\InstallPath
+ New Value=%MAINDIR%
+ Root=2
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Python\PythonCore\%PY_VERSION%\InstallPath\InstallGroup
+ New Value=%CGROUP_SAVE%
+ New Value=
+ Root=2
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Python\PythonCore\%PY_VERSION%\PythonPath
+ New Value=%MAINDIR%\Lib;%MAINDIR%\DLLs;%MAINDIR%\Lib\lib-tk
+ New Value=
+ Root=2
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Python\PythonCore\%PY_VERSION%\Modules
+ Root=2
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Microsoft\Windows\CurrentVersion\App Paths\Python.exe
+ New Value=%MAINDIR%\Python.exe
+ Root=2
+end
+item: Else Statement
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Python\PythonCore\CurrentVersion
+ Root=129
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Python\PythonCore\%PY_VERSION%\InstallPath
+ New Value=%MAINDIR%
+ Root=1
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Python\PythonCore\%PY_VERSION%\InstallPath\InstallGroup
+ New Value=%CGROUP_SAVE%
+ New Value=
+ Root=1
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Python\PythonCore\%PY_VERSION%\PythonPath
+ New Value=%MAINDIR%\Lib;%MAINDIR%\DLLs;%MAINDIR%\Lib\lib-tk
+ New Value=
+ Root=1
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Python\PythonCore\%PY_VERSION%\Modules
+ Root=1
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Microsoft\Windows\CurrentVersion\App Paths\Python.exe
+ New Value=%MAINDIR%\Python.exe
+ Root=1
+end
+item: End Block
+end
+item: End Block
+end
+item: Remark
+end
+item: Remark
+ Text=Registry fiddling for docs.
+end
+item: Remark
+ Text=Write to HKLM for admin, else HKCU. Keep these blocks otherwise identical!
+end
+item: If/While Statement
+ Variable=COMPONENTS
+ Value=C
+ Flags=00000010
+end
+item: If/While Statement
+ Variable=DOADMIN
+ Value=1
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Python\PythonCore\%PY_VERSION%\Help\Main Python Documentation
+ New Value=%MAINDIR%\Doc\index.html
+ Root=2
+end
+item: Else Statement
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Python\PythonCore\%PY_VERSION%\Help\Main Python Documentation
+ New Value=%MAINDIR%\Doc\index.html
+ Root=1
+end
+item: End Block
+end
+item: End Block
+end
+item: Remark
+end
+item: Remark
+ Text=Set the app publisher and URL entries for Win2K add/remove.
+end
+item: Remark
+ Text=It doesn't hurt on other systems.
+end
+item: Remark
+ Text=As usual, write to HKLM or HKCU depending on Admin privs.
+end
+item: Remark
+ Text=CAUTION: If you set this info on the "Windows 2000" page (step 6) of the
+end
+item: Remark
+ Text=Installation Expert, it only shows up in the "If" block below. Keep in synch!
+end
+item: If/While Statement
+ Variable=DOADMIN
+ Value=1
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE%
+ New Value=http://www.python.org/
+ Value Name=HelpLink
+ Root=2
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE%
+ New Value=PythonLabs at Zope Corporation
+ Value Name=Publisher
+ Root=2
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE%
+ New Value=http://www.python.org/
+ Value Name=URLInfoAbout
+ Root=2
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE%
+ New Value=%PYVER_STRING%
+ Value Name=DisplayVersion
+ Root=2
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE%
+ New Value=%MAINDIR%\py.ico,-0
+ Value Name=DisplayIcon
+ Root=2
+end
+item: Else Statement
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE%
+ New Value=http://www.python.org/
+ Value Name=HelpLink
+ Root=1
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE%
+ New Value=PythonLabs at Zope Corporation
+ Value Name=Publisher
+ Root=1
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE%
+ New Value=http://www.python.org/
+ Value Name=URLInfoAbout
+ Root=1
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE%
+ New Value=%PYVER_STRING%
+ Value Name=DisplayVersion
+ Root=1
+end
+item: Edit Registry
+ Total Keys=1
+ Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE%
+ New Value=%MAINDIR%\py.ico,-0
+ Value Name=DisplayIcon
+ Root=1
+end
+item: End Block
+end
+item: Remark
+end
+item: Remark
+ Text=Populate Start Menu group
+end
+item: If/While Statement
+ Variable=TASKS
+ Value=B
+ Flags=00000010
+end
+item: Remark
+ Text=Shortcut to installer no matter what.
+end
+item: Create Shortcut
+ Source=%MAINDIR%\unwise.exe
+ Destination=%GROUP%\Uninstall Python.lnk
+ Working Directory=%MAINDIR%
+ Key Type=1536
+ Flags=00000001
+end
+item: Remark
+end
+item: If/While Statement
+ Variable=COMPONENTS
+ Value=A
+ Flags=00000010
+end
+item: Create Shortcut
+ Source=%MAINDIR%\python.exe
+ Destination=%GROUP%\Python (command line).lnk
+ Working Directory=%MAINDIR%
+ Icon Pathname=%MAINDIR%\pycon.ico
+ Key Type=1536
+ Flags=00000001
+end
+item: End Block
+end
+item: Remark
+end
+item: If/While Statement
+ Variable=COMPONENTS
+ Value=B
+ Flags=00000010
+end
+item: Create Shortcut
+ Source=%MAINDIR%\pythonw.exe
+ Destination=%GROUP%\IDLE (Python GUI).lnk
+ Command Options="%MAINDIR%\Lib\idlelib\idle.pyw"
+ Working Directory=%MAINDIR%
+ Key Type=1536
+ Flags=00000001
+end
+item: Create Shortcut
+ Source=%MAINDIR%\pythonw.exe
+ Destination=%GROUP%\Module Docs.lnk
+ Command Options="%MAINDIR%\Tools\Scripts\pydocgui.pyw"
+ Working Directory=%MAINDIR%
+ Key Type=1536
+ Flags=00000001
+end
+item: End Block
+end
+item: Remark
+end
+item: If/While Statement
+ Variable=COMPONENTS
+ Value=C
+ Flags=00000010
+end
+item: Create Shortcut
+ Source=%MAINDIR%\Doc\index.html
+ Destination=%GROUP%\Python Manuals.lnk
+ Working Directory=%MAINDIR%
+ Key Type=1536
+ Flags=00000001
+end
+item: End Block
+end
+item: End Block
+end
+item: Remark
+end
+item: Remark
+ Text=I don't think we need this, but have always done it.
+end
+item: Self-Register OCXs/DLLs
+ Description=Updating System Configuration, Please Wait...
+end
+item: Remark
+end
+remarked item: Remark
+ Text=Don't enable "Delete in-use files". Here's what happens:
+end
+remarked item: Remark
+ Text=Install Python; uninstall Python; install Python again. Reboot the machine.
+end
+remarked item: Remark
+ Text=Now UNWISE.EXE is missing. I think this is a Wise bug, but so it goes.
+end
+remarked item: Add Text to INSTALL.LOG
+ Text=Delete in-use files: On
+end
+item: Remark
+end
+item: Wizard Block
+ Direction Variable=DIRECTION
+ Display Variable=DISPLAY
+ Bitmap Pathname=.\installer.bmp
+ X Position=9
+ Y Position=10
+ Filler Color=11173759
+ Flags=00000011
+end
+item: Custom Dialog Set
+ Name=Finished
+ Display Variable=DISPLAY
+ item: Dialog
+ Title=%APPTITLE% Installation
+ Title French=Installation de %APPTITLE%
+ Title German=Installation von %APPTITLE%
+ Title Spanish=Instalación de %APPTITLE%
+ Title Italian=Installazione di %APPTITLE%
+ Width=339
+ Height=280
+ Font Name=Helv
+ Font Size=8
+ item: Push Button
+ Rectangle=188 234 244 253
+ Variable=DIRECTION
+ Value=N
+ Create Flags=01010000000000010000000000000001
+ Text=&Finish
+ Text French=&Fin
+ Text German=&Weiter
+ Text Spanish=&Terminar
+ Text Italian=&Fine
+ end
+ item: Push Button
+ Rectangle=264 234 320 253
+ Variable=DISABLED
+ Value=!
+ Action=3
+ Create Flags=01010000000000010000000000000000
+ Text=&Cancel
+ Text French=&Annuler
+ Text German=&Abbrechen
+ Text Spanish=&Cancelar
+ Text Italian=&Annulla
+ end
+ item: Static
+ Rectangle=108 10 323 48
+ Create Flags=01010000000000000000000000000000
+ Flags=0000000000000001
+ Name=Times New Roman
+ Font Style=-24 0 0 0 700 255 0 0 0 3 2 1 18
+ Text=Installation Completed!
+ Text French=Installation terminée !
+ Text German=Die Installation ist abgeschlossen!
+ Text Spanish=¡Instalación terminada!
+ Text Italian=Installazione completata!
+ end
+ item: Static
+ Rectangle=108 44 320 82
+ Create Flags=01010000000000000000000000000000
+ Text=%APPTITLE% has been successfully installed.
+ Text=
+ Text=Press the Finish button to exit this installation.
+ Text French=%APPTITLE% est maintenant installé.
+ Text French=
+ Text French=Cliquez sur le bouton Fin pour quitter l'installation.
+ Text German=%APPTITLE% wurde erfolgreich installiert.
+ Text German=
+ Text German=Klicken Sie auf "Weiter", um die Installation zu beenden.
+ Text Spanish=%APPTITLE% se ha instalado con éxito.
+ Text Spanish=
+ Text Spanish=Presione el botón Terminar para salir de esta instalación.
+ Text Italian=L'installazione %APPTITLE% è stata portata a termine con successo.
+ Text Italian=
+ Text Italian=Premere il pulsante Fine per uscire dall'installazione.
+ end
+ item: Static
+ Rectangle=10 225 320 226
+ Action=3
+ Create Flags=01010000000000000000000000000111
+ end
+ item: Static
+ Rectangle=106 105 312 210
+ Enabled Color=00000000000000001111111111111111
+ Create Flags=01010000000000000000000000000000
+ Text=Special Windows thanks to:
+ Text=
+ Text=Wise Solutions, for the use of InstallMaster 8.1.
+ Text= http://www.wisesolutions.com/
+ Text=
+ Text=
+ Text=LettError, Erik van Blokland, for the Python for Windows graphic.
+ Text= http://www.letterror.com/
+ Text=
+ Text=
+ Text=Mark Hammond, without whose years of freely shared Windows expertise, Python for Windows would still be Python for DOS.
+ end
+ item: Static
+ Rectangle=106 95 312 96
+ Action=3
+ Enabled Color=00000000000000001111111111111111
+ Create Flags=01010000000000000000000000001001
+ end
+ end
+end
+item: End Block
+end
+item: New Event
+ Name=Cancel
+end
+item: Remark
+ Text=This include script supports a rollback to preinstallation state if the user chooses to cancel before the installation is complete.
+end
+item: Include Script
+ Pathname=%_WISE_%\INCLUDE\rollback.wse
+end
diff --git a/PC/VS7.1/pythoncore.vcproj b/PC/VS7.1/pythoncore.vcproj
new file mode 100644
index 0000000..5ca8891
--- /dev/null
+++ b/PC/VS7.1/pythoncore.vcproj
@@ -0,0 +1,868 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="pythoncore"
+ ProjectGUID="{CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}"
+ RootNamespace="pythoncore"
+ SccProjectName="pythoncore"
+ SccLocalPath="..">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-release\pythoncore"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/Zm200 "
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS;USE_DL_EXPORT"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="getbuildinfo.o"
+ OutputFile="./python27.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ IgnoreDefaultLibraryNames="libc"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./python27.pdb"
+ SubSystem="2"
+ BaseAddress="0x1e000000"
+ ImportLibrary=".\./python27.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"
+ Description="generate buildinfo"
+ CommandLine="make_buildinfo.exe $(ConfigurationName)"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\Include"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-debug\pythoncore"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/Zm200 "
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;_DEBUG;USE_DL_EXPORT;WIN32;_WINDOWS"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="getbuildinfo.o"
+ OutputFile="./python27_d.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ IgnoreDefaultLibraryNames="libc"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./python27_d.pdb"
+ SubSystem="2"
+ BaseAddress="0x1e000000"
+ ImportLibrary=".\./python27_d.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"
+ Description="generate buildinfo"
+ CommandLine="make_buildinfo.exe $(ConfigurationName)"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\Include"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseItanium|Win32"
+ OutputDirectory="./."
+ IntermediateDirectory=".\ia64-temp-release\pythoncore"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_ITANIUM /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS;USE_DL_EXPORT"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:IA64 /USELINK:MS_SDK"
+ AdditionalDependencies="getbuildinfo.o"
+ OutputFile="./python27.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="FALSE"
+ IgnoreDefaultLibraryNames="libc"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./python27.pdb"
+ SubSystem="2"
+ BaseAddress="0x1e000000"
+ ImportLibrary=".\./python27.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"
+ Description="generate buildinfo"
+ CommandLine="make_buildinfo.exe $(ConfigurationName)"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\Include"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseAMD64|Win32"
+ OutputDirectory="./."
+ IntermediateDirectory=".\amd64-temp-release\pythoncore"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/Zm200 /USECL:MS_OPTERON /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS;USE_DL_EXPORT"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:AMD64 /USELINK:MS_SDK"
+ AdditionalDependencies="getbuildinfo.o"
+ OutputFile="./python27.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ IgnoreDefaultLibraryNames="libc"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./python27.pdb"
+ SubSystem="2"
+ BaseAddress="0x1e000000"
+ ImportLibrary=".\./python27.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"
+ Description="generate buildinfo"
+ CommandLine="make_buildinfo.exe $(ConfigurationName)"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\Include"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="zlib"
+ Filter="">
+ <File
+ RelativePath="..\..\Modules\zlib\adler32.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\compress.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\crc32.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\deflate.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\gzclose.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\gzlib.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\gzread.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\gzwrite.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\infback.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inffast.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inflate.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inftrees.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\trees.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\uncompr.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlibmodule.c">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\zlib"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\zlib"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="ReleaseItanium|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\zlib"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="ReleaseAMD64|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\zlib"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\zutil.c">
+ </File>
+ </Filter>
+ <File
+ RelativePath="..\..\Modules\_bisectmodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\_codecs_cn.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\_codecs_hk.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\_codecs_iso2022.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\_codecs_jp.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\_codecs_kr.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\_codecs_tw.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_codecsmodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_csv.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_functoolsmodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_heapqmodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_hotshot.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_io\_iomodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_json.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_localemodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_lsprof.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_math.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_randommodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sre.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_struct.c">
+ </File>
+ <File
+ RelativePath="..\..\Pc\_subprocess.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_weakref.c">
+ </File>
+ <File
+ RelativePath="..\..\Pc\_winreg.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\abstract.c">
+ </File>
+ <File
+ RelativePath="..\..\Parser\acceler.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\arraymodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\_warnings.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\asdl.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\ast.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\audioop.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\binascii.c">
+ </File>
+ <File
+ RelativePath="..\..\Parser\bitset.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\bltinmodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\boolobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_io\bufferedio.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\bufferobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\bytearrayobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_io\bytesio.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\stringobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\bytes_methods.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\capsule.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\cellobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\ceval.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\classobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\cmathmodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\cobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\codecs.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\codeobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_collectionsmodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\compile.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\complexobject.c">
+ </File>
+ <File
+ RelativePath="..\..\PC\config.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\cPickle.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\cStringIO.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\datetimemodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\descrobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\dictobject.c">
+ </File>
+ <!--File
+ RelativePath="..\..\Objects\doubledigits.c">
+ </File-->
+ <File
+ RelativePath="..\..\PC\dl_nt.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\dtoa.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\dynload_win.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\enumobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\errnomodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\errors.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\exceptions.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_io\fileio.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\fileobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Parser\firstsets.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\floatobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\formatter_string.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\formatter_unicode.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\frameobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\frozen.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\funcobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\future.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\future_builtins.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\gcmodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\genobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\getargs.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\getcompiler.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\getcopyright.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\getopt.c">
+ </File>
+ <File
+ RelativePath="..\..\PC\getpathp.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\getplatform.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\getversion.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\graminit.c">
+ </File>
+ <File
+ RelativePath="..\..\Parser\grammar.c">
+ </File>
+ <File
+ RelativePath="..\..\Parser\grammar1.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\imageop.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\import.c">
+ </File>
+ <File
+ RelativePath="..\..\PC\import_nt.c">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Python"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Python"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="ReleaseItanium|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Python"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="ReleaseAMD64|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Python"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\Python\importdl.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\intobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_io\iobase.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\iterobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\itertoolsmodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Parser\listnode.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\listobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\longobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\main.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\marshal.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\mathmodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\md5.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\md5module.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\memoryobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Parser\metagrammar.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\methodobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\mmapmodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\modsupport.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\moduleobject.c">
+ </File>
+ <File
+ RelativePath="..\..\PC\msvcrtmodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\multibytecodec.c">
+ </File>
+ <File
+ RelativePath="..\..\Parser\myreadline.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\mysnprintf.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\mystrtoul.c">
+ </File>
+ <File
+ RelativePath="..\..\Parser\node.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\object.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\obmalloc.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\operator.c">
+ </File>
+ <File
+ RelativePath="..\..\Parser\parser.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\parsermodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Parser\parsetok.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\peephole.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\posixmodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\pyarena.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\pyctype.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\pyfpe.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\pymath.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\pystate.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\pystrcmp.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\pystrtod.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\Python-ast.c">
+ </File>
+ <File
+ RelativePath="..\..\PC\python_nt.rc">
+ </File>
+ <File
+ RelativePath="..\..\Python\pythonrun.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\random.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\rangeobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\rotatingtree.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\setobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\sha256module.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\sha512module.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\shamodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\signalmodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\sliceobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_io\stringio.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\stropmodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\structmember.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\structseq.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\symtable.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\symtablemodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\sysmodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_io\textio.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\thread.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\threadmodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\timemodule.c">
+ </File>
+ <File
+ RelativePath="..\..\Parser\tokenizer.c">
+ </File>
+ <File
+ RelativePath="..\..\Python\traceback.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\tupleobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\typeobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\unicodectype.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\unicodeobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Objects\weakrefobject.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\xxsubtype.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\zipimport.c">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS7.1/pythonw.vcproj b/PC/VS7.1/pythonw.vcproj
new file mode 100644
index 0000000..823d27c
--- /dev/null
+++ b/PC/VS7.1/pythonw.vcproj
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="pythonw"
+ SccProjectName="pythonw"
+ SccLocalPath="..\..\pc">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-debug\pythonw"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="./pythonw_d.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./pythonw_d.pdb"
+ SubSystem="2"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-release\pythonw"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile=".\./pythonw.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./pythonw.pdb"
+ SubSystem="2"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseItanium|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\ia64-temp-release\pythonw"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_ITANIUM /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:IA64 /USELINK:MS_SDK"
+ OutputFile=".\./pythonw.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./pythonw.pdb"
+ SubSystem="2"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseAMD64|Win32"
+ OutputDirectory="."
+ IntermediateDirectory="amd64-temp-release\pythonw"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_OPTERON"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:AMD64 /USELINK:MS_SDK"
+ OutputFile=".\./pythonw.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./pythonw.pdb"
+ SubSystem="2"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\PC\python_exe.rc">
+ </File>
+ <File
+ RelativePath="..\..\PC\WinMain.c">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS7.1/readme.txt b/PC/VS7.1/readme.txt
new file mode 100644
index 0000000..fdd3050
--- /dev/null
+++ b/PC/VS7.1/readme.txt
@@ -0,0 +1,426 @@
+Building Python using VC++ 7.1
+-------------------------------------
+This directory is used to build Python for Win32 platforms, e.g. Windows
+95, 98 and NT. It requires Microsoft Visual C++ 7.1
+(a.k.a. Visual Studio .NET 2003).
+(For other Windows platforms and compilers, see ../PC/readme.txt.)
+
+All you need to do is open the workspace "pcbuild.sln" in MSVC++, select
+the Debug or Release setting (using "Solution Configuration" from
+the "Standard" toolbar"), and build the projects.
+
+The proper order to build subprojects:
+
+1) pythoncore (this builds the main Python DLL and library files,
+ python27.{dll, lib} in Release mode)
+ NOTE: in previous releases, this subproject was
+ named after the release number, e.g. python20.
+
+2) python (this builds the main Python executable,
+ python.exe in Release mode)
+
+3) the other subprojects, as desired or needed (note: you probably don't
+ want to build most of the other subprojects, unless you're building an
+ entire Python distribution from scratch, or specifically making changes
+ to the subsystems they implement, or are running a Python core buildbot
+ test slave; see SUBPROJECTS below)
+
+When using the Debug setting, the output files have a _d added to
+their name: python27_d.dll, python_d.exe, parser_d.pyd, and so on.
+
+SUBPROJECTS
+-----------
+These subprojects should build out of the box. Subprojects other than the
+main ones (pythoncore, python, pythonw) generally build a DLL (renamed to
+.pyd) from a specific module so that users don't have to load the code
+supporting that module unless they import the module.
+
+pythoncore
+ .dll and .lib
+python
+ .exe
+pythonw
+ pythonw.exe, a variant of python.exe that doesn't pop up a DOS box
+_socket
+ socketmodule.c
+_testcapi
+ tests of the Python C API, run via Lib/test/test_capi.py, and
+ implemented by module Modules/_testcapimodule.c
+pyexpat
+ Python wrapper for accelerated XML parsing, which incorporates stable
+ code from the Expat project: http://sourceforge.net/projects/expat/
+select
+ selectmodule.c
+unicodedata
+ large tables of Unicode data
+winsound
+ play sounds (typically .wav files) under Windows
+
+The following subprojects will generally NOT build out of the box. They
+wrap code Python doesn't control, and you'll need to download the base
+packages first and unpack them into siblings of PC's parent
+directory; for example, if this directory is ....\dist\trunk\PC\VS7.1,
+unpack into new subdirectories of dist\.
+
+_tkinter
+ Python wrapper for the Tk windowing system. Requires building
+ Tcl/Tk first. Following are instructions for Tcl/Tk 8.4.12.
+
+ Get source
+ ----------
+ In the dist directory, run
+ svn export http://svn.python.org/projects/external/tcl8.4.12
+ svn export http://svn.python.org/projects/external/tk8.4.12
+ svn export http://svn.python.org/projects/external/tix-8.4.0
+
+ Build Tcl first (done here w/ MSVC 7.1 on Windows XP)
+ ---------------
+ Use "Start -> All Programs -> Microsoft Visual Studio .NET 2003
+ -> Visual Studio .NET Tools -> Visual Studio .NET 2003 Command Prompt"
+ to get a shell window with the correct environment settings
+ cd dist\tcl8.4.12\win
+ nmake -f makefile.vc
+ nmake -f makefile.vc INSTALLDIR=..\..\tcltk install
+
+ XXX Should we compile with OPTS=threads?
+
+ Optional: run tests, via
+ nmake -f makefile.vc test
+
+ On WinXP Pro, wholly up to date as of 30-Aug-2004:
+ all.tcl: Total 10678 Passed 9969 Skipped 709 Failed 0
+ Sourced 129 Test Files.
+
+ Build Tk
+ --------
+ cd dist\tk8.4.12\win
+ nmake -f makefile.vc TCLDIR=..\..\tcl8.4.12
+ nmake -f makefile.vc TCLDIR=..\..\tcl8.4.12 INSTALLDIR=..\..\tcltk install
+
+ XXX Should we compile with OPTS=threads?
+
+ XXX Our installer copies a lot of stuff out of the Tcl/Tk install
+ XXX directory. Is all of that really needed for Python use of Tcl/Tk?
+
+ Optional: run tests, via
+ nmake -f makefile.vc TCLDIR=..\..\tcl8.4.12 test
+
+ On WinXP Pro, wholly up to date as of 30-Aug-2004:
+ all.tcl: Total 8420 Passed 6826 Skipped 1581 Failed 13
+ Sourced 91 Test Files.
+ Files with failing tests: canvImg.test scrollbar.test textWind.test winWm.test
+
+ Built Tix
+ ---------
+ cd dist\tix-8.4.0\win
+ nmake -f python.mak
+ nmake -f python.mak install
+
+bz2
+ Python wrapper for the libbz2 compression library. Homepage
+ http://sources.redhat.com/bzip2/
+ Download the source from the python.org copy into the dist
+ directory:
+
+ svn export http://svn.python.org/projects/external/bzip2-1.0.3
+
+ A custom pre-link step in the bz2 project settings should manage to
+ build bzip2-1.0.3\libbz2.lib by magic before bz2.pyd (or bz2_d.pyd) is
+ linked in VS7.1\.
+ However, the bz2 project is not smart enough to remove anything under
+ bzip2-1.0.3\ when you do a clean, so if you want to rebuild bzip2.lib
+ you need to clean up bzip2-1.0.3\ by hand.
+
+ The build step shouldn't yield any warnings or errors, and should end
+ by displaying 6 blocks each terminated with
+ FC: no differences encountered
+
+ All of this managed to build bzip2-1.0.3\libbz2.lib, which the Python
+ project links in.
+
+
+_bsddb
+ To use the version of bsddb that Python is built with by default, invoke
+ (in the dist directory)
+
+ svn export http://svn.python.org/projects/external/db-4.4.20
+
+
+ Then open a VS.NET 2003 shell, and invoke:
+
+ devenv db-4.4.20\build_win32\Berkeley_DB.sln /build Release /project db_static
+
+ and do that a second time for a Debug build too:
+
+ devenv db-4.4.20\build_win32\Berkeley_DB.sln /build Debug /project db_static
+
+ Alternatively, if you want to start with the original sources,
+ go to Sleepycat's download page:
+ http://www.sleepycat.com/downloads/releasehistorybdb.html
+
+ and download version 4.4.20.
+
+ With or without strong cryptography? You can choose either with or
+ without strong cryptography, as per the instructions below. By
+ default, Python is built and distributed WITHOUT strong crypto.
+
+ Unpack the sources; if you downloaded the non-crypto version, rename
+ the directory from db-4.4.20.NC to db-4.4.20.
+
+ Now apply any patches that apply to your version.
+
+ Open
+ dist\db-4.4.20\docs\index.html
+
+ and follow the "Windows->Building Berkeley DB with Visual C++ .NET"
+ instructions for building the Sleepycat
+ software. Note that Berkeley_DB.dsw is in the build_win32 subdirectory.
+ Build the "db_static" project, for "Release" mode.
+
+ To run extensive tests, pass "-u bsddb" to regrtest.py. test_bsddb3.py
+ is then enabled. Running in verbose mode may be helpful.
+
+ XXX The test_bsddb3 tests don't always pass, on Windows (according to
+ XXX me) or on Linux (according to Barry). (I had much better luck
+ XXX on Win2K than on Win98SE.) The common failure mode across platforms
+ XXX is
+ XXX DBAgainError: (11, 'Resource temporarily unavailable -- unable
+ XXX to join the environment')
+ XXX
+ XXX and it appears timing-dependent. On Win2K I also saw this once:
+ XXX
+ XXX test02_SimpleLocks (bsddb.test.test_thread.HashSimpleThreaded) ...
+ XXX Exception in thread reader 1:
+ XXX Traceback (most recent call last):
+ XXX File "C:\Code\python\lib\threading.py", line 411, in __bootstrap
+ XXX self.run()
+ XXX File "C:\Code\python\lib\threading.py", line 399, in run
+ XXX apply(self.__target, self.__args, self.__kwargs)
+ XXX File "C:\Code\python\lib\bsddb\test\test_thread.py", line 268, in
+ XXX readerThread
+ XXX rec = c.next()
+ XXX DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed
+ XXX to resolve a deadlock')
+ XXX
+ XXX I'm told that DBLockDeadlockError is expected at times. It
+ XXX doesn't cause a test to fail when it happens (exceptions in
+ XXX threads are invisible to unittest).
+
+ Building for Win64:
+ - open a VS.NET 2003 command prompt
+ - run the SDK setenv.cmd script, passing /RETAIL and the target
+ architecture (/SRV64 for Itanium, /X64 for AMD64)
+ - build BerkeleyDB with the solution configuration matching the
+ target ("Release IA64" for Itanium, "Release AMD64" for AMD64), e.g.
+ devenv db-4.4.20\build_win32\Berkeley_DB.sln /build "Release AMD64" /project db_static /useenv
+
+_sqlite3
+ Python wrapper for SQLite library.
+
+ Get the source code through
+
+ svn export http://svn.python.org/projects/external/sqlite-source-3.3.4
+
+ To use the extension module in a Python build tree, copy sqlite3.dll into
+ the VS7.1 folder.
+
+_ssl
+ Python wrapper for the secure sockets library.
+
+ Get the source code through
+
+ svn export http://svn.python.org/projects/external/openssl-0.9.8a
+
+ Alternatively, get the latest version from http://www.openssl.org.
+ You can (theoretically) use any version of OpenSSL you like - the
+ build process will automatically select the latest version.
+
+ You must also install ActivePerl from
+ http://www.activestate.com/Products/ActivePerl/
+ as this is used by the OpenSSL build process. Complain to them <wink>.
+
+ The MSVC project simply invokes build_ssl.py to perform
+ the build. This Python script locates and builds your OpenSSL
+ installation, then invokes a simple makefile to build the final .pyd.
+
+ build_ssl.py attempts to catch the most common errors (such as not
+ being able to find OpenSSL sources, or not being able to find a Perl
+ that works with OpenSSL) and give a reasonable error message.
+ If you have a problem that doesn't seem to be handled correctly
+ (eg, you know you have ActivePerl but we can't find it), please take
+ a peek at build_ssl.py and suggest patches. Note that build_ssl.py
+ should be able to be run directly from the command-line.
+
+ build_ssl.py/MSVC isn't clever enough to clean OpenSSL - you must do
+ this by hand.
+
+Building for Itanium
+--------------------
+
+The project files support a ReleaseItanium configuration which creates
+Win64/Itanium binaries. For this to work, you need to install the Platform
+SDK, in particular the 64-bit support. This includes an Itanium compiler
+(future releases of the SDK likely include an AMD64 compiler as well).
+In addition, you need the Visual Studio plugin for external C compilers,
+from http://sf.net/projects/vsextcomp. The plugin will wrap cl.exe, to
+locate the proper target compiler, and convert compiler options
+accordingly. The project files require atleast version 0.9.
+
+Building for AMD64
+------------------
+
+The build process for the ReleaseAMD64 configuration is very similar
+to the Itanium configuration; make sure you use the latest version of
+vsextcomp.
+
+Building Python Using the free MS Toolkit Compiler
+--------------------------------------------------
+
+The build process for Visual C++ can be used almost unchanged with the free MS
+Toolkit Compiler. This provides a way of building Python using freely
+available software.
+
+Note that Microsoft have withdrawn the free MS Toolkit Compiler, so this can
+no longer be considered a supported option. The instructions are still
+correct, but you need to already have a copy of the compiler in order to use
+them. Microsoft now supply Visual C++ 2008 Express Edition for free, but this
+is NOT compatible with Visual C++ 7.1 (it uses a different C runtime), and so
+cannot be used to build a version of Python compatible with the standard
+python.org build. If you are interested in using Visual C++ 2008 Express
+Edition, however, you should look at the PCBuild directory.
+
+Requirements
+
+ To build Python, the following tools are required:
+
+ * The Visual C++ Toolkit Compiler
+ no longer available for download - see above
+ * A recent Platform SDK
+ from http://www.microsoft.com/downloads/details.aspx?FamilyID=484269e2-3b89-47e3-8eb7-1f2be6d7123a
+ * The .NET 1.1 SDK
+ from http://www.microsoft.com/downloads/details.aspx?FamilyID=9b3a2ca6-3647-4070-9f41-a333c6b9181d
+
+ [Does anyone have better URLs for the last 2 of these?]
+
+ The toolkit compiler is needed as it is an optimising compiler (the
+ compiler supplied with the .NET SDK is a non-optimising version). The
+ platform SDK is needed to provide the Windows header files and libraries
+ (the Windows 2003 Server SP1 edition, typical install, is known to work -
+ other configurations or versions are probably fine as well). The .NET 1.1
+ SDK is needed because it contains a version of msvcrt.dll which links to
+ the msvcr71.dll CRT. Note that the .NET 2.0 SDK is NOT acceptable, as it
+ references msvcr80.dll.
+
+ All of the above items should be installed as normal.
+
+ If you intend to build the openssl (needed for the _ssl extension) you
+ will need the C runtime sources installed as part of the platform SDK.
+
+ In addition, you will need Nant, available from
+ http://nant.sourceforge.net. The 0.85 release candidate 3 version is known
+ to work. This is the latest released version at the time of writing. Later
+ "nightly build" versions are known NOT to work - it is not clear at
+ present whether future released versions will work.
+
+Setting up the environment
+
+ Start a platform SDK "build environment window" from the start menu. The
+ "Windows XP 32-bit retail" version is known to work.
+
+ Add the following directories to your PATH:
+ * The toolkit compiler directory
+ * The SDK "Win64" binaries directory
+ * The Nant directory
+ Add to your INCLUDE environment variable:
+ * The toolkit compiler INCLUDE directory
+ Add to your LIB environment variable:
+ * The toolkit compiler LIB directory
+ * The .NET SDK Visual Studio 2003 VC7\lib directory
+
+ The following commands should set things up as you need them:
+
+ rem Set these values according to where you installed the software
+ set TOOLKIT=C:\Program Files\Microsoft Visual C++ Toolkit 2003
+ set SDK=C:\Program Files\Microsoft Platform SDK
+ set NET=C:\Program Files\Microsoft Visual Studio .NET 2003
+ set NANT=C:\Utils\Nant
+
+ set PATH=%TOOLKIT%\bin;%PATH%;%SDK%\Bin\win64;%NANT%\bin
+ set INCLUDE=%TOOLKIT%\include;%INCLUDE%
+ set LIB=%TOOLKIT%\lib;%NET%\VC7\lib;%LIB%
+
+ The "win64" directory from the SDK is added to supply executables such as
+ "cvtres" and "lib", which are not available elsewhere. The versions in the
+ "win64" directory are 32-bit programs, so they are fine to use here.
+
+ That's it. To build Python (the core only, no binary extensions which
+ depend on external libraries) you just need to issue the command
+
+ nant -buildfile:python.build all
+
+ from within the VS7.1 directory.
+
+Extension modules
+
+ To build those extension modules which require external libraries
+ (_tkinter, bz2, _bsddb, _sqlite3, _ssl) you can follow the instructions
+ for the Visual Studio build above, with a few minor modifications. These
+ instructions have only been tested using the sources in the Python
+ subversion repository - building from original sources should work, but
+ has not been tested.
+
+ For each extension module you wish to build, you should remove the
+ associated include line from the excludeprojects section of pc.build.
+
+ The changes required are:
+
+ _tkinter
+ The tix makefile (tix-8.4.0\win\makefile.vc) must be modified to
+ remove references to TOOLS32. The relevant lines should be changed to
+ read:
+ cc32 = cl.exe
+ link32 = link.exe
+ include32 =
+ The remainder of the build instructions will work as given.
+
+ bz2
+ No changes are needed
+
+ _bsddb
+ The file db.build should be copied from the Python PCBuild directory
+ to the directory db-4.4.20\build_win32.
+
+ The file db_static.vcproj in db-4.4.20\build_win32 should be edited to
+ remove the string "$(SolutionDir)" - this occurs in 2 places, only
+ relevant for 64-bit builds. (The edit is required as otherwise, nant
+ wants to read the solution file, which is not in a suitable form).
+
+ The bsddb library can then be build with the command
+ nant -buildfile:db.build all
+ run from the db-4.4.20\build_win32 directory.
+
+ _sqlite3
+ No changes are needed. However, in order for the tests to succeed, a
+ copy of sqlite3.dll must be downloaded, and placed alongside
+ python.exe.
+
+ _ssl
+ The documented build process works as written. However, it needs a
+ copy of the file setargv.obj, which is not supplied in the platform
+ SDK. However, the sources are available (in the crt source code). To
+ build setargv.obj, proceed as follows:
+
+ Copy setargv.c, cruntime.h and internal.h from %SDK%\src\crt to a
+ temporary directory.
+ Compile using "cl /c /I. /MD /D_CRTBLD setargv.c"
+ Copy the resulting setargv.obj to somewhere on your LIB environment
+ (%SDK%\lib is a reasonable place).
+
+ With setargv.obj in place, the standard build process should work
+ fine.
+
+YOUR OWN EXTENSION DLLs
+-----------------------
+If you want to create your own extension module DLL, there's an example
+with easy-to-follow instructions in ../PC/example/; read the file
+readme.txt there first.
diff --git a/PC/VS7.1/rmpyc.py b/PC/VS7.1/rmpyc.py
new file mode 100644
index 0000000..43c8576
--- /dev/null
+++ b/PC/VS7.1/rmpyc.py
@@ -0,0 +1,25 @@
+# Remove all the .pyc and .pyo files under ../Lib.
+
+
+def deltree(root):
+ import os
+ from os.path import join
+
+ npyc = npyo = 0
+ for root, dirs, files in os.walk(root):
+ for name in files:
+ delete = False
+ if name.endswith('.pyc'):
+ delete = True
+ npyc += 1
+ elif name.endswith('.pyo'):
+ delete = True
+ npyo += 1
+
+ if delete:
+ os.remove(join(root, name))
+
+ return npyc, npyo
+
+npyc, npyo = deltree("../Lib")
+print npyc, ".pyc deleted,", npyo, ".pyo deleted"
diff --git a/PC/VS7.1/rt.bat b/PC/VS7.1/rt.bat
new file mode 100755
index 0000000..29801d2
--- /dev/null
+++ b/PC/VS7.1/rt.bat
@@ -0,0 +1,52 @@
+@echo off
+rem Run Tests. Run the regression test suite.
+rem Usage: rt [-d] [-O] [-q] regrtest_args
+rem -d Run Debug build (python_d.exe). Else release build.
+rem -O Run python.exe or python_d.exe (see -d) with -O.
+rem -q "quick" -- normally the tests are run twice, the first time
+rem after deleting all the .py[co] files reachable from Lib/.
+rem -q runs the tests just once, and without deleting .py[co] files.
+rem All leading instances of these switches are shifted off, and
+rem whatever remains is passed to regrtest.py. For example,
+rem rt -O -d -x test_thread
+rem runs
+rem python_d -O ../../lib/test/regrtest.py -x test_thread
+rem twice, and
+rem rt -q -g test_binascii
+rem runs
+rem python_d ../../lib/test/regrtest.py -g test_binascii
+rem to generate the expected-output file for binascii quickly.
+rem
+rem Confusing: if you want to pass a comma-separated list, like
+rem -u network,largefile
+rem then you have to quote it on the rt line, like
+rem rt -u "network,largefile"
+
+setlocal
+
+set exe=python
+set qmode=
+set dashO=
+PATH %PATH%;..\..\..\tcltk\bin
+
+:CheckOpts
+if "%1"=="-O" (set dashO=-O) & shift & goto CheckOpts
+if "%1"=="-q" (set qmode=yes) & shift & goto CheckOpts
+if "%1"=="-d" (set exe=python_d) & shift & goto CheckOpts
+
+set cmd=%exe% %dashO% -E -tt ../../lib/test/regrtest.py %1 %2 %3 %4 %5 %6 %7 %8 %9
+if defined qmode goto Qmode
+
+echo Deleting .pyc/.pyo files ...
+%exe% rmpyc.py
+
+echo on
+%cmd%
+@echo off
+
+echo About to run again without deleting .pyc/.pyo first:
+pause
+
+:Qmode
+echo on
+%cmd%
diff --git a/PC/VS7.1/select.vcproj b/PC/VS7.1/select.vcproj
new file mode 100644
index 0000000..79c26f3
--- /dev/null
+++ b/PC/VS7.1/select.vcproj
@@ -0,0 +1,258 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="select"
+ SccProjectName="select"
+ SccLocalPath="..">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-release\select"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ OutputFile="./select.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ IgnoreDefaultLibraryNames="libc"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./select.pdb"
+ SubSystem="2"
+ BaseAddress="0x1D110000"
+ ImportLibrary=".\./select.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-debug\select"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;_DEBUG;WIN32;_WINDOWS"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ OutputFile="./select_d.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ IgnoreDefaultLibraryNames="libc,msvcrt"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./select_d.pdb"
+ SubSystem="2"
+ BaseAddress="0x1D110000"
+ ImportLibrary=".\./select_d.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseItanium|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\ia64-temp-release\select"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_ITANIUM /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:IA64 /USELINK:MS_SDK"
+ AdditionalDependencies="ws2_32.lib"
+ OutputFile="./select.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ IgnoreDefaultLibraryNames="libc"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./select.pdb"
+ SubSystem="2"
+ BaseAddress="0x1D110000"
+ ImportLibrary=".\./select.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseAMD64|Win32"
+ OutputDirectory="."
+ IntermediateDirectory="amd64-temp-release\select"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_OPTERON"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;NDEBUG;WIN32;_WINDOWS"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:AMD64 /USELINK:MS_SDK"
+ AdditionalDependencies="ws2_32.lib"
+ OutputFile="./select.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ IgnoreDefaultLibraryNames="libc"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./select.pdb"
+ SubSystem="2"
+ BaseAddress="0x1D110000"
+ ImportLibrary=".\./select.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\Modules\selectmodule.c">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS7.1/unicodedata.vcproj b/PC/VS7.1/unicodedata.vcproj
new file mode 100644
index 0000000..b6f2808
--- /dev/null
+++ b/PC/VS7.1/unicodedata.vcproj
@@ -0,0 +1,247 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="unicodedata"
+ SccProjectName="unicodedata"
+ SccLocalPath="..">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-release\unicodedata"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;NDEBUG;_WINDOWS;_USRDLL;MMAP_EXPORTS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="./unicodedata.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ProgramDatabaseFile=".\./unicodedata.pdb"
+ BaseAddress="0x1D120000"
+ ImportLibrary=".\./unicodedata.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-debug\unicodedata"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;_DEBUG;_WINDOWS;_USRDLL;MMAP_EXPORTS"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="./unicodedata_d.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./unicodedata_d.pdb"
+ BaseAddress="0x1D120000"
+ ImportLibrary=".\./unicodedata_d.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseItanium|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\ia64-temp-release\unicodedata"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_ITANIUM /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;NDEBUG;_WINDOWS;_USRDLL;MMAP_EXPORTS"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:IA64 /USELINK:MS_SDK"
+ OutputFile="./unicodedata.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ProgramDatabaseFile=".\./unicodedata.pdb"
+ BaseAddress="0x1D120000"
+ ImportLibrary=".\./unicodedata.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseAMD64|Win32"
+ OutputDirectory="."
+ IntermediateDirectory="amd64-temp-release\unicodedata"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_OPTERON /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;NDEBUG;_WINDOWS;_USRDLL;MMAP_EXPORTS"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:AMD64 /USELINK:MS_SDK"
+ OutputFile="./unicodedata.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ProgramDatabaseFile=".\./unicodedata.pdb"
+ BaseAddress="0x1D120000"
+ ImportLibrary=".\./unicodedata.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\Modules\unicodedata.c">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS7.1/w9xpopen.vcproj b/PC/VS7.1/w9xpopen.vcproj
new file mode 100644
index 0000000..ed133fb
--- /dev/null
+++ b/PC/VS7.1/w9xpopen.vcproj
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="w9xpopen"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-debug\w9xpopen"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;_DEBUG;_WINDOWS"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="./w9xpopen_d.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./w9xpopen_d.pdb"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-release\w9xpopen"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;NDEBUG;_WINDOWS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile=".\./w9xpopen.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ProgramDatabaseFile=".\./w9xpopen.pdb"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\PC\w9xpopen.c">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS7.1/winsound.vcproj b/PC/VS7.1/winsound.vcproj
new file mode 100644
index 0000000..66d29a3
--- /dev/null
+++ b/PC/VS7.1/winsound.vcproj
@@ -0,0 +1,251 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="winsound"
+ SccProjectName="winsound"
+ SccLocalPath="..\..\pc">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-debug\winsound"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;_DEBUG;_WINDOWS;_USRDLL;WINSOUND_EXPORTS"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="winmm.lib"
+ OutputFile="./winsound_d.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\./winsound_d.pdb"
+ BaseAddress="0x1D160000"
+ ImportLibrary=".\./winsound_d.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\x86-temp-release\winsound"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;NDEBUG;_WINDOWS;_USRDLL;WINSOUND_EXPORTS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="winmm.lib"
+ OutputFile="./winsound.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ProgramDatabaseFile=".\./winsound.pdb"
+ BaseAddress="0x1D160000"
+ ImportLibrary=".\./winsound.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseItanium|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\ia64-temp-release\winsound"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_ITANIUM /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;NDEBUG;_WINDOWS;_USRDLL;WINSOUND_EXPORTS"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:IA64 /USELINK:MS_SDK"
+ AdditionalDependencies="winmm.lib"
+ OutputFile="./winsound.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ProgramDatabaseFile=".\./winsound.pdb"
+ BaseAddress="0x1D160000"
+ ImportLibrary=".\./winsound.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="ReleaseAMD64|Win32"
+ OutputDirectory="."
+ IntermediateDirectory="amd64-temp-release\winsound"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions=" /USECL:MS_OPTERON /GS-"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\PC"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE;WIN32;NDEBUG;_WINDOWS;_USRDLL;WINSOUND_EXPORTS"
+ StringPooling="TRUE"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions=" /MACHINE:AMD64 /USELINK:MS_SDK"
+ AdditionalDependencies="winmm.lib"
+ OutputFile="./winsound.pyd"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ProgramDatabaseFile=".\./winsound.pdb"
+ BaseAddress="0x1D160000"
+ ImportLibrary=".\./winsound.lib"
+ TargetMachine="0"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\PC\winsound.c">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/_bsddb.vcproj b/PC/VS8.0/_bsddb.vcproj
new file mode 100644
index 0000000..50da1ce
--- /dev/null
+++ b/PC/VS8.0/_bsddb.vcproj
@@ -0,0 +1,1463 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="_bsddb"
+ ProjectGUID="{B4D38F3F-68FB-42EC-A45D-E00657BB3627}"
+ RootNamespace="_bsddb"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..\db-4.7.25.0\build_windows,..\..\..\db-4.7.25.0\build_windows\.."
+ PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(bsddbDepLibs)"
+ BaseAddress="0x1e180000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..\db-4.7.25.0\build_windows,..\..\..\db-4.7.25.0\build_windows\.."
+ PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(bsddbDepLibs)"
+ BaseAddress="0x1e180000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..\db-4.7.25.0\build_windows,..\..\..\db-4.7.25.0\build_windows\.."
+ PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(bsddbDepLibs)"
+ BaseAddress="0x1e180000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..\db-4.7.25.0\build_windows,..\..\..\db-4.7.25.0\build_windows\.."
+ PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(bsddbDepLibs)"
+ BaseAddress="0x1e180000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..\db-4.7.25.0\build_windows,..\..\..\db-4.7.25.0\build_windows\.."
+ PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(bsddbDepLibs)"
+ BaseAddress="0x1e180000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..\db-4.7.25.0\build_windows,..\..\..\db-4.7.25.0\build_windows\.."
+ PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(bsddbDepLibs)"
+ BaseAddress="0x1e180000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..\db-4.7.25.0\build_windows,..\..\..\db-4.7.25.0\build_windows\.."
+ PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(bsddbDepLibs)"
+ BaseAddress="0x1e180000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..\db-4.7.25.0\build_windows,..\..\..\db-4.7.25.0\build_windows\.."
+ PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(bsddbDepLibs)"
+ BaseAddress="0x1e180000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Header Files"
+ >
+ <File
+ RelativePath="..\..\Modules\bsddb.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_bsddb.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Berkeley DB 4.7.25 Source Files"
+ >
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\crypto\aes_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\btree\bt_compact.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\btree\bt_compare.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\btree\bt_conv.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\btree\bt_curadj.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\btree\bt_cursor.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\btree\bt_delete.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\btree\bt_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\btree\bt_open.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\btree\bt_put.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\btree\bt_rec.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\btree\bt_reclaim.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\btree\bt_recno.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\btree\bt_rsearch.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\btree\bt_search.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\btree\bt_split.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\btree\bt_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\btree\bt_upgrade.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\btree\bt_verify.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\btree\btree_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\crdel_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\crdel_rec.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\crypto\crypto.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_am.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\common\db_byteorder.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_cam.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_cds.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_conv.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_dispatch.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_dup.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\common\db_err.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\common\db_getlong.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\common\db_idspace.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_iface.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_join.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\common\db_log2.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_meta.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_open.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_overflow.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_ovfl_vrfy.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_pr.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_rec.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_reclaim.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_remove.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_rename.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_ret.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_setid.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_setlsn.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\common\db_shash.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_stati.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_truncate.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_upg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_upg_opd.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_vrfy.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\db\db_vrfyutil.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\dbm\dbm.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\dbreg\dbreg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\dbreg\dbreg_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\dbreg\dbreg_rec.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\dbreg\dbreg_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\dbreg\dbreg_util.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\common\dbt.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\env\env_alloc.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\env\env_config.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\env\env_failchk.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\env\env_file.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\env\env_globals.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\env\env_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\env\env_name.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\env\env_open.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\env\env_recover.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\env\env_region.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\env\env_register.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\env\env_sig.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\env\env_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\fileops\fileops_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\fileops\fop_basic.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\fileops\fop_rec.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\fileops\fop_util.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\hash\hash.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\hash\hash_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\hash\hash_conv.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\hash\hash_dup.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\hash\hash_func.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\hash\hash_meta.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\hash\hash_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\hash\hash_open.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\hash\hash_page.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\hash\hash_rec.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\hash\hash_reclaim.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\hash\hash_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\hash\hash_upgrade.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\hash\hash_verify.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\hmac\hmac.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\hsearch\hsearch.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\lock\lock.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\lock\lock_deadlock.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\lock\lock_failchk.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\lock\lock_id.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\lock\lock_list.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\lock\lock_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\lock\lock_region.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\lock\lock_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\lock\lock_timer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\lock\lock_util.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\log\log.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\log\log_archive.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\log\log_compare.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\log\log_debug.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\log\log_get.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\log\log_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\log\log_put.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\log\log_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\common\mkpath.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\mp\mp_alloc.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\mp\mp_bh.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\mp\mp_fget.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\mp\mp_fmethod.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\mp\mp_fopen.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\mp\mp_fput.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\mp\mp_fset.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\mp\mp_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\mp\mp_mvcc.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\mp\mp_region.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\mp\mp_register.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\mp\mp_resize.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\mp\mp_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\mp\mp_sync.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\mp\mp_trickle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\crypto\mersenne\mt19937db.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\mutex\mut_alloc.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\mutex\mut_failchk.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\mutex\mut_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\mutex\mut_region.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\mutex\mut_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\mutex\mut_win32.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\common\openflags.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os\os_abort.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os_windows\os_abs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os\os_addrinfo.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os\os_alloc.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os_windows\os_clock.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os_windows\os_config.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os_windows\os_cpu.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os\os_ctime.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os_windows\os_dir.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os_windows\os_errno.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os_windows\os_fid.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os_windows\os_flock.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os_windows\os_fsync.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os_windows\os_getenv.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os_windows\os_handle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os_windows\os_map.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\common\os_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os_windows\os_mkdir.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os_windows\os_open.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os\os_pid.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os_windows\os_rename.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os\os_root.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os\os_rpath.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os_windows\os_rw.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os_windows\os_seek.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os\os_stack.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os_windows\os_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os\os_tmpdir.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os_windows\os_truncate.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os\os_uid.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os_windows\os_unlink.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\os_windows\os_yield.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\qam\qam.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\qam\qam_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\qam\qam_conv.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\qam\qam_files.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\qam\qam_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\qam\qam_open.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\qam\qam_rec.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\qam\qam_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\qam\qam_upgrade.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\qam\qam_verify.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\rep\rep_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\rep\rep_backup.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\rep\rep_elect.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\rep\rep_lease.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\rep\rep_log.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\rep\rep_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\rep\rep_record.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\rep\rep_region.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\rep\rep_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\rep\rep_util.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\rep\rep_verify.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\repmgr\repmgr_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\repmgr\repmgr_elect.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\repmgr\repmgr_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\repmgr\repmgr_msg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\repmgr\repmgr_net.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\repmgr\repmgr_queue.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\repmgr\repmgr_sel.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\repmgr\repmgr_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\repmgr\repmgr_util.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\repmgr\repmgr_windows.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\crypto\rijndael\rijndael-alg-fst.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\crypto\rijndael\rijndael-api-fst.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\sequence\seq_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\sequence\sequence.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\hmac\sha1.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\clib\strsep.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\txn\txn.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\txn\txn_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\txn\txn_chkpt.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\txn\txn_failchk.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\txn\txn_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\txn\txn_rec.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\txn\txn_recover.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\txn\txn_region.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\txn\txn_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\txn\txn_util.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\common\util_cache.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\common\util_log.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\common\util_sig.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\xa\xa.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\xa\xa_db.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\xa\xa_map.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.7.25.0\build_windows\..\common\zerofill.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/_bsddb44.vcproj b/PC/VS8.0/_bsddb44.vcproj
new file mode 100644
index 0000000..b7bc519
--- /dev/null
+++ b/PC/VS8.0/_bsddb44.vcproj
@@ -0,0 +1,1252 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="_bsddb44"
+ ProjectGUID="{62172C7D-B39E-409A-B352-370FF5098C19}"
+ RootNamespace="_bsddb44"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="4"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..\db-4.4.20\build_win32;..\..\..\db-4.4.20\build_win32\.."
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..\db-4.4.20\build_win32;..\..\..\db-4.4.20\build_win32\.."
+ PreprocessorDefinitions="DIAGNOSTIC"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="4"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..\db-4.4.20\build_win32;..\..\..\db-4.4.20\build_win32\.."
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..\db-4.4.20\build_win32;..\..\..\db-4.4.20\build_win32\.."
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="4"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..\db-4.4.20\build_win32;..\..\..\db-4.4.20\build_win32\.."
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..\db-4.4.20\build_win32;..\..\..\db-4.4.20\build_win32\.."
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="4"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..\db-4.4.20\build_win32;..\..\..\db-4.4.20\build_win32\.."
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..\db-4.4.20\build_win32;..\..\..\db-4.4.20\build_win32\.."
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\btree\bt_compact.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\btree\bt_compare.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\btree\bt_conv.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\btree\bt_curadj.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\btree\bt_cursor.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\btree\bt_delete.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\btree\bt_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\btree\bt_open.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\btree\bt_put.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\btree\bt_rec.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\btree\bt_reclaim.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\btree\bt_recno.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\btree\bt_rsearch.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\btree\bt_search.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\btree\bt_split.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\btree\bt_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\btree\bt_upgrade.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\btree\bt_verify.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\btree\btree_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\crdel_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\crdel_rec.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\common\crypto_stub.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_am.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\common\db_byteorder.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_cam.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\common\db_clock.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_conv.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_dispatch.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_dup.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\common\db_err.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\common\db_getlong.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\common\db_idspace.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_iface.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_join.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\common\db_log2.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_meta.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_open.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_overflow.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_ovfl_vrfy.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_pr.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_rec.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_reclaim.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_remove.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_rename.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_ret.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\env\db_salloc.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_setid.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_setlsn.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\env\db_shash.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_stati.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_truncate.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_upg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_upg_opd.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_vrfy.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\db\db_vrfyutil.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\dbm\dbm.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\dbreg\dbreg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\dbreg\dbreg_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\dbreg\dbreg_rec.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\dbreg\dbreg_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\dbreg\dbreg_util.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\env\env_failchk.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\env\env_file.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\env\env_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\env\env_open.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\env\env_recover.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\env\env_region.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\env\env_register.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\env\env_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\fileops\fileops_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\fileops\fop_basic.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\fileops\fop_rec.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\fileops\fop_util.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\hash\hash.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\hash\hash_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\hash\hash_conv.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\hash\hash_dup.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\hash\hash_func.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\hash\hash_meta.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\hash\hash_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\hash\hash_open.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\hash\hash_page.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\hash\hash_rec.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\hash\hash_reclaim.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\hash\hash_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\hash\hash_upgrade.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\hash\hash_verify.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\hmac\hmac.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\hsearch\hsearch.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\lock\lock.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\lock\lock_deadlock.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\lock\lock_failchk.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\lock\lock_id.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\lock\lock_list.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\lock\lock_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\lock\lock_region.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\lock\lock_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\lock\lock_timer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\lock\lock_util.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\log\log.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\log\log_archive.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\log\log_compare.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\log\log_debug.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\log\log_get.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\log\log_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\log\log_put.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\log\log_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\mp\mp_alloc.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\mp\mp_bh.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\mp\mp_fget.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\mp\mp_fmethod.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\mp\mp_fopen.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\mp\mp_fput.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\mp\mp_fset.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\mp\mp_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\mp\mp_region.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\mp\mp_register.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\mp\mp_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\mp\mp_sync.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\mp\mp_trickle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\mutex\mut_alloc.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\mutex\mut_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\mutex\mut_region.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\mutex\mut_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\mutex\mut_win32.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os_win32\os_abs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os\os_alloc.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os_win32\os_clock.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os_win32\os_config.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os_win32\os_dir.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os_win32\os_errno.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os_win32\os_fid.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os_win32\os_flock.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os_win32\os_fsync.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os_win32\os_handle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os\os_id.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os_win32\os_map.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os\os_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os\os_mkdir.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os\os_oflags.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os_win32\os_open.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os\os_region.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os_win32\os_rename.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os\os_root.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os\os_rpath.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os_win32\os_rw.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os_win32\os_seek.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os_win32\os_sleep.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os_win32\os_spin.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os_win32\os_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os\os_tmpdir.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os_win32\os_truncate.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\os_win32\os_unlink.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\qam\qam.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\qam\qam_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\qam\qam_conv.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\qam\qam_files.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\qam\qam_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\qam\qam_open.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\qam\qam_rec.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\qam\qam_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\qam\qam_upgrade.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\qam\qam_verify.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\rep\rep_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\rep\rep_backup.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\rep\rep_elect.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\rep\rep_log.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\rep\rep_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\rep\rep_record.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\rep\rep_region.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\rep\rep_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\rep\rep_util.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\rep\rep_verify.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\sequence\seq_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\sequence\sequence.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\hmac\sha1.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\clib\strcasecmp.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\txn\txn.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\txn\txn_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\txn\txn_chkpt.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\txn\txn_failchk.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\txn\txn_method.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\txn\txn_rec.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\txn\txn_recover.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\txn\txn_region.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\txn\txn_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\txn\txn_util.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\common\util_cache.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\common\util_log.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\common\util_sig.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\xa\xa.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\xa\xa_db.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\db-4.4.20\build_win32\..\xa\xa_map.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/_ctypes.vcproj b/PC/VS8.0/_ctypes.vcproj
new file mode 100644
index 0000000..eb19943
--- /dev/null
+++ b/PC/VS8.0/_ctypes.vcproj
@@ -0,0 +1,705 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="_ctypes"
+ ProjectGUID="{0E9791DB-593A-465F-98BC-681011311618}"
+ RootNamespace="_ctypes"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\_ctypes\libffi_msvc"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D1A0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\_ctypes\libffi_msvc"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D1A0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\_ctypes\libffi_msvc"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/EXPORT:DllGetClassObject,PRIVATE /EXPORT:DllCanUnloadNow,PRIVATE"
+ SubSystem="0"
+ BaseAddress="0x1D1A0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\_ctypes\libffi_msvc"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/EXPORT:DllGetClassObject,PRIVATE /EXPORT:DllCanUnloadNow,PRIVATE"
+ SubSystem="0"
+ BaseAddress="0x1D1A0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\_ctypes\libffi_msvc"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/EXPORT:DllGetClassObject,PRIVATE /EXPORT:DllCanUnloadNow,PRIVATE"
+ SubSystem="0"
+ BaseAddress="0x1D1A0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\_ctypes\libffi_msvc"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/EXPORT:DllGetClassObject,PRIVATE /EXPORT:DllCanUnloadNow,PRIVATE"
+ SubSystem="0"
+ BaseAddress="0x1D1A0000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\_ctypes\libffi_msvc"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/EXPORT:DllGetClassObject,PRIVATE /EXPORT:DllCanUnloadNow,PRIVATE"
+ SubSystem="0"
+ BaseAddress="0x1D1A0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\_ctypes\libffi_msvc"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/EXPORT:DllGetClassObject,PRIVATE /EXPORT:DllCanUnloadNow,PRIVATE"
+ SubSystem="0"
+ BaseAddress="0x1D1A0000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Header Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_ctypes\ctypes.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\ctypes_dlfcn.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\libffi_msvc\ffi.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\libffi_msvc\ffi_common.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\libffi_msvc\fficonfig.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\libffi_msvc\ffitarget.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_ctypes\_ctypes.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\callbacks.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\callproc.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\cfield.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\libffi_msvc\ffi.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\malloc_closure.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\libffi_msvc\prep_cif.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\stgdict.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\libffi_msvc\win32.c"
+ >
+ <FileConfiguration
+ Name="Debug|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="PGInstrument|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="PGUpdate|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\libffi_msvc\win64.asm"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|x64"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ CommandLine="ml64 /nologo /c /Zi /Fo &quot;$(IntDir)\win64.obj&quot; &quot;$(InputPath)&quot;&#x0D;&#x0A;"
+ Outputs="$(IntDir)\win64.obj"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|x64"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ CommandLine="ml64 /nologo /c /Fo &quot;$(IntDir)\win64.obj&quot; &quot;$(InputPath)&quot;&#x0D;&#x0A;"
+ Outputs="$(IntDir)\win64.obj"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="PGInstrument|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="PGInstrument|x64"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ CommandLine="ml64 /nologo /c /Fo &quot;$(IntDir)\win64.obj&quot; &quot;$(InputPath)&quot;&#x0D;&#x0A;"
+ Outputs="$(IntDir)\win64.obj"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="PGUpdate|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="PGUpdate|x64"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ CommandLine="ml64 /nologo /c /Fo &quot;$(IntDir)\win64.obj&quot; &quot;$(InputPath)&quot;&#x0D;&#x0A;"
+ Outputs="$(IntDir)\win64.obj"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/_ctypes_test.vcproj b/PC/VS8.0/_ctypes_test.vcproj
new file mode 100644
index 0000000..6e18a23
--- /dev/null
+++ b/PC/VS8.0/_ctypes_test.vcproj
@@ -0,0 +1,521 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="_ctypes_test"
+ ProjectGUID="{9EC7190A-249F-4180-A900-548FDCF3055F}"
+ RootNamespace="_ctypes_test"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Header Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_ctypes\_ctypes_test.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_ctypes\_ctypes_test.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/_elementtree.vcproj b/PC/VS8.0/_elementtree.vcproj
new file mode 100644
index 0000000..424cce4
--- /dev/null
+++ b/PC/VS8.0/_elementtree.vcproj
@@ -0,0 +1,613 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="_elementtree"
+ ProjectGUID="{17E1E049-C309-4D79-843F-AE483C264AEA}"
+ RootNamespace="_elementtree"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\expat"
+ PreprocessorDefinitions="XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;USE_PYEXPAT_CAPI;XML_STATIC;HAVE_MEMMOVE"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D100000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\expat"
+ PreprocessorDefinitions="XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;USE_PYEXPAT_CAPI;XML_STATIC;HAVE_MEMMOVE"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D100000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\expat"
+ PreprocessorDefinitions="XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;USE_PYEXPAT_CAPI;XML_STATIC;HAVE_MEMMOVE"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D100000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\expat"
+ PreprocessorDefinitions="XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;USE_PYEXPAT_CAPI;XML_STATIC;HAVE_MEMMOVE"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D100000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\expat"
+ PreprocessorDefinitions="XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;USE_PYEXPAT_CAPI;XML_STATIC;HAVE_MEMMOVE"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D100000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\expat"
+ PreprocessorDefinitions="XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;USE_PYEXPAT_CAPI;XML_STATIC;HAVE_MEMMOVE"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D100000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\expat"
+ PreprocessorDefinitions="XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;USE_PYEXPAT_CAPI;XML_STATIC;HAVE_MEMMOVE"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D100000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\expat"
+ PreprocessorDefinitions="XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;USE_PYEXPAT_CAPI;XML_STATIC;HAVE_MEMMOVE"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D100000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Header Files"
+ >
+ <File
+ RelativePath="..\..\Modules\expat\ascii.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\asciitab.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\expat.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\expat_config.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\expat_external.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\iasciitab.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\internal.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\latin1tab.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\macconfig.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\nametab.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\pyexpatns.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\utf8tab.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\winconfig.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\xmlrole.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\xmltok.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_elementtree.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\xmlparse.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\xmlrole.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\xmltok.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/_hashlib.vcproj b/PC/VS8.0/_hashlib.vcproj
new file mode 100644
index 0000000..f8bb962
--- /dev/null
+++ b/PC/VS8.0/_hashlib.vcproj
@@ -0,0 +1,545 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="_hashlib"
+ ProjectGUID="{447F05A8-F581-4CAC-A466-5AC7936E207E}"
+ RootNamespace="_hashlib"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\inc32"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib $(opensslDir)\out32\libeay32.lib $(opensslDir)\out32\ssleay32.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\inc64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib $(opensslDir)\out64\libeay32.lib $(opensslDir)\out64\ssleay32.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\inc32"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib $(opensslDir)\out32\libeay32.lib $(opensslDir)\out32\ssleay32.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\inc64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib $(opensslDir)\out64\libeay32.lib $(opensslDir)\out64\ssleay32.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\inc32"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib $(opensslDir)\out32\libeay32.lib $(opensslDir)\out32\ssleay32.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\inc64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib $(opensslDir)\out64\libeay32.lib $(opensslDir)\out64\ssleay32.lib"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\inc32"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib $(opensslDir)\out32\libeay32.lib $(opensslDir)\out32\ssleay32.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\inc64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib $(opensslDir)\out64\libeay32.lib $(opensslDir)\out64\ssleay32.lib"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_hashopenssl.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/_msi.vcproj b/PC/VS8.0/_msi.vcproj
new file mode 100644
index 0000000..6fefa12
--- /dev/null
+++ b/PC/VS8.0/_msi.vcproj
@@ -0,0 +1,529 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="_msi"
+ ProjectGUID="{31FFC478-7B4A-43E8-9954-8D03E2187E9C}"
+ RootNamespace="_msi"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fci.lib msi.lib rpcrt4.lib"
+ BaseAddress="0x1D160000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fci.lib msi.lib rpcrt4.lib"
+ BaseAddress="0x1D160000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fci.lib msi.lib rpcrt4.lib"
+ BaseAddress="0x1D160000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fci.lib msi.lib rpcrt4.lib"
+ BaseAddress="0x1D160000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fci.lib msi.lib rpcrt4.lib"
+ BaseAddress="0x1D160000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fci.lib msi.lib rpcrt4.lib"
+ BaseAddress="0x1D160000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fci.lib msi.lib rpcrt4.lib"
+ BaseAddress="0x1D160000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fci.lib msi.lib rpcrt4.lib"
+ BaseAddress="0x1D160000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\PC\_msi.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/_multiprocessing.vcproj b/PC/VS8.0/_multiprocessing.vcproj
new file mode 100644
index 0000000..ee76aec
--- /dev/null
+++ b/PC/VS8.0/_multiprocessing.vcproj
@@ -0,0 +1,557 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="_multiprocessing"
+ ProjectGUID="{9E48B300-37D1-11DD-8C41-005056C00008}"
+ RootNamespace="_multiprocessing"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Header Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_multiprocessing\multiprocessing.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_multiprocessing\connection.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_multiprocessing\multiprocessing.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_multiprocessing\pipe_connection.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_multiprocessing\semaphore.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_multiprocessing\socket_connection.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_multiprocessing\win32_functions.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/_socket.vcproj b/PC/VS8.0/_socket.vcproj
new file mode 100644
index 0000000..ccda14b
--- /dev/null
+++ b/PC/VS8.0/_socket.vcproj
@@ -0,0 +1,537 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="_socket"
+ ProjectGUID="{86937F53-C189-40EF-8CE8-8759D8E7D480}"
+ RootNamespace="_socket"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Header Files"
+ >
+ <File
+ RelativePath="..\..\Modules\socketmodule.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\socketmodule.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/_sqlite3.vcproj b/PC/VS8.0/_sqlite3.vcproj
new file mode 100644
index 0000000..d9e89c7
--- /dev/null
+++ b/PC/VS8.0/_sqlite3.vcproj
@@ -0,0 +1,613 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="_sqlite3"
+ ProjectGUID="{13CECB97-4119-4316-9D42-8534019A5A44}"
+ RootNamespace="_sqlite3"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
+ PreprocessorDefinitions="MODULE_NAME=\&quot;sqlite3\&quot;"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e180000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
+ PreprocessorDefinitions="MODULE_NAME=\&quot;sqlite3\&quot;"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e180000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
+ PreprocessorDefinitions="MODULE_NAME=\&quot;sqlite3\&quot;"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e180000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
+ PreprocessorDefinitions="MODULE_NAME=\&quot;sqlite3\&quot;"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e180000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
+ PreprocessorDefinitions="MODULE_NAME=\&quot;sqlite3\&quot;"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e180000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
+ PreprocessorDefinitions="MODULE_NAME=\&quot;sqlite3\&quot;"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e180000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
+ PreprocessorDefinitions="MODULE_NAME=\&quot;sqlite3\&quot;"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e180000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
+ PreprocessorDefinitions="MODULE_NAME=\&quot;sqlite3\&quot;"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e180000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Header Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_sqlite\cache.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\connection.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\cursor.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\microprotocols.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\module.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\prepare_protocol.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\row.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\sqlitecompat.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\statement.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\util.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_sqlite\cache.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\connection.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\cursor.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\microprotocols.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\module.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\prepare_protocol.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\row.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\statement.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\util.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/_ssl.vcproj b/PC/VS8.0/_ssl.vcproj
new file mode 100644
index 0000000..2d12e56
--- /dev/null
+++ b/PC/VS8.0/_ssl.vcproj
@@ -0,0 +1,545 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="_ssl"
+ ProjectGUID="{C6E20F84-3247-4AD6-B051-B073268F73BA}"
+ RootNamespace="_ssl"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\inc32"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib $(opensslDir)\out32\libeay32.lib $(opensslDir)\out32\ssleay32.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\inc64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib $(opensslDir)\out64\libeay32.lib $(opensslDir)\out64\ssleay32.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\inc32"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib $(opensslDir)\out32\libeay32.lib $(opensslDir)\out32\ssleay32.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\inc64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib $(opensslDir)\out64\libeay32.lib $(opensslDir)\out64\ssleay32.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\inc32"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib $(opensslDir)\out32\libeay32.lib $(opensslDir)\out32\ssleay32.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\inc64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib $(opensslDir)\out64\libeay32.lib $(opensslDir)\out64\ssleay32.lib"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\inc32"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib $(opensslDir)\out32\libeay32.lib $(opensslDir)\out32\ssleay32.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\inc64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib $(opensslDir)\out64\libeay32.lib $(opensslDir)\out64\ssleay32.lib"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_ssl.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/_testcapi.vcproj b/PC/VS8.0/_testcapi.vcproj
new file mode 100644
index 0000000..2483433
--- /dev/null
+++ b/PC/VS8.0/_testcapi.vcproj
@@ -0,0 +1,521 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="_testcapi"
+ ProjectGUID="{6901D91C-6E48-4BB7-9FEC-700C8131DF1D}"
+ RootNamespace="_testcapi"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e1F0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e1F0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e1F0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e1F0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e1F0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e1F0000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e1F0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e1F0000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_testcapimodule.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/_tkinter.vcproj b/PC/VS8.0/_tkinter.vcproj
new file mode 100644
index 0000000..60e50ce
--- /dev/null
+++ b/PC/VS8.0/_tkinter.vcproj
@@ -0,0 +1,541 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="_tkinter"
+ ProjectGUID="{4946ECAC-2E69-4BF8-A90A-F5136F5094DF}"
+ RootNamespace="_tkinter"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(tcltkDir)\include"
+ PreprocessorDefinitions="WITH_APPINIT"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(tcltkLibDebug)"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(tcltk64Dir)\include"
+ PreprocessorDefinitions="WITH_APPINIT"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(tcltk64LibDebug)"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(tcltkDir)\include"
+ PreprocessorDefinitions="WITH_APPINIT"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(tcltkLib)"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(tcltk64Dir)\include"
+ PreprocessorDefinitions="WITH_APPINIT"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(tcltk64Lib)"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(tcltkDir)\include"
+ PreprocessorDefinitions="WITH_APPINIT"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(tcltkLib)"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(tcltk64Dir)\include"
+ PreprocessorDefinitions="WITH_APPINIT"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(tcltk64Lib)"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(tcltkDir)\include"
+ PreprocessorDefinitions="WITH_APPINIT"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(tcltkLib)"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(tcltk64Dir)\include"
+ PreprocessorDefinitions="WITH_APPINIT"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(tcltk64Lib)"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_tkinter.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\tkappinit.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/bdist_wininst.vcproj b/PC/VS8.0/bdist_wininst.vcproj
new file mode 100644
index 0000000..0bd2ee6
--- /dev/null
+++ b/PC/VS8.0/bdist_wininst.vcproj
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="bdist_wininst"
+ ProjectGUID="{EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}"
+ RootNamespace="wininst"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="..\..\lib\distutils\command"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName=".\..\..\lib\distutils\command\wininst.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="1"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\PC\bdist_wininst;..\..\Include;..\..\Modules\zlib"
+ PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="0"
+ AdditionalIncludeDirectories="..\..\PC;..\..\PC\bdist_wininst;..\..\Include"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="comctl32.lib imagehlp.lib"
+ OutputFile="..\..\lib\distutils\command\wininst-8.0.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ IgnoreDefaultLibraryNames="LIBC"
+ ProgramDatabaseFile="..\..\lib\distutils\command\wininst-8.0.pdb"
+ SubSystem="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ OutputDirectory="$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="3"
+ TypeLibraryName=".\..\..\lib\distutils\command\wininst.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="1"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\PC\bdist_wininst;..\..\Include;..\..\Modules\zlib"
+ PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="0"
+ AdditionalIncludeDirectories="..\..\PC;..\..\PC\bdist_wininst;..\..\Include"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="comctl32.lib imagehlp.lib"
+ OutputFile="..\..\lib\distutils\command\wininst-8.0-amd64.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ IgnoreDefaultLibraryNames="LIBC"
+ ProgramDatabaseFile="..\..\lib\distutils\command\wininst-8.0-amd64.pdb"
+ SubSystem="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+ >
+ <File
+ RelativePath="..\..\PC\bdist_wininst\extract.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\PC\bdist_wininst\install.c"
+ >
+ </File>
+ <Filter
+ Name="zlib"
+ >
+ <File
+ RelativePath="..\..\Modules\zlib\adler32.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\crc32.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inffast.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inflate.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inftrees.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\zutil.c"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl"
+ >
+ <File
+ RelativePath="..\..\PC\bdist_wininst\archive.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+ >
+ <File
+ RelativePath="..\..\PC\bdist_wininst\install.rc"
+ >
+ </File>
+ <File
+ RelativePath="..\..\PC\bdist_wininst\PythonPowered.bmp"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/build.bat b/PC/VS8.0/build.bat
new file mode 100644
index 0000000..9bc8186
--- /dev/null
+++ b/PC/VS8.0/build.bat
@@ -0,0 +1,17 @@
+@echo off
+rem A batch program to build or rebuild a particular configuration.
+rem just for convenience.
+
+setlocal
+set platf=Win32
+set conf=Release
+set build=/build
+
+:CheckOpts
+if "%1"=="-c" (set conf=%2) & shift & shift & goto CheckOpts
+if "%1"=="-p" (set platf=%2) & shift & shift & goto CheckOpts
+if "%1"=="-r" (set build=/rebuild) & shift & goto CheckOpts
+
+set cmd=devenv pcbuild.sln %build% "%conf%|%platf%"
+echo %cmd%
+%cmd%
diff --git a/PC/VS8.0/build_env.bat b/PC/VS8.0/build_env.bat
new file mode 100644
index 0000000..4c67ae3
--- /dev/null
+++ b/PC/VS8.0/build_env.bat
@@ -0,0 +1 @@
+@%comspec% /k env.bat %*
diff --git a/PC/VS8.0/build_pgo.bat b/PC/VS8.0/build_pgo.bat
new file mode 100644
index 0000000..a37b5bf
--- /dev/null
+++ b/PC/VS8.0/build_pgo.bat
@@ -0,0 +1,41 @@
+@echo off
+rem A batch program to build PGO (Profile guided optimization) by first
+rem building instrumented binaries, then running the testsuite, and
+rem finally building the optimized code.
+rem Note, after the first instrumented run, one can just keep on
+rem building the PGUpdate configuration while developing.
+
+setlocal
+set platf=Win32
+
+rem use the performance testsuite. This is quick and simple
+set job1=..\..\tools\pybench\pybench.py -n 1 -C 1 --with-gc
+set path1=..\..\tools\pybench
+
+rem or the whole testsuite for more thorough testing
+set job2=..\..\lib\test\regrtest.py
+set path2=..\..\lib
+
+set job=%job1%
+set clrpath=%path1%
+
+:CheckOpts
+if "%1"=="-p" (set platf=%2) & shift & shift & goto CheckOpts
+if "%1"=="-2" (set job=%job2%) & (set clrpath=%path2%) & shift & goto CheckOpts
+
+set PGI=%platf%-pgi
+set PGO=%platf%-pgo
+
+@echo on
+rem build the instrumented version
+call build -p %platf% -c PGInstrument
+
+rem remove .pyc files, .pgc files and execute the job
+%PGI%\python.exe rmpyc.py %clrpath%
+del %PGI%\*.pgc
+%PGI%\python.exe %job%
+
+rem finally build the optimized version
+if exist %PGO% del /s /q %PGO%
+call build -p %platf% -c PGUpdate
+
diff --git a/PC/VS8.0/build_ssl.bat b/PC/VS8.0/build_ssl.bat
new file mode 100644
index 0000000..2531a5b
--- /dev/null
+++ b/PC/VS8.0/build_ssl.bat
@@ -0,0 +1,12 @@
+@echo off
+if not defined HOST_PYTHON (
+ if %1 EQU Debug (
+ set HOST_PYTHON=python_d.exe
+ if not exist python27_d.dll exit 1
+ ) ELSE (
+ set HOST_PYTHON=python.exe
+ if not exist python27.dll exit 1
+ )
+)
+%HOST_PYTHON% build_ssl.py %1 %2 %3
+
diff --git a/PC/VS8.0/build_ssl.py b/PC/VS8.0/build_ssl.py
new file mode 100644
index 0000000..663e655
--- /dev/null
+++ b/PC/VS8.0/build_ssl.py
@@ -0,0 +1,250 @@
+# Script for building the _ssl and _hashlib modules for Windows.
+# Uses Perl to setup the OpenSSL environment correctly
+# and build OpenSSL, then invokes a simple nmake session
+# for the actual _ssl.pyd and _hashlib.pyd DLLs.
+
+# THEORETICALLY, you can:
+# * Unpack the latest SSL release one level above your main Python source
+# directory. It is likely you will already find the zlib library and
+# any other external packages there.
+# * Install ActivePerl and ensure it is somewhere on your path.
+# * Run this script from the PC/VS8.0 directory.
+#
+# it should configure and build SSL, then build the _ssl and _hashlib
+# Python extensions without intervention.
+
+# Modified by Christian Heimes
+# Now this script supports pre-generated makefiles and assembly files.
+# Developers don't need an installation of Perl anymore to build Python. A svn
+# checkout from our svn repository is enough.
+#
+# In Order to create the files in the case of an update you still need Perl.
+# Run build_ssl in this order:
+# python.exe build_ssl.py Release x64
+# python.exe build_ssl.py Release Win32
+
+import os, sys, re, shutil
+
+# Find all "foo.exe" files on the PATH.
+def find_all_on_path(filename, extras = None):
+ entries = os.environ["PATH"].split(os.pathsep)
+ ret = []
+ for p in entries:
+ fname = os.path.abspath(os.path.join(p, filename))
+ if os.path.isfile(fname) and fname not in ret:
+ ret.append(fname)
+ if extras:
+ for p in extras:
+ fname = os.path.abspath(os.path.join(p, filename))
+ if os.path.isfile(fname) and fname not in ret:
+ ret.append(fname)
+ return ret
+
+# Find a suitable Perl installation for OpenSSL.
+# cygwin perl does *not* work. ActivePerl does.
+# Being a Perl dummy, the simplest way I can check is if the "Win32" package
+# is available.
+def find_working_perl(perls):
+ for perl in perls:
+ fh = os.popen('"%s" -e "use Win32;"' % perl)
+ fh.read()
+ rc = fh.close()
+ if rc:
+ continue
+ return perl
+ print("Can not find a suitable PERL:")
+ if perls:
+ print(" the following perl interpreters were found:")
+ for p in perls:
+ print(" ", p)
+ print(" None of these versions appear suitable for building OpenSSL")
+ else:
+ print(" NO perl interpreters were found on this machine at all!")
+ print(" Please install ActivePerl and ensure it appears on your path")
+ return None
+
+# Locate the best SSL directory given a few roots to look into.
+def find_best_ssl_dir(sources):
+ candidates = []
+ for s in sources:
+ try:
+ # note: do not abspath s; the build will fail if any
+ # higher up directory name has spaces in it.
+ fnames = os.listdir(s)
+ except os.error:
+ fnames = []
+ for fname in fnames:
+ fqn = os.path.join(s, fname)
+ if os.path.isdir(fqn) and fname.startswith("openssl-"):
+ candidates.append(fqn)
+ # Now we have all the candidates, locate the best.
+ best_parts = []
+ best_name = None
+ for c in candidates:
+ parts = re.split("[.-]", os.path.basename(c))[1:]
+ # eg - openssl-0.9.7-beta1 - ignore all "beta" or any other qualifiers
+ if len(parts) >= 4:
+ continue
+ if parts > best_parts:
+ best_parts = parts
+ best_name = c
+ if best_name is not None:
+ print("Found an SSL directory at '%s'" % (best_name,))
+ else:
+ print("Could not find an SSL directory in '%s'" % (sources,))
+ sys.stdout.flush()
+ return best_name
+
+def create_makefile64(makefile, m32):
+ """Create and fix makefile for 64bit
+
+ Replace 32 with 64bit directories
+ """
+ if not os.path.isfile(m32):
+ return
+ with open(m32) as fin:
+ with open(makefile, 'w') as fout:
+ for line in fin:
+ line = line.replace("=tmp32", "=tmp64")
+ line = line.replace("=out32", "=out64")
+ line = line.replace("=inc32", "=inc64")
+ # force 64 bit machine
+ line = line.replace("MKLIB=lib", "MKLIB=lib /MACHINE:X64")
+ line = line.replace("LFLAGS=", "LFLAGS=/MACHINE:X64 ")
+ # don't link against the lib on 64bit systems
+ line = line.replace("bufferoverflowu.lib", "")
+ fout.write(line)
+ os.unlink(m32)
+
+def fix_makefile(makefile):
+ """Fix some stuff in all makefiles
+ """
+ if not os.path.isfile(makefile):
+ return
+ with open(makefile) as fin:
+ lines = fin.readlines()
+ with open(makefile, 'w') as fout:
+ for line in lines:
+ if line.startswith("PERL="):
+ continue
+ if line.startswith("CP="):
+ line = "CP=copy\n"
+ if line.startswith("MKDIR="):
+ line = "MKDIR=mkdir\n"
+ if line.startswith("CFLAG="):
+ line = line.strip()
+ for algo in ("RC5", "MDC2", "IDEA"):
+ noalgo = " -DOPENSSL_NO_%s" % algo
+ if noalgo not in line:
+ line = line + noalgo
+ line = line + '\n'
+ fout.write(line)
+
+def run_configure(configure, do_script):
+ print("perl Configure "+configure)
+ os.system("perl Configure "+configure)
+ print(do_script)
+ os.system(do_script)
+
+def main():
+ build_all = "-a" in sys.argv
+ if sys.argv[1] == "Release":
+ debug = False
+ elif sys.argv[1] == "Debug":
+ debug = True
+ else:
+ raise ValueError(str(sys.argv))
+
+ if sys.argv[2] == "Win32":
+ arch = "x86"
+ configure = "VC-WIN32"
+ do_script = "ms\\do_nasm"
+ makefile="ms\\nt.mak"
+ m32 = makefile
+ elif sys.argv[2] == "x64":
+ arch="amd64"
+ configure = "VC-WIN64A"
+ do_script = "ms\\do_win64a"
+ makefile = "ms\\nt64.mak"
+ m32 = makefile.replace('64', '')
+ #os.environ["VSEXTCOMP_USECL"] = "MS_OPTERON"
+ else:
+ raise ValueError(str(sys.argv))
+
+ make_flags = ""
+ if build_all:
+ make_flags = "-a"
+ # perl should be on the path, but we also look in "\perl" and "c:\\perl"
+ # as "well known" locations
+ perls = find_all_on_path("perl.exe", ["\\perl\\bin", "C:\\perl\\bin"])
+ perl = find_working_perl(perls)
+ if perl:
+ print("Found a working perl at '%s'" % (perl,))
+ else:
+ print("No Perl installation was found. Existing Makefiles are used.")
+ sys.stdout.flush()
+ # Look for SSL 3 levels up from PC/VS8.0 - ie, same place zlib etc all live.
+ ssl_dir = find_best_ssl_dir(("..\\..\\..",))
+ if ssl_dir is None:
+ sys.exit(1)
+
+ old_cd = os.getcwd()
+ try:
+ os.chdir(ssl_dir)
+ # rebuild makefile when we do the role over from 32 to 64 build
+ if arch == "amd64" and os.path.isfile(m32) and not os.path.isfile(makefile):
+ os.unlink(m32)
+
+ # If the ssl makefiles do not exist, we invoke Perl to generate them.
+ # Due to a bug in this script, the makefile sometimes ended up empty
+ # Force a regeneration if it is.
+ if not os.path.isfile(makefile) or os.path.getsize(makefile)==0:
+ if perl is None:
+ print("Perl is required to build the makefiles!")
+ sys.exit(1)
+
+ print("Creating the makefiles...")
+ sys.stdout.flush()
+ # Put our working Perl at the front of our path
+ os.environ["PATH"] = os.path.dirname(perl) + \
+ os.pathsep + \
+ os.environ["PATH"]
+ run_configure(configure, do_script)
+ if debug:
+ print("OpenSSL debug builds aren't supported.")
+ #if arch=="x86" and debug:
+ # # the do_masm script in openssl doesn't generate a debug
+ # # build makefile so we generate it here:
+ # os.system("perl util\mk1mf.pl debug "+configure+" >"+makefile)
+
+ if arch == "amd64":
+ create_makefile64(makefile, m32)
+ fix_makefile(makefile)
+ shutil.copy(r"crypto\buildinf.h", r"crypto\buildinf_%s.h" % arch)
+ shutil.copy(r"crypto\opensslconf.h", r"crypto\opensslconf_%s.h" % arch)
+
+ # Now run make.
+ if arch == "amd64":
+ rc = os.system(r"ml64 -c -Foms\uptable.obj ms\uptable.asm")
+ if rc:
+ print("ml64 assembler has failed.")
+ sys.exit(rc)
+
+ shutil.copy(r"crypto\buildinf_%s.h" % arch, r"crypto\buildinf.h")
+ shutil.copy(r"crypto\opensslconf_%s.h" % arch, r"crypto\opensslconf.h")
+
+ #makeCommand = "nmake /nologo PERL=\"%s\" -f \"%s\"" %(perl, makefile)
+ makeCommand = "nmake /nologo -f \"%s\"" % makefile
+ print("Executing ssl makefiles:", makeCommand)
+ sys.stdout.flush()
+ rc = os.system(makeCommand)
+ if rc:
+ print("Executing "+makefile+" failed")
+ print(rc)
+ sys.exit(rc)
+ finally:
+ os.chdir(old_cd)
+ sys.exit(rc)
+
+if __name__=='__main__':
+ main()
diff --git a/PC/VS8.0/build_tkinter.py b/PC/VS8.0/build_tkinter.py
new file mode 100644
index 0000000..ea59039
--- /dev/null
+++ b/PC/VS8.0/build_tkinter.py
@@ -0,0 +1,85 @@
+"""Script to compile the dependencies of _tkinter
+
+Copyright (c) 2007 by Christian Heimes <christian@cheimes.de>
+
+Licensed to PSF under a Contributor Agreement.
+"""
+
+import os
+import sys
+
+here = os.path.abspath(os.path.dirname(__file__))
+par = os.path.pardir
+
+if 1:
+ TCL = "tcl8.4.16"
+ TK = "tk8.4.16"
+ TIX = "tix-8.4.0"
+else:
+ TCL = "tcl8.5b3"
+ TK = "tcl8.5b3"
+ TIX = "Tix8.4.2"
+
+ROOT = os.path.abspath(os.path.join(here, par, par, par))
+# Windows 2000 compatibility: WINVER 0x0500
+# http://msdn2.microsoft.com/en-us/library/aa383745.aspx
+NMAKE = "nmake /nologo /f %s COMPILERFLAGS=-DWINVER=0x0500 %s %s"
+
+def nmake(makefile, command="", **kw):
+ defines = ' '.join(k+'='+v for k, v in kw.items())
+ cmd = NMAKE % (makefile, defines, command)
+ print("\n\n"+cmd+"\n")
+ if os.system(cmd) != 0:
+ raise RuntimeError(cmd)
+
+def build(platform, clean):
+ if platform == "Win32":
+ dest = os.path.join(ROOT, "tcltk")
+ machine = "X86"
+ elif platform == "x64":
+ dest = os.path.join(ROOT, "tcltk64")
+ machine = "X64"
+ else:
+ raise ValueError(platform)
+
+ # TCL
+ tcldir = os.path.join(ROOT, TCL)
+ if 1:
+ os.chdir(os.path.join(tcldir, "win"))
+ if clean:
+ nmake("makefile.vc", "clean")
+ nmake("makefile.vc")
+ nmake("makefile.vc", "install", INSTALLDIR=dest)
+
+ # TK
+ if 1:
+ os.chdir(os.path.join(ROOT, TK, "win"))
+ if clean:
+ nmake("makefile.vc", "clean", TCLDIR=tcldir)
+ nmake("makefile.vc", TCLDIR=tcldir)
+ nmake("makefile.vc", "install", TCLDIR=tcldir, INSTALLDIR=dest)
+
+ # TIX
+ if 1:
+ # python9.mak is available at http://svn.python.org
+ os.chdir(os.path.join(ROOT, TIX, "win"))
+ if clean:
+ nmake("python9.mak", "clean")
+ nmake("python9.mak", MACHINE=machine)
+ nmake("python9.mak", "install")
+
+def main():
+ if len(sys.argv) < 2 or sys.argv[1] not in ("Win32", "x64"):
+ print("%s Win32|x64" % sys.argv[0])
+ sys.exit(1)
+
+ if "-c" in sys.argv:
+ clean = True
+ else:
+ clean = False
+
+ build(sys.argv[1], clean)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/PC/VS8.0/bz2.vcproj b/PC/VS8.0/bz2.vcproj
new file mode 100644
index 0000000..67cf0f8
--- /dev/null
+++ b/PC/VS8.0/bz2.vcproj
@@ -0,0 +1,581 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="bz2"
+ ProjectGUID="{73FCD2BD-F133-46B7-8EC1-144CD82A59D5}"
+ RootNamespace="bz2"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(bz2Dir)"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D170000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(bz2Dir)"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D170000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(bz2Dir)"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D170000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(bz2Dir)"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D170000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(bz2Dir)"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D170000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(bz2Dir)"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D170000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(bz2Dir)"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D170000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(bz2Dir)"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D170000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\bz2module.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="bzip2 1.0.6 Header Files"
+ >
+ <File
+ RelativePath="$(bz2Dir)\bzlib.h"
+ >
+ </File>
+ <File
+ RelativePath="$(bz2Dir)\bzlib_private.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="bzip2 1.0.6 Source Files"
+ >
+ <File
+ RelativePath="$(bz2Dir)\blocksort.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bz2Dir)\bzlib.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bz2Dir)\compress.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bz2Dir)\crctable.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bz2Dir)\decompress.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bz2Dir)\huffman.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bz2Dir)\randtable.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/debug.vsprops b/PC/VS8.0/debug.vsprops
new file mode 100644
index 0000000..2be7f74
--- /dev/null
+++ b/PC/VS8.0/debug.vsprops
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="debug"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ />
+ <UserMacro
+ Name="KillPythonExe"
+ Value="$(OutDir)\kill_python_d.exe"
+ />
+</VisualStudioPropertySheet>
diff --git a/PC/VS8.0/env.bat b/PC/VS8.0/env.bat
new file mode 100644
index 0000000..a4990a8
--- /dev/null
+++ b/PC/VS8.0/env.bat
@@ -0,0 +1,5 @@
+@echo off
+set VS8=%ProgramFiles%\Microsoft Visual Studio 8
+echo Build environments: x86, ia64, amd64, x86_amd64, x86_ia64
+echo.
+call "%VS8%\VC\vcvarsall.bat" %1
diff --git a/PC/VS8.0/field3.py b/PC/VS8.0/field3.py
new file mode 100644
index 0000000..edcbe36
--- /dev/null
+++ b/PC/VS8.0/field3.py
@@ -0,0 +1,35 @@
+# An absurd workaround for the lack of arithmetic in MS's resource compiler.
+# After building Python, run this, then paste the output into the appropriate
+# part of PC\python_nt.rc.
+# Example output:
+#
+# * For 2.3a0,
+# * PY_MICRO_VERSION = 0
+# * PY_RELEASE_LEVEL = 'alpha' = 0xA
+# * PY_RELEASE_SERIAL = 1
+# *
+# * and 0*1000 + 10*10 + 1 = 101.
+# */
+# #define FIELD3 101
+
+import sys
+
+major, minor, micro, level, serial = sys.version_info
+levelnum = {'alpha': 0xA,
+ 'beta': 0xB,
+ 'candidate': 0xC,
+ 'final': 0xF,
+ }[level]
+string = sys.version.split()[0] # like '2.3a0'
+
+print(" * For %s," % string)
+print(" * PY_MICRO_VERSION = %d" % micro)
+print(" * PY_RELEASE_LEVEL = %r = %s" % (level, hex(levelnum)))
+print(" * PY_RELEASE_SERIAL = %d" % serial)
+print(" *")
+
+field3 = micro * 1000 + levelnum * 10 + serial
+
+print(" * and %d*1000 + %d*10 + %d = %d" % (micro, levelnum, serial, field3))
+print(" */")
+print("#define FIELD3", field3)
diff --git a/PC/VS8.0/idle.bat b/PC/VS8.0/idle.bat
new file mode 100644
index 0000000..123e704
--- /dev/null
+++ b/PC/VS8.0/idle.bat
@@ -0,0 +1,15 @@
+@echo off
+rem start idle
+rem Usage: idle [-d]
+rem -d Run Debug build (python_d.exe). Else release build.
+
+setlocal
+set exe=python
+PATH %PATH%;..\..\..\tcltk\bin
+
+if "%1"=="-d" (set exe=python_d) & shift
+
+set cmd=%exe% ../../Lib/idlelib/idle.py %1 %2 %3 %4 %5 %6 %7 %8 %9
+
+echo on
+%cmd%
diff --git a/PC/VS8.0/kill_python.c b/PC/VS8.0/kill_python.c
new file mode 100644
index 0000000..f3880fc
--- /dev/null
+++ b/PC/VS8.0/kill_python.c
@@ -0,0 +1,178 @@
+/*
+ * Helper program for killing lingering python[_d].exe processes before
+ * building, thus attempting to avoid build failures due to files being
+ * locked.
+ */
+
+#include <windows.h>
+#include <wchar.h>
+#include <tlhelp32.h>
+#include <stdio.h>
+
+#pragma comment(lib, "psapi")
+
+#ifdef _DEBUG
+#define PYTHON_EXE (L"python_d.exe")
+#define PYTHON_EXE_LEN (12)
+#define KILL_PYTHON_EXE (L"kill_python_d.exe")
+#define KILL_PYTHON_EXE_LEN (17)
+#else
+#define PYTHON_EXE (L"python.exe")
+#define PYTHON_EXE_LEN (10)
+#define KILL_PYTHON_EXE (L"kill_python.exe")
+#define KILL_PYTHON_EXE_LEN (15)
+#endif
+
+int
+main(int argc, char **argv)
+{
+ HANDLE hp, hsp, hsm; /* process, snapshot processes, snapshot modules */
+ DWORD dac, our_pid;
+ size_t len;
+ wchar_t path[MAX_PATH+1];
+
+ MODULEENTRY32W me;
+ PROCESSENTRY32W pe;
+
+ me.dwSize = sizeof(MODULEENTRY32W);
+ pe.dwSize = sizeof(PROCESSENTRY32W);
+
+ memset(path, 0, MAX_PATH+1);
+
+ our_pid = GetCurrentProcessId();
+
+ hsm = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, our_pid);
+ if (hsm == INVALID_HANDLE_VALUE) {
+ printf("CreateToolhelp32Snapshot[1] failed: %d\n", GetLastError());
+ return 1;
+ }
+
+ if (!Module32FirstW(hsm, &me)) {
+ printf("Module32FirstW[1] failed: %d\n", GetLastError());
+ CloseHandle(hsm);
+ return 1;
+ }
+
+ /*
+ * Enumerate over the modules for the current process in order to find
+ * kill_process[_d].exe, then take a note of the directory it lives in.
+ */
+ do {
+ if (_wcsnicmp(me.szModule, KILL_PYTHON_EXE, KILL_PYTHON_EXE_LEN))
+ continue;
+
+ len = wcsnlen_s(me.szExePath, MAX_PATH) - KILL_PYTHON_EXE_LEN;
+ wcsncpy_s(path, MAX_PATH+1, me.szExePath, len);
+
+ break;
+
+ } while (Module32NextW(hsm, &me));
+
+ CloseHandle(hsm);
+
+ if (path == NULL) {
+ printf("failed to discern directory of running process\n");
+ return 1;
+ }
+
+ /*
+ * Take a snapshot of system processes. Enumerate over the snapshot,
+ * looking for python processes. When we find one, verify it lives
+ * in the same directory we live in. If it does, kill it. If we're
+ * unable to kill it, treat this as a fatal error and return 1.
+ *
+ * The rationale behind this is that we're called at the start of the
+ * build process on the basis that we'll take care of killing any
+ * running instances, such that the build won't encounter permission
+ * denied errors during linking. If we can't kill one of the processes,
+ * we can't provide this assurance, and the build shouldn't start.
+ */
+
+ hsp = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
+ if (hsp == INVALID_HANDLE_VALUE) {
+ printf("CreateToolhelp32Snapshot[2] failed: %d\n", GetLastError());
+ return 1;
+ }
+
+ if (!Process32FirstW(hsp, &pe)) {
+ printf("Process32FirstW failed: %d\n", GetLastError());
+ CloseHandle(hsp);
+ return 1;
+ }
+
+ dac = PROCESS_QUERY_INFORMATION | PROCESS_VM_READ | PROCESS_TERMINATE;
+ do {
+
+ /*
+ * XXX TODO: if we really wanted to be fancy, we could check the
+ * modules for all processes (not just the python[_d].exe ones)
+ * and see if any of our DLLs are loaded (i.e. python30[_d].dll),
+ * as that would also inhibit our ability to rebuild the solution.
+ * Not worth loosing sleep over though; for now, a simple check
+ * for just the python executable should be sufficient.
+ */
+
+ if (_wcsnicmp(pe.szExeFile, PYTHON_EXE, PYTHON_EXE_LEN))
+ /* This isn't a python process. */
+ continue;
+
+ /* It's a python process, so figure out which directory it's in... */
+ hsm = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pe.th32ProcessID);
+ if (hsm == INVALID_HANDLE_VALUE)
+ /*
+ * If our module snapshot fails (which will happen if we don't own
+ * the process), just ignore it and continue. (It seems different
+ * versions of Windows return different values for GetLastError()
+ * in this situation; it's easier to just ignore it and move on vs.
+ * stopping the build for what could be a false positive.)
+ */
+ continue;
+
+ if (!Module32FirstW(hsm, &me)) {
+ printf("Module32FirstW[2] failed: %d\n", GetLastError());
+ CloseHandle(hsp);
+ CloseHandle(hsm);
+ return 1;
+ }
+
+ do {
+ if (_wcsnicmp(me.szModule, PYTHON_EXE, PYTHON_EXE_LEN))
+ /* Wrong module, we're looking for python[_d].exe... */
+ continue;
+
+ if (_wcsnicmp(path, me.szExePath, len))
+ /* Process doesn't live in our directory. */
+ break;
+
+ /* Python process residing in the right directory, kill it! */
+ hp = OpenProcess(dac, FALSE, pe.th32ProcessID);
+ if (!hp) {
+ printf("OpenProcess failed: %d\n", GetLastError());
+ CloseHandle(hsp);
+ CloseHandle(hsm);
+ return 1;
+ }
+
+ if (!TerminateProcess(hp, 1)) {
+ printf("TerminateProcess failed: %d\n", GetLastError());
+ CloseHandle(hsp);
+ CloseHandle(hsm);
+ CloseHandle(hp);
+ return 1;
+ }
+
+ CloseHandle(hp);
+ break;
+
+ } while (Module32NextW(hsm, &me));
+
+ CloseHandle(hsm);
+
+ } while (Process32NextW(hsp, &pe));
+
+ CloseHandle(hsp);
+
+ return 0;
+}
+
+/* vi: set ts=8 sw=4 sts=4 expandtab */
diff --git a/PC/VS8.0/kill_python.vcproj b/PC/VS8.0/kill_python.vcproj
new file mode 100644
index 0000000..f6fe096
--- /dev/null
+++ b/PC/VS8.0/kill_python.vcproj
@@ -0,0 +1,279 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="kill_python"
+ ProjectGUID="{6DE10744-E396-40A5-B4E2-1B69AA7C8D31}"
+ RootNamespace="kill_python"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(ProjectName)_d.exe"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(ProjectName)_d.exe"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath=".\kill_python.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/make_buildinfo.c b/PC/VS8.0/make_buildinfo.c
new file mode 100644
index 0000000..8cc3da2
--- /dev/null
+++ b/PC/VS8.0/make_buildinfo.c
@@ -0,0 +1,94 @@
+#include <windows.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <stdio.h>
+
+#define CMD_SIZE 500
+
+/* This file creates the getbuildinfo.o object, by first
+ invoking subwcrev.exe (if found), and then invoking cl.exe.
+ As a side effect, it might generate PCBuild\getbuildinfo2.c
+ also. If this isn't a subversion checkout, or subwcrev isn't
+ found, it compiles ..\\..\\Modules\\getbuildinfo.c instead.
+
+ Currently, subwcrev.exe is found from the registry entries
+ of TortoiseSVN.
+
+ No attempt is made to place getbuildinfo.o into the proper
+ binary directory. This isn't necessary, as this tool is
+ invoked as a pre-link step for pythoncore, so that overwrites
+ any previous getbuildinfo.o.
+
+*/
+
+int make_buildinfo2()
+{
+ struct _stat st;
+ HKEY hTortoise;
+ char command[CMD_SIZE+1];
+ DWORD type, size;
+ if (_stat(".svn", &st) < 0)
+ return 0;
+ /* Allow suppression of subwcrev.exe invocation if a no_subwcrev file is present. */
+ if (_stat("no_subwcrev", &st) == 0)
+ return 0;
+ if (RegOpenKey(HKEY_LOCAL_MACHINE, "Software\\TortoiseSVN", &hTortoise) != ERROR_SUCCESS &&
+ RegOpenKey(HKEY_CURRENT_USER, "Software\\TortoiseSVN", &hTortoise) != ERROR_SUCCESS)
+ /* Tortoise not installed */
+ return 0;
+ command[0] = '"'; /* quote the path to the executable */
+ size = sizeof(command) - 1;
+ if (RegQueryValueEx(hTortoise, "Directory", 0, &type, command+1, &size) != ERROR_SUCCESS ||
+ type != REG_SZ)
+ /* Registry corrupted */
+ return 0;
+ strcat_s(command, CMD_SIZE, "bin\\subwcrev.exe");
+ if (_stat(command+1, &st) < 0)
+ /* subwcrev.exe not part of the release */
+ return 0;
+ strcat_s(command, CMD_SIZE, "\" ..\\.. ..\\..\\Modules\\getbuildinfo.c getbuildinfo2.c");
+ puts(command); fflush(stdout);
+ if (system(command) < 0)
+ return 0;
+ return 1;
+}
+
+int main(int argc, char*argv[])
+{
+ char command[500] = "cl.exe -c -D_WIN32 -DUSE_DL_EXPORT -D_WINDOWS -DWIN32 -D_WINDLL ";
+ int do_unlink, result;
+ if (argc != 2) {
+ fprintf(stderr, "make_buildinfo $(ConfigurationName)\n");
+ return EXIT_FAILURE;
+ }
+ if (strcmp(argv[1], "Release") == 0) {
+ strcat_s(command, CMD_SIZE, "-MD ");
+ }
+ else if (strcmp(argv[1], "Debug") == 0) {
+ strcat_s(command, CMD_SIZE, "-D_DEBUG -MDd ");
+ }
+ else if (strcmp(argv[1], "ReleaseItanium") == 0) {
+ strcat_s(command, CMD_SIZE, "-MD /USECL:MS_ITANIUM ");
+ }
+ else if (strcmp(argv[1], "ReleaseAMD64") == 0) {
+ strcat_s(command, CMD_SIZE, "-MD ");
+ strcat_s(command, CMD_SIZE, "-MD /USECL:MS_OPTERON ");
+ }
+ else {
+ fprintf(stderr, "unsupported configuration %s\n", argv[1]);
+ return EXIT_FAILURE;
+ }
+
+ if ((do_unlink = make_buildinfo2()))
+ strcat_s(command, CMD_SIZE, "getbuildinfo2.c -DSUBWCREV ");
+ else
+ strcat_s(command, CMD_SIZE, "..\\..\\Modules\\getbuildinfo.c");
+ strcat_s(command, CMD_SIZE, " -Fogetbuildinfo.o -I..\\..\\Include -I..\\..\\PC");
+ puts(command); fflush(stdout);
+ result = system(command);
+ if (do_unlink)
+ _unlink("getbuildinfo2.c");
+ if (result < 0)
+ return EXIT_FAILURE;
+ return 0;
+}
diff --git a/PC/VS8.0/make_buildinfo.vcproj b/PC/VS8.0/make_buildinfo.vcproj
new file mode 100644
index 0000000..619f056
--- /dev/null
+++ b/PC/VS8.0/make_buildinfo.vcproj
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="windows-1250"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="make_buildinfo"
+ ProjectGUID="{C73F0EC1-358B-4177-940F-0846AC8B04CD}"
+ RootNamespace="make_buildinfo"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ InlineFunctionExpansion="1"
+ PreprocessorDefinitions="_CONSOLE"
+ RuntimeLibrary="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)/make_buildinfo.exe"
+ ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_CONSOLE"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath=".\make_buildinfo.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/make_versioninfo.vcproj b/PC/VS8.0/make_versioninfo.vcproj
new file mode 100644
index 0000000..6e4cff2
--- /dev/null
+++ b/PC/VS8.0/make_versioninfo.vcproj
@@ -0,0 +1,324 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="make_versioninfo"
+ ProjectGUID="{F0E0541E-F17D-430B-97C4-93ADF0DD284E}"
+ RootNamespace="make_versioninfo"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Build PC/pythonnt_rc(_d).h"
+ CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo.exe &gt; ..\..\PC\pythonnt_rc.h&#x0D;&#x0A;"
+ Outputs="$(SolutionDir)..\..\PC\pythonnt_rc.h"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_CONSOLE"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(SolutionDir)make_versioninfo.exe"
+ ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
+ SubSystem="1"
+ BaseAddress="0x1d000000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo.exe &gt; ..\..\PC\python_nt.h&#x0D;&#x0A;"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Build PC/pythonnt_rc(_d).h"
+ CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo.exe &gt; ..\..\PC\pythonnt_rc.h&#x0D;&#x0A;"
+ Outputs="$(SolutionDir)..\..\PC\pythonnt_rc.h"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions="_CONSOLE"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(SolutionDir)make_versioninfo.exe"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo.exe &gt; ..\..\PC\python_nt.h&#x0D;&#x0A;"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Build PC/pythonnt_rc(_d).h"
+ CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo_d.exe &gt; ..\..\PC\pythonnt_rc_d.h&#x0D;&#x0A;"
+ Outputs="$(SolutionDir)..\..\PC\pythonnt_rc_d.h"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ InlineFunctionExpansion="1"
+ EnableIntrinsicFunctions="false"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_CONSOLE"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(SolutionDir)make_versioninfo_d.exe"
+ ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
+ SubSystem="1"
+ BaseAddress="0x1d000000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo_d.exe &gt; ..\..\PC\python_nt_d.h&#x0D;&#x0A;"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\debug.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Build PC/pythonnt_rc(_d).h"
+ CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo_d.exe &gt; ..\..\PC\pythonnt_rc_d.h&#x0D;&#x0A;"
+ Outputs="$(SolutionDir)..\..\PC\pythonnt_rc_d.h"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ InlineFunctionExpansion="1"
+ EnableIntrinsicFunctions="false"
+ PreprocessorDefinitions="_CONSOLE"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(SolutionDir)make_versioninfo_d.exe"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo_d.exe &gt; ..\..\PC\python_nt_d.h&#x0D;&#x0A;"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\PC\make_versioninfo.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/pcbuild.sln b/PC/VS8.0/pcbuild.sln
new file mode 100644
index 0000000..5f43524
--- /dev/null
+++ b/PC/VS8.0/pcbuild.sln
@@ -0,0 +1,559 @@
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python", "python.vcproj", "{B11D750F-CD1F-4A96-85CE-E69A5C5259F9}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058} = {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_versioninfo", "make_versioninfo.vcproj", "{F0E0541E-F17D-430B-97C4-93ADF0DD284E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythoncore", "pythoncore.vcproj", "{CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}"
+ ProjectSection(ProjectDependencies) = postProject
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E} = {F0E0541E-F17D-430B-97C4-93ADF0DD284E}
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31} = {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD} = {C73F0EC1-358B-4177-940F-0846AC8B04CD}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythonw", "pythonw.vcproj", "{F4229CC3-873C-49AE-9729-DD308ED4CD4A}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "w9xpopen", "w9xpopen.vcproj", "{E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}"
+ ProjectSection(ProjectDependencies) = postProject
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31} = {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_buildinfo", "make_buildinfo.vcproj", "{C73F0EC1-358B-4177-940F-0846AC8B04CD}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{553EC33E-9816-4996-A660-5D6186A0B0B3}"
+ ProjectSection(SolutionItems) = preProject
+ ..\..\Modules\getbuildinfo.c = ..\..\Modules\getbuildinfo.c
+ readme.txt = readme.txt
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winsound", "winsound.vcproj", "{28B5D777-DDF2-4B6B-B34F-31D938813856}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_bsddb", "_bsddb.vcproj", "{B4D38F3F-68FB-42EC-A45D-E00657BB3627}"
+ ProjectSection(ProjectDependencies) = postProject
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31} = {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ctypes", "_ctypes.vcproj", "{0E9791DB-593A-465F-98BC-681011311618}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ctypes_test", "_ctypes_test.vcproj", "{9EC7190A-249F-4180-A900-548FDCF3055F}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_elementtree", "_elementtree.vcproj", "{17E1E049-C309-4D79-843F-AE483C264AEA}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_msi", "_msi.vcproj", "{31FFC478-7B4A-43E8-9954-8D03E2187E9C}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_socket", "_socket.vcproj", "{86937F53-C189-40EF-8CE8-8759D8E7D480}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_sqlite3", "_sqlite3.vcproj", "{13CECB97-4119-4316-9D42-8534019A5A44}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ {A1A295E5-463C-437F-81CA-1F32367685DA} = {A1A295E5-463C-437F-81CA-1F32367685DA}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ssl", "_ssl.vcproj", "{C6E20F84-3247-4AD6-B051-B073268F73BA}"
+ ProjectSection(ProjectDependencies) = postProject
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} = {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}
+ {86937F53-C189-40EF-8CE8-8759D8E7D480} = {86937F53-C189-40EF-8CE8-8759D8E7D480}
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testcapi", "_testcapi.vcproj", "{6901D91C-6E48-4BB7-9FEC-700C8131DF1D}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_tkinter", "_tkinter.vcproj", "{4946ECAC-2E69-4BF8-A90A-F5136F5094DF}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bz2", "bz2.vcproj", "{73FCD2BD-F133-46B7-8EC1-144CD82A59D5}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "select", "select.vcproj", "{18CAE28C-B454-46C1-87A0-493D91D97F03}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unicodedata", "unicodedata.vcproj", "{ECC7CEAC-A5E5-458E-BB9E-2413CC847881}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pyexpat", "pyexpat.vcproj", "{D06B6426-4762-44CC-8BAD-D79052507F2F}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bdist_wininst", "bdist_wininst.vcproj", "{EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_hashlib", "_hashlib.vcproj", "{447F05A8-F581-4CAC-A466-5AC7936E207E}"
+ ProjectSection(ProjectDependencies) = postProject
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} = {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sqlite3", "sqlite3.vcproj", "{A1A295E5-463C-437F-81CA-1F32367685DA}"
+ ProjectSection(ProjectDependencies) = postProject
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31} = {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_multiprocessing", "_multiprocessing.vcproj", "{9E48B300-37D1-11DD-8C41-005056C00008}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "kill_python", "kill_python.vcproj", "{6DE10744-E396-40A5-B4E2-1B69AA7C8D31}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ PGInstrument|Win32 = PGInstrument|Win32
+ PGInstrument|x64 = PGInstrument|x64
+ PGUpdate|Win32 = PGUpdate|Win32
+ PGUpdate|x64 = PGUpdate|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug|Win32.Build.0 = Debug|Win32
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug|x64.ActiveCfg = Debug|x64
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug|x64.Build.0 = Debug|x64
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release|Win32.ActiveCfg = Release|Win32
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release|Win32.Build.0 = Release|Win32
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release|x64.ActiveCfg = Release|x64
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release|x64.Build.0 = Release|x64
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Debug|Win32.Build.0 = Debug|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Debug|x64.ActiveCfg = Debug|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Debug|x64.Build.0 = Debug|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.PGInstrument|Win32.ActiveCfg = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.PGInstrument|Win32.Build.0 = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.PGInstrument|x64.ActiveCfg = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.PGInstrument|x64.Build.0 = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.PGUpdate|Win32.ActiveCfg = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.PGUpdate|Win32.Build.0 = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.PGUpdate|x64.ActiveCfg = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.PGUpdate|x64.Build.0 = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Release|Win32.ActiveCfg = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Release|Win32.Build.0 = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Release|x64.ActiveCfg = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Release|x64.Build.0 = Release|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug|Win32.Build.0 = Debug|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug|x64.ActiveCfg = Debug|x64
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug|x64.Build.0 = Debug|x64
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release|Win32.ActiveCfg = Release|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release|Win32.Build.0 = Release|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release|x64.ActiveCfg = Release|x64
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release|x64.Build.0 = Release|x64
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug|Win32.Build.0 = Debug|Win32
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug|x64.ActiveCfg = Debug|x64
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug|x64.Build.0 = Debug|x64
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release|Win32.ActiveCfg = Release|Win32
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release|Win32.Build.0 = Release|Win32
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release|x64.ActiveCfg = Release|x64
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release|x64.Build.0 = Release|x64
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Debug|Win32.Build.0 = Debug|Win32
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Debug|x64.ActiveCfg = Debug|x64
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Debug|x64.Build.0 = Debug|x64
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Release|Win32.ActiveCfg = Release|Win32
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Release|Win32.Build.0 = Release|Win32
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Release|x64.ActiveCfg = Release|x64
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Release|x64.Build.0 = Release|x64
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Debug|Win32.ActiveCfg = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Debug|Win32.Build.0 = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Debug|x64.ActiveCfg = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Debug|x64.Build.0 = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.PGInstrument|Win32.ActiveCfg = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.PGInstrument|Win32.Build.0 = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.PGInstrument|x64.ActiveCfg = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.PGInstrument|x64.Build.0 = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.PGUpdate|Win32.ActiveCfg = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.PGUpdate|Win32.Build.0 = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.PGUpdate|x64.ActiveCfg = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.PGUpdate|x64.Build.0 = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Release|Win32.ActiveCfg = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Release|Win32.Build.0 = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Release|x64.ActiveCfg = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Release|x64.Build.0 = Release|Win32
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.Debug|Win32.ActiveCfg = Debug|Win32
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.Debug|Win32.Build.0 = Debug|Win32
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.Debug|x64.ActiveCfg = Debug|x64
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.Debug|x64.Build.0 = Debug|x64
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.Release|Win32.ActiveCfg = Release|Win32
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.Release|Win32.Build.0 = Release|Win32
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.Release|x64.ActiveCfg = Release|x64
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.Release|x64.Build.0 = Release|x64
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.Debug|Win32.Build.0 = Debug|Win32
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.Debug|x64.ActiveCfg = Debug|x64
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.Debug|x64.Build.0 = Debug|x64
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.Release|Win32.ActiveCfg = Release|Win32
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.Release|Win32.Build.0 = Release|Win32
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.Release|x64.ActiveCfg = Release|x64
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.Release|x64.Build.0 = Release|x64
+ {0E9791DB-593A-465F-98BC-681011311618}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0E9791DB-593A-465F-98BC-681011311618}.Debug|Win32.Build.0 = Debug|Win32
+ {0E9791DB-593A-465F-98BC-681011311618}.Debug|x64.ActiveCfg = Debug|x64
+ {0E9791DB-593A-465F-98BC-681011311618}.Debug|x64.Build.0 = Debug|x64
+ {0E9791DB-593A-465F-98BC-681011311618}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {0E9791DB-593A-465F-98BC-681011311618}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {0E9791DB-593A-465F-98BC-681011311618}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {0E9791DB-593A-465F-98BC-681011311618}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {0E9791DB-593A-465F-98BC-681011311618}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {0E9791DB-593A-465F-98BC-681011311618}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {0E9791DB-593A-465F-98BC-681011311618}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {0E9791DB-593A-465F-98BC-681011311618}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {0E9791DB-593A-465F-98BC-681011311618}.Release|Win32.ActiveCfg = Release|Win32
+ {0E9791DB-593A-465F-98BC-681011311618}.Release|Win32.Build.0 = Release|Win32
+ {0E9791DB-593A-465F-98BC-681011311618}.Release|x64.ActiveCfg = Release|x64
+ {0E9791DB-593A-465F-98BC-681011311618}.Release|x64.Build.0 = Release|x64
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.Debug|Win32.Build.0 = Debug|Win32
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.Debug|x64.ActiveCfg = Debug|x64
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.Debug|x64.Build.0 = Debug|x64
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.Release|Win32.ActiveCfg = Release|Win32
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.Release|Win32.Build.0 = Release|Win32
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.Release|x64.ActiveCfg = Release|x64
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.Release|x64.Build.0 = Release|x64
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.Debug|Win32.Build.0 = Debug|Win32
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.Debug|x64.ActiveCfg = Debug|x64
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.Debug|x64.Build.0 = Debug|x64
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.Release|Win32.ActiveCfg = Release|Win32
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.Release|Win32.Build.0 = Release|Win32
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.Release|x64.ActiveCfg = Release|x64
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.Release|x64.Build.0 = Release|x64
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Debug|Win32.Build.0 = Debug|Win32
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Debug|x64.ActiveCfg = Debug|x64
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Debug|x64.Build.0 = Debug|x64
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Release|Win32.ActiveCfg = Release|Win32
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Release|Win32.Build.0 = Release|Win32
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Release|x64.ActiveCfg = Release|x64
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Release|x64.Build.0 = Release|x64
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.Debug|Win32.ActiveCfg = Debug|Win32
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.Debug|Win32.Build.0 = Debug|Win32
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.Debug|x64.ActiveCfg = Debug|x64
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.Debug|x64.Build.0 = Debug|x64
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.Release|Win32.ActiveCfg = Release|Win32
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.Release|Win32.Build.0 = Release|Win32
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.Release|x64.ActiveCfg = Release|x64
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.Release|x64.Build.0 = Release|x64
+ {13CECB97-4119-4316-9D42-8534019A5A44}.Debug|Win32.ActiveCfg = Debug|Win32
+ {13CECB97-4119-4316-9D42-8534019A5A44}.Debug|Win32.Build.0 = Debug|Win32
+ {13CECB97-4119-4316-9D42-8534019A5A44}.Debug|x64.ActiveCfg = Debug|x64
+ {13CECB97-4119-4316-9D42-8534019A5A44}.Debug|x64.Build.0 = Debug|x64
+ {13CECB97-4119-4316-9D42-8534019A5A44}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {13CECB97-4119-4316-9D42-8534019A5A44}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {13CECB97-4119-4316-9D42-8534019A5A44}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {13CECB97-4119-4316-9D42-8534019A5A44}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {13CECB97-4119-4316-9D42-8534019A5A44}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {13CECB97-4119-4316-9D42-8534019A5A44}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {13CECB97-4119-4316-9D42-8534019A5A44}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {13CECB97-4119-4316-9D42-8534019A5A44}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {13CECB97-4119-4316-9D42-8534019A5A44}.Release|Win32.ActiveCfg = Release|Win32
+ {13CECB97-4119-4316-9D42-8534019A5A44}.Release|Win32.Build.0 = Release|Win32
+ {13CECB97-4119-4316-9D42-8534019A5A44}.Release|x64.ActiveCfg = Release|x64
+ {13CECB97-4119-4316-9D42-8534019A5A44}.Release|x64.Build.0 = Release|x64
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.Debug|Win32.Build.0 = Debug|Win32
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.Debug|x64.ActiveCfg = Debug|x64
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.Debug|x64.Build.0 = Debug|x64
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.Release|Win32.ActiveCfg = Release|Win32
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.Release|Win32.Build.0 = Release|Win32
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.Release|x64.ActiveCfg = Release|x64
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.Release|x64.Build.0 = Release|x64
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Debug|Win32.Build.0 = Debug|Win32
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Debug|x64.ActiveCfg = Debug|x64
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Debug|x64.Build.0 = Debug|x64
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Release|Win32.ActiveCfg = Release|Win32
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Release|Win32.Build.0 = Release|Win32
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Release|x64.ActiveCfg = Release|x64
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Release|x64.Build.0 = Release|x64
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Debug|Win32.ActiveCfg = Debug|Win32
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Debug|Win32.Build.0 = Debug|Win32
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Debug|x64.ActiveCfg = Debug|x64
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Debug|x64.Build.0 = Debug|x64
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Release|Win32.ActiveCfg = Release|Win32
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Release|Win32.Build.0 = Release|Win32
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Release|x64.ActiveCfg = Release|x64
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Release|x64.Build.0 = Release|x64
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Debug|Win32.ActiveCfg = Debug|Win32
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Debug|Win32.Build.0 = Debug|Win32
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Debug|x64.ActiveCfg = Debug|x64
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Debug|x64.Build.0 = Debug|x64
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Release|Win32.ActiveCfg = Release|Win32
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Release|Win32.Build.0 = Release|Win32
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Release|x64.ActiveCfg = Release|x64
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Release|x64.Build.0 = Release|x64
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.Debug|Win32.ActiveCfg = Debug|Win32
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.Debug|Win32.Build.0 = Debug|Win32
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.Debug|x64.ActiveCfg = Debug|x64
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.Debug|x64.Build.0 = Debug|x64
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.Release|Win32.ActiveCfg = Release|Win32
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.Release|Win32.Build.0 = Release|Win32
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.Release|x64.ActiveCfg = Release|x64
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.Release|x64.Build.0 = Release|x64
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Debug|Win32.ActiveCfg = Debug|Win32
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Debug|Win32.Build.0 = Debug|Win32
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Debug|x64.ActiveCfg = Debug|x64
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Debug|x64.Build.0 = Debug|x64
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Release|Win32.ActiveCfg = Release|Win32
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Release|Win32.Build.0 = Release|Win32
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Release|x64.ActiveCfg = Release|x64
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Release|x64.Build.0 = Release|x64
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.Debug|Win32.Build.0 = Debug|Win32
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.Debug|x64.ActiveCfg = Debug|x64
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.Debug|x64.Build.0 = Debug|x64
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.Release|Win32.ActiveCfg = Release|Win32
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.Release|Win32.Build.0 = Release|Win32
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.Release|x64.ActiveCfg = Release|x64
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.Release|x64.Build.0 = Release|x64
+ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Debug|Win32.ActiveCfg = Release|Win32
+ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Debug|x64.ActiveCfg = Release|x64
+ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGInstrument|Win32.ActiveCfg = Release|Win32
+ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGInstrument|x64.ActiveCfg = Release|x64
+ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGUpdate|Win32.ActiveCfg = Release|Win32
+ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGUpdate|x64.ActiveCfg = Release|x64
+ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Release|Win32.ActiveCfg = Release|Win32
+ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Release|x64.ActiveCfg = Release|x64
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.Debug|Win32.Build.0 = Debug|Win32
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.Debug|x64.ActiveCfg = Debug|x64
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.Debug|x64.Build.0 = Debug|x64
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.Release|Win32.ActiveCfg = Release|Win32
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.Release|Win32.Build.0 = Release|Win32
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.Release|x64.ActiveCfg = Release|x64
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.Release|x64.Build.0 = Release|x64
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.Debug|Win32.Build.0 = Debug|Win32
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.Debug|x64.ActiveCfg = Debug|x64
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.Debug|x64.Build.0 = Debug|x64
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.Release|Win32.ActiveCfg = Release|Win32
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.Release|Win32.Build.0 = Release|Win32
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.Release|x64.ActiveCfg = Release|x64
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.Release|x64.Build.0 = Release|x64
+ {9E48B300-37D1-11DD-8C41-005056C00008}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9E48B300-37D1-11DD-8C41-005056C00008}.Debug|Win32.Build.0 = Debug|Win32
+ {9E48B300-37D1-11DD-8C41-005056C00008}.Debug|x64.ActiveCfg = Debug|x64
+ {9E48B300-37D1-11DD-8C41-005056C00008}.Debug|x64.Build.0 = Debug|x64
+ {9E48B300-37D1-11DD-8C41-005056C00008}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {9E48B300-37D1-11DD-8C41-005056C00008}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {9E48B300-37D1-11DD-8C41-005056C00008}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {9E48B300-37D1-11DD-8C41-005056C00008}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {9E48B300-37D1-11DD-8C41-005056C00008}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {9E48B300-37D1-11DD-8C41-005056C00008}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {9E48B300-37D1-11DD-8C41-005056C00008}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {9E48B300-37D1-11DD-8C41-005056C00008}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {9E48B300-37D1-11DD-8C41-005056C00008}.Release|Win32.ActiveCfg = Release|Win32
+ {9E48B300-37D1-11DD-8C41-005056C00008}.Release|Win32.Build.0 = Release|Win32
+ {9E48B300-37D1-11DD-8C41-005056C00008}.Release|x64.ActiveCfg = Release|x64
+ {9E48B300-37D1-11DD-8C41-005056C00008}.Release|x64.Build.0 = Release|x64
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.Debug|Win32.ActiveCfg = Debug|Win32
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.Debug|Win32.Build.0 = Debug|Win32
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.Debug|x64.ActiveCfg = Debug|x64
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.Debug|x64.Build.0 = Debug|x64
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.PGInstrument|Win32.ActiveCfg = Release|Win32
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.PGInstrument|Win32.Build.0 = Release|Win32
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.PGInstrument|x64.ActiveCfg = Release|x64
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.PGInstrument|x64.Build.0 = Release|x64
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.PGUpdate|Win32.ActiveCfg = Release|Win32
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.PGUpdate|Win32.Build.0 = Release|Win32
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.PGUpdate|x64.ActiveCfg = Release|x64
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.PGUpdate|x64.Build.0 = Release|x64
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.Release|Win32.ActiveCfg = Release|Win32
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.Release|Win32.Build.0 = Release|Win32
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.Release|x64.ActiveCfg = Release|x64
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.Release|x64.Build.0 = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/PC/VS8.0/pginstrument.vsprops b/PC/VS8.0/pginstrument.vsprops
new file mode 100644
index 0000000..93b9687
--- /dev/null
+++ b/PC/VS8.0/pginstrument.vsprops
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="pginstrument"
+ OutputDirectory="$(OutDirPGI)"
+ IntermediateDirectory="$(SolutionDir)$(PlatformName)-temp-pgi\$(ProjectName)\"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ EnableIntrinsicFunctions="false"
+ FavorSizeOrSpeed="2"
+ OmitFramePointers="true"
+ EnableFiberSafeOptimizations="false"
+ WholeProgramOptimization="true"
+ StringPooling="true"
+ ExceptionHandling="0"
+ BufferSecurityCheck="false"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ LinkTimeCodeGeneration="2"
+ ProfileGuidedDatabase="$(SolutionDir)$(PlatformName)-pgi\$(TargetName).pgd"
+ ImportLibrary="$(OutDirPGI)\$(TargetName).lib"
+ />
+ <UserMacro
+ Name="OutDirPGI"
+ Value="$(SolutionDir)$(PlatformName)-pgi\"
+ />
+</VisualStudioPropertySheet>
diff --git a/PC/VS8.0/pgupdate.vsprops b/PC/VS8.0/pgupdate.vsprops
new file mode 100644
index 0000000..7ce4a3a
--- /dev/null
+++ b/PC/VS8.0/pgupdate.vsprops
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="pgupdate"
+ OutputDirectory="$(SolutionDir)$(PlatformName)-pgo\"
+ InheritedPropertySheets="$(SolutionDir)\pginstrument.vsprops"
+ >
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalManifestDependencies=""
+ LinkTimeCodeGeneration="4"
+ />
+</VisualStudioPropertySheet>
diff --git a/PC/VS8.0/pyd.vsprops b/PC/VS8.0/pyd.vsprops
new file mode 100644
index 0000000..ce039eb
--- /dev/null
+++ b/PC/VS8.0/pyd.vsprops
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="pyd"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE"
+ RuntimeLibrary="2"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(ProjectName).pyd"
+ ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"
+ ImportLibrary="$(OutDir)\$(TargetName).lib"
+ GenerateManifest="false"
+ />
+ <Tool
+ Name="VCManifestTool"
+ EmbedManifest="false"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine=""
+ />
+</VisualStudioPropertySheet>
diff --git a/PC/VS8.0/pyd_d.vsprops b/PC/VS8.0/pyd_d.vsprops
new file mode 100644
index 0000000..8508156
--- /dev/null
+++ b/PC/VS8.0/pyd_d.vsprops
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="pyd_d"
+ InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ InlineFunctionExpansion="0"
+ EnableIntrinsicFunctions="false"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE"
+ RuntimeLibrary="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(ProjectName)_d.pyd"
+ LinkIncremental="1"
+ ProgramDatabaseFile="$(OutDir)\$(ProjectName)_d.pdb"
+ ImportLibrary="$(OutDir)\$(TargetName).lib"
+ GenerateManifest="false"
+ />
+ <Tool
+ Name="VCManifestTool"
+ EmbedManifest="false"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine=""
+ />
+ <UserMacro
+ Name="PythonExe"
+ Value="$(SolutionDir)python_d.exe"
+ />
+</VisualStudioPropertySheet>
diff --git a/PC/VS8.0/pyexpat.vcproj b/PC/VS8.0/pyexpat.vcproj
new file mode 100644
index 0000000..0d42f30
--- /dev/null
+++ b/PC/VS8.0/pyexpat.vcproj
@@ -0,0 +1,553 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="pyexpat"
+ ProjectGUID="{D06B6426-4762-44CC-8BAD-D79052507F2F}"
+ RootNamespace="pyexpat"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=".\..\..\Modules\expat"
+ PreprocessorDefinitions="PYEXPAT_EXPORTS;HAVE_EXPAT_H;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;XML_STATIC;HAVE_MEMMOVE"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=".\..\..\Modules\expat"
+ PreprocessorDefinitions="PYEXPAT_EXPORTS;HAVE_EXPAT_H;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;XML_STATIC;HAVE_MEMMOVE"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=".\..\..\Modules\expat"
+ PreprocessorDefinitions="PYEXPAT_EXPORTS;HAVE_EXPAT_H;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;XML_STATIC;HAVE_MEMMOVE"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=".\..\..\Modules\expat"
+ PreprocessorDefinitions="PYEXPAT_EXPORTS;HAVE_EXPAT_H;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;XML_STATIC;HAVE_MEMMOVE"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=".\..\..\Modules\expat"
+ PreprocessorDefinitions="PYEXPAT_EXPORTS;HAVE_EXPAT_H;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;XML_STATIC;HAVE_MEMMOVE"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=".\..\..\Modules\expat"
+ PreprocessorDefinitions="PYEXPAT_EXPORTS;HAVE_EXPAT_H;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;XML_STATIC;HAVE_MEMMOVE"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=".\..\..\Modules\expat"
+ PreprocessorDefinitions="PYEXPAT_EXPORTS;HAVE_EXPAT_H;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;XML_STATIC;HAVE_MEMMOVE"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=".\..\..\Modules\expat"
+ PreprocessorDefinitions="PYEXPAT_EXPORTS;HAVE_EXPAT_H;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;XML_STATIC;HAVE_MEMMOVE"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Header Files"
+ >
+ <File
+ RelativePath="..\..\Modules\expat\xmlrole.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\xmltok.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\pyexpat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\xmlparse.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\xmlrole.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\xmltok.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/pyproject.vsprops b/PC/VS8.0/pyproject.vsprops
new file mode 100644
index 0000000..c0c7e32
--- /dev/null
+++ b/PC/VS8.0/pyproject.vsprops
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="pyproject"
+ OutputDirectory="$(SolutionDir)"
+ IntermediateDirectory="$(SolutionDir)$(PlatformName)-temp-$(ConfigurationName)\$(ProjectName)\"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories="..\..\Include; ..\..\PC"
+ PreprocessorDefinitions="_WIN32"
+ StringPooling="true"
+ ExceptionHandling="0"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories="$(OutDir)"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="$(OutDir)$(TargetName).pdb"
+ SubSystem="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ AdditionalIncludeDirectories="..\..\PC;..\..\Include"
+ />
+ <UserMacro
+ Name="PyDllName"
+ Value="python27"
+ />
+ <UserMacro
+ Name="PythonExe"
+ Value="$(SolutionDir)\python.exe"
+ />
+ <UserMacro
+ Name="externalsDir"
+ Value="..\..\.."
+ />
+ <UserMacro
+ Name="bsddb47Dir"
+ Value="$(externalsDir)\db-4.7.25.0\build_windows"
+ />
+ <UserMacro
+ Name="bsddb47DepLibs"
+ Value="ws2_32.lib"
+ />
+ <UserMacro
+ Name="bsddbDir"
+ Value="$(bsddb47Dir)"
+ />
+ <UserMacro
+ Name="bsddbDepLibs"
+ Value="$(bsddb47DepLibs)"
+ />
+ <UserMacro
+ Name="bsddb44Dir"
+ Value="$(externalsDir)\db-4.4.20\build_win32"
+ />
+ <UserMacro
+ Name="bsddb44DepLibs"
+ Value=""
+ />
+ <UserMacro
+ Name="sqlite3Dir"
+ Value="$(externalsDir)\sqlite-3.6.21"
+ />
+ <UserMacro
+ Name="bz2Dir"
+ Value="$(externalsDir)\bzip2-1.0.6"
+ />
+ <UserMacro
+ Name="opensslDir"
+ Value="$(externalsDir)\openssl-0.9.8y"
+ />
+ <UserMacro
+ Name="tcltkDir"
+ Value="$(externalsDir)\tcltk"
+ />
+ <UserMacro
+ Name="tcltk64Dir"
+ Value="$(externalsDir)\tcltk64"
+ />
+ <UserMacro
+ Name="tcltkLib"
+ Value="$(tcltkDir)\lib\tcl85.lib $(tcltkDir)\lib\tk85.lib"
+ />
+ <UserMacro
+ Name="tcltkLibDebug"
+ Value="$(tcltkDir)\lib\tcl85g.lib $(tcltkDir)\lib\tk85g.lib"
+ />
+ <UserMacro
+ Name="tcltk64Lib"
+ Value="$(tcltk64Dir)\lib\tcl85.lib $(tcltk64Dir)\lib\tk85.lib"
+ />
+ <UserMacro
+ Name="tcltk64LibDebug"
+ Value="$(tcltk64Dir)\lib\tcl85g.lib $(tcltk64Dir)\lib\tk85g.lib"
+ />
+</VisualStudioPropertySheet>
diff --git a/PC/VS8.0/python.vcproj b/PC/VS8.0/python.vcproj
new file mode 100644
index 0000000..f2e7d11
--- /dev/null
+++ b/PC/VS8.0/python.vcproj
@@ -0,0 +1,637 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="python"
+ ProjectGUID="{B11D750F-CD1F-4A96-85CE-E69A5C5259F9}"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_CONSOLE"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\python.exe"
+ SubSystem="1"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_CONSOLE"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\python.exe"
+ SubSystem="1"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ EnableIntrinsicFunctions="false"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_CONSOLE"
+ RuntimeLibrary="3"
+ BrowseInformation="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\Include"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\python_d.exe"
+ SubSystem="1"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\debug.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ EnableIntrinsicFunctions="false"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_CONSOLE"
+ RuntimeLibrary="3"
+ BrowseInformation="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\Include"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\python_d.exe"
+ SubSystem="1"
+ StackReserveSize="2100000"
+ BaseAddress="0x1d000000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops;.\pginstrument.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_CONSOLE"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\python.exe"
+ SubSystem="1"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ ImportLibrary=""
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops;.\pginstrument.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_CONSOLE"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\python.exe"
+ SubSystem="1"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ ImportLibrary=""
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops;.\pgupdate.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_CONSOLE"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\python.exe"
+ SubSystem="1"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ ImportLibrary=""
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops;.\pgupdate.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_CONSOLE"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\python.exe"
+ SubSystem="1"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ ImportLibrary=""
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Resource Files"
+ >
+ <File
+ RelativePath="..\..\PC\pycon.ico"
+ >
+ </File>
+ <File
+ RelativePath="..\..\PC\python_exe.rc"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\python.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/pythoncore.vcproj b/PC/VS8.0/pythoncore.vcproj
new file mode 100644
index 0000000..d8995e6
--- /dev/null
+++ b/PC/VS8.0/pythoncore.vcproj
@@ -0,0 +1,1889 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="pythoncore"
+ ProjectGUID="{CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}"
+ RootNamespace="pythoncore"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/Zm200 "
+ AdditionalIncludeDirectories="..\..\Python;..\..\Modules\zlib"
+ PreprocessorDefinitions="_USRDLL;Py_BUILD_CORE;Py_ENABLE_SHARED;WIN32"
+ RuntimeLibrary="2"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\Include"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ Description="Generate build information..."
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="getbuildinfo.o"
+ OutputFile="$(OutDir)\$(PyDllName).dll"
+ IgnoreDefaultLibraryNames="libc"
+ ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
+ BaseAddress="0x1e000000"
+ ImportLibrary="$(OutDir)$(PyDllName).lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/Zm200 "
+ AdditionalIncludeDirectories="..\..\Python;..\..\Modules\zlib"
+ PreprocessorDefinitions="_USRDLL;Py_BUILD_CORE;Py_ENABLE_SHARED;WIN32"
+ RuntimeLibrary="2"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\Include"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ Description="Generate build information..."
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="getbuildinfo.o"
+ OutputFile="$(OutDir)\$(PyDllName).dll"
+ IgnoreDefaultLibraryNames="libc"
+ ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
+ BaseAddress="0x1e000000"
+ ImportLibrary="$(OutDir)$(PyDllName).lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/Zm200 "
+ Optimization="0"
+ InlineFunctionExpansion="0"
+ EnableIntrinsicFunctions="false"
+ AdditionalIncludeDirectories="..\..\Python;..\..\Modules\zlib"
+ PreprocessorDefinitions="_USRDLL;Py_BUILD_CORE;Py_ENABLE_SHARED;WIN32"
+ RuntimeLibrary="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\Include"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ Description="Generate build information..."
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Debug"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="getbuildinfo.o"
+ OutputFile="$(OutDir)\$(PyDllName)_d.dll"
+ IgnoreDefaultLibraryNames="libc"
+ ProgramDatabaseFile="$(OutDir)$(PyDllName)_d.pdb"
+ BaseAddress="0x1e000000"
+ ImportLibrary="$(OutDir)$(PyDllName)_d.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\debug.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/Zm200 "
+ Optimization="0"
+ InlineFunctionExpansion="0"
+ EnableIntrinsicFunctions="false"
+ AdditionalIncludeDirectories="..\..\Python;..\..\Modules\zlib"
+ PreprocessorDefinitions="_USRDLL;Py_BUILD_CORE;Py_ENABLE_SHARED;WIN32"
+ RuntimeLibrary="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\Include"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ Description="Generate build information..."
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Debug"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="getbuildinfo.o"
+ OutputFile="$(OutDir)\$(PyDllName)_d.dll"
+ IgnoreDefaultLibraryNames="libc"
+ ProgramDatabaseFile="$(OutDir)$(PyDllName)_d.pdb"
+ BaseAddress="0x1e000000"
+ ImportLibrary="$(OutDir)$(PyDllName)_d.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops;.\pginstrument.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/Zm200 "
+ AdditionalIncludeDirectories="..\..\Python;..\..\Modules\zlib"
+ PreprocessorDefinitions="_USRDLL;Py_BUILD_CORE;Py_ENABLE_SHARED;WIN32"
+ RuntimeLibrary="2"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\Include"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ Description="Generate build information..."
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="getbuildinfo.o"
+ OutputFile="$(OutDir)\$(PyDllName).dll"
+ IgnoreDefaultLibraryNames="libc"
+ ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
+ BaseAddress="0x1e000000"
+ ImportLibrary="$(OutDirPGI)$(PyDllName).lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops;.\pginstrument.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/Zm200 "
+ AdditionalIncludeDirectories="..\..\Python;..\..\Modules\zlib"
+ PreprocessorDefinitions="_USRDLL;Py_BUILD_CORE;Py_ENABLE_SHARED;WIN32"
+ RuntimeLibrary="2"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\Include"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ Description="Generate build information..."
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="getbuildinfo.o"
+ OutputFile="$(OutDir)\$(PyDllName).dll"
+ IgnoreDefaultLibraryNames="libc"
+ ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
+ BaseAddress="0x1e000000"
+ ImportLibrary="$(OutDirPGI)$(PyDllName).lib"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops;.\pgupdate.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/Zm200 "
+ AdditionalIncludeDirectories="..\..\Python;..\..\Modules\zlib"
+ PreprocessorDefinitions="_USRDLL;Py_BUILD_CORE;Py_ENABLE_SHARED;WIN32"
+ RuntimeLibrary="2"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\Include"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ Description="Generate build information..."
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="getbuildinfo.o"
+ OutputFile="$(OutDir)\$(PyDllName).dll"
+ IgnoreDefaultLibraryNames="libc"
+ ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
+ BaseAddress="0x1e000000"
+ ImportLibrary="$(OutDirPGI)$(PyDllName).lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops;.\pgupdate.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/Zm200 "
+ AdditionalIncludeDirectories="..\..\Python;..\..\Modules\zlib"
+ PreprocessorDefinitions="_USRDLL;Py_BUILD_CORE;Py_ENABLE_SHARED;WIN32"
+ RuntimeLibrary="2"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\Include"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ Description="Generate build information..."
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="getbuildinfo.o"
+ OutputFile="$(OutDir)\$(PyDllName).dll"
+ IgnoreDefaultLibraryNames="libc"
+ ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
+ BaseAddress="0x1e000000"
+ ImportLibrary="$(OutDirPGI)$(PyDllName).lib"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Include"
+ >
+ <File
+ RelativePath="..\..\Include\abstract.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\asdl.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\ast.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\bitset.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\boolobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\bufferobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\bytes_methods.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\bytearrayobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\bytesobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\cellobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\ceval.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\classobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\cobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\code.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\codecs.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\compile.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\complexobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\cStringIO.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\datetime.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\descrobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\dictobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\dtoa.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\enumobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\errcode.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\eval.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\fileobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\floatobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\frameobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\funcobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\genobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\graminit.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\grammar.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\import.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\intobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\intrcheck.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\iterobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\listobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\longintrepr.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\longobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\marshal.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\memoryobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\metagrammar.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\methodobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\modsupport.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\moduleobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\node.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\object.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\objimpl.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\opcode.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\osdefs.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\parsetok.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\patchlevel.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pgen.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pgenheaders.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\py_curses.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pyarena.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pycapsule.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pyctype.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pydebug.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pyerrors.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pyexpat.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pyfpe.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pygetopt.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pymactoolbox.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pymath.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pymem.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pyport.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pystate.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pystrcmp.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pystrtod.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\Python-ast.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\Python.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pythonrun.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pythread.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\rangeobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\setobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\sliceobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\stringobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\structmember.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\structseq.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\symtable.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\sysmodule.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\timefuncs.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\token.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\traceback.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\tupleobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\ucnhash.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\unicodeobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\weakrefobject.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Modules"
+ >
+ <File
+ RelativePath="..\..\Modules\_bisectmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_codecsmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_collectionsmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_csv.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_functoolsmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_heapqmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_hotshot.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_json.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_localemodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_lsprof.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_math.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_math.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_randommodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sre.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_struct.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_weakref.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\arraymodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\audioop.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\binascii.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cmathmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cPickle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cStringIO.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\datetimemodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\errnomodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\future_builtins.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\gcmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\imageop.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\itertoolsmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\main.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\mathmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\md5.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\md5.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\md5module.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\mmapmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\operator.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\parsermodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\posixmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\rotatingtree.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\rotatingtree.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\sha256module.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\sha512module.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\shamodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\signalmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\stropmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\symtablemodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\threadmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\timemodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\xxsubtype.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zipimport.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlibmodule.c"
+ >
+ </File>
+ <Filter
+ Name="zlib"
+ >
+ <File
+ RelativePath="..\..\Modules\zlib\adler32.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\compress.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\crc32.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\crc32.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\deflate.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\deflate.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\gzclose.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\gzlib.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\gzread.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\gzwrite.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\infback.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inffast.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inffast.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inffixed.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inflate.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inflate.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inftrees.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inftrees.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\trees.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\trees.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\uncompr.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\zconf.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\zconf.in.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\zlib.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\zutil.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\zutil.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="cjkcodecs"
+ >
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\_codecs_cn.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\_codecs_hk.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\_codecs_iso2022.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\_codecs_jp.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\_codecs_kr.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\_codecs_tw.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\alg_jisx0201.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\cjkcodecs.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\emu_jisx0213_2000.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\mappings_cn.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\mappings_hk.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\mappings_jisx0213_pair.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\mappings_jp.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\mappings_kr.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\mappings_tw.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\multibytecodec.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\multibytecodec.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="_io"
+ >
+ <File
+ RelativePath="..\..\Modules\_io\_iomodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_io\_iomodule.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_io\bufferedio.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_io\bytesio.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_io\fileio.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_io\iobase.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_io\stringio.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_io\textio.c"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ <Filter
+ Name="Objects"
+ >
+ <File
+ RelativePath="..\..\Objects\abstract.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\boolobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\bufferobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\bytes_methods.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\bytearrayobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\capsule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\cellobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\classobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\cobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\codeobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\complexobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\stringlib\count.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\descrobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\dictobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\enumobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\exceptions.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\stringlib\fastsearch.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\fileobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\stringlib\find.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\floatobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\frameobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\funcobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\genobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\intobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\iterobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\listobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\longobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\memoryobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\methodobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\moduleobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\object.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\obmalloc.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\stringlib\partition.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\rangeobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\setobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\sliceobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\stringlib\split.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\stringobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\structseq.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\tupleobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\typeobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\unicodectype.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\unicodeobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\unicodetype_db.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\weakrefobject.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Parser"
+ >
+ <File
+ RelativePath="..\..\Parser\acceler.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\bitset.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\firstsets.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\grammar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\grammar1.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\listnode.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\metagrammar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\myreadline.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\node.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\parser.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\parser.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\parsetok.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\tokenizer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\tokenizer.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="PC"
+ >
+ <File
+ RelativePath="..\..\PC\_subprocess.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\PC\_winreg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\PC\config.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\PC\dl_nt.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\PC\errmap.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\PC\getpathp.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\PC\import_nt.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\PC\msvcrtmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\PC\pyconfig.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Python"
+ >
+ <File
+ RelativePath="..\..\Python\_warnings.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\asdl.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\ast.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\bltinmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\ceval.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\codecs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\compile.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\dtoa.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\dynload_win.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\errors.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\formatter_string.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\formatter_unicode.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\frozen.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\future.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\getargs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\getcompiler.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\getcopyright.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\getopt.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\getplatform.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\getversion.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\graminit.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\import.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\importdl.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\importdl.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\marshal.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\modsupport.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\mysnprintf.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\mystrtoul.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\peephole.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\pyarena.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\pyctype.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\pyfpe.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\pymath.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\pystate.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\pystrcmp.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\pystrtod.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\Python-ast.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\pythonrun.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\random.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\structmember.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\symtable.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\sysmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\thread.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\thread_nt.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\traceback.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ >
+ <File
+ RelativePath="..\..\PC\python_nt.rc"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/pythonw.vcproj b/PC/VS8.0/pythonw.vcproj
new file mode 100644
index 0000000..f890d60
--- /dev/null
+++ b/PC/VS8.0/pythonw.vcproj
@@ -0,0 +1,618 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="pythonw"
+ ProjectGUID="{F4229CC3-873C-49AE-9729-DD308ED4CD4A}"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ EnableIntrinsicFunctions="false"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_WINDOWS"
+ RuntimeLibrary="3"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\pythonw_d.exe"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\debug.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ EnableIntrinsicFunctions="false"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_WINDOWS"
+ RuntimeLibrary="3"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\pythonw_d.exe"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_WINDOWS"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\pythonw.exe"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_WINDOWS"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\pythonw.exe"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops;.\pginstrument.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_WINDOWS"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\pythonw.exe"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ ImportLibrary=""
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops;.\pginstrument.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_WINDOWS"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\pythonw.exe"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ ImportLibrary=""
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops;.\pgupdate.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_WINDOWS"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\pythonw.exe"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ ImportLibrary=""
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops;.\pgupdate.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_WINDOWS"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\pythonw.exe"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ ImportLibrary=""
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Resource Files"
+ >
+ <File
+ RelativePath="..\..\PC\python_exe.rc"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\PC\WinMain.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/release.vsprops b/PC/VS8.0/release.vsprops
new file mode 100644
index 0000000..6d6842d
--- /dev/null
+++ b/PC/VS8.0/release.vsprops
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="release"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ />
+ <UserMacro
+ Name="KillPythonExe"
+ Value="$(OutDir)\kill_python.exe"
+ />
+</VisualStudioPropertySheet>
diff --git a/PC/VS8.0/rmpyc.py b/PC/VS8.0/rmpyc.py
new file mode 100644
index 0000000..18e1705
--- /dev/null
+++ b/PC/VS8.0/rmpyc.py
@@ -0,0 +1,25 @@
+# Remove all the .pyc and .pyo files under ../Lib.
+
+
+def deltree(root):
+ import os
+ from os.path import join
+
+ npyc = npyo = 0
+ for root, dirs, files in os.walk(root):
+ for name in files:
+ delete = False
+ if name.endswith('.pyc'):
+ delete = True
+ npyc += 1
+ elif name.endswith('.pyo'):
+ delete = True
+ npyo += 1
+
+ if delete:
+ os.remove(join(root, name))
+
+ return npyc, npyo
+
+npyc, npyo = deltree("../../Lib")
+print(npyc, ".pyc deleted,", npyo, ".pyo deleted")
diff --git a/PC/VS8.0/rt.bat b/PC/VS8.0/rt.bat
new file mode 100644
index 0000000..767af76
--- /dev/null
+++ b/PC/VS8.0/rt.bat
@@ -0,0 +1,52 @@
+@echo off
+rem Run Tests. Run the regression test suite.
+rem Usage: rt [-d] [-O] [-q] regrtest_args
+rem -d Run Debug build (python_d.exe). Else release build.
+rem -O Run python.exe or python_d.exe (see -d) with -O.
+rem -q "quick" -- normally the tests are run twice, the first time
+rem after deleting all the .py[co] files reachable from Lib/.
+rem -q runs the tests just once, and without deleting .py[co] files.
+rem All leading instances of these switches are shifted off, and
+rem whatever remains is passed to regrtest.py. For example,
+rem rt -O -d -x test_thread
+rem runs
+rem python_d -O ../lib/test/regrtest.py -x test_thread
+rem twice, and
+rem rt -q -g test_binascii
+rem runs
+rem python_d ../lib/test/regrtest.py -g test_binascii
+rem to generate the expected-output file for binascii quickly.
+rem
+rem Confusing: if you want to pass a comma-separated list, like
+rem -u network,largefile
+rem then you have to quote it on the rt line, like
+rem rt -u "network,largefile"
+
+setlocal
+
+set exe=python
+set qmode=
+set dashO=
+PATH %PATH%;..\..\..\tcltk\bin
+
+:CheckOpts
+if "%1"=="-O" (set dashO=-O) & shift & goto CheckOpts
+if "%1"=="-q" (set qmode=yes) & shift & goto CheckOpts
+if "%1"=="-d" (set exe=python_d) & shift & goto CheckOpts
+
+set cmd=%exe% %dashO% -E -tt ../../lib/test/regrtest.py %1 %2 %3 %4 %5 %6 %7 %8 %9
+if defined qmode goto Qmode
+
+echo Deleting .pyc/.pyo files ...
+%exe% rmpyc.py
+
+echo on
+%cmd%
+@echo off
+
+echo About to run again without deleting .pyc/.pyo first:
+pause
+
+:Qmode
+echo on
+%cmd%
diff --git a/PC/VS8.0/select.vcproj b/PC/VS8.0/select.vcproj
new file mode 100644
index 0000000..49ec2f0
--- /dev/null
+++ b/PC/VS8.0/select.vcproj
@@ -0,0 +1,537 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="select"
+ ProjectGUID="{18CAE28C-B454-46C1-87A0-493D91D97F03}"
+ RootNamespace="select"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ IgnoreDefaultLibraryNames="libc"
+ BaseAddress="0x1D110000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ IgnoreDefaultLibraryNames="libc"
+ BaseAddress="0x1D110000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ IgnoreDefaultLibraryNames="libc"
+ BaseAddress="0x1D110000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ IgnoreDefaultLibraryNames="libc"
+ BaseAddress="0x1D110000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ IgnoreDefaultLibraryNames="libc"
+ BaseAddress="0x1D110000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ IgnoreDefaultLibraryNames="libc"
+ BaseAddress="0x1D110000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ IgnoreDefaultLibraryNames="libc"
+ BaseAddress="0x1D110000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ IgnoreDefaultLibraryNames="libc"
+ BaseAddress="0x1D110000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\selectmodule.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/sqlite3.vcproj b/PC/VS8.0/sqlite3.vcproj
new file mode 100644
index 0000000..e7e0728
--- /dev/null
+++ b/PC/VS8.0/sqlite3.vcproj
@@ -0,0 +1,537 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="sqlite3"
+ ProjectGUID="{A1A295E5-463C-437F-81CA-1F32367685DA}"
+ RootNamespace="sqlite3"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\sqlite3.vsprops;.\debug.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(ProjectName)_d.dll"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\sqlite3.vsprops;.\debug.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(ProjectName)_d.dll"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\sqlite3.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(ProjectName).dll"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\sqlite3.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(ProjectName).dll"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\sqlite3.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="&quot;..\..\..\sqlite-3.6.21&quot;"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(ProjectName).dll"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\sqlite3.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\sqlite3.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(ProjectName).dll"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\sqlite3.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Header Files"
+ >
+ <File
+ RelativePath="..\..\..\sqlite-3.6.21\sqlite3.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\sqlite-3.6.21\sqlite3ext.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\..\sqlite-3.6.21\sqlite3.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/sqlite3.vsprops b/PC/VS8.0/sqlite3.vsprops
new file mode 100644
index 0000000..0b7102d
--- /dev/null
+++ b/PC/VS8.0/sqlite3.vsprops
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="sqlite3"
+ InheritedPropertySheets=".\pyproject.vsprops"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
+ PreprocessorDefinitions="SQLITE_API=__declspec(dllexport)"
+ WarningLevel="1"
+ />
+</VisualStudioPropertySheet>
diff --git a/PC/VS8.0/unicodedata.vcproj b/PC/VS8.0/unicodedata.vcproj
new file mode 100644
index 0000000..84a9e09
--- /dev/null
+++ b/PC/VS8.0/unicodedata.vcproj
@@ -0,0 +1,533 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="unicodedata"
+ ProjectGUID="{ECC7CEAC-A5E5-458E-BB9E-2413CC847881}"
+ RootNamespace="unicodedata"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D120000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D120000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D120000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D120000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D120000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D120000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D120000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D120000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Header Files"
+ >
+ <File
+ RelativePath="..\..\Modules\unicodedata_db.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\unicodename_db.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\unicodedata.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/w9xpopen.vcproj b/PC/VS8.0/w9xpopen.vcproj
new file mode 100644
index 0000000..3745c65
--- /dev/null
+++ b/PC/VS8.0/w9xpopen.vcproj
@@ -0,0 +1,576 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="w9xpopen"
+ ProjectGUID="{E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}"
+ RootNamespace="w9xpopen"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\debug.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ GenerateDebugInformation="false"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ GenerateDebugInformation="false"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops;.\pginstrument.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ GenerateDebugInformation="false"
+ SubSystem="1"
+ ImportLibrary=""
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops;.\pginstrument.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ GenerateDebugInformation="false"
+ SubSystem="1"
+ ImportLibrary=""
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops;.\pgupdate.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ GenerateDebugInformation="false"
+ SubSystem="1"
+ ImportLibrary=""
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops;.\pgupdate.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ GenerateDebugInformation="false"
+ SubSystem="1"
+ ImportLibrary=""
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\PC\w9xpopen.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/winsound.vcproj b/PC/VS8.0/winsound.vcproj
new file mode 100644
index 0000000..15d57dc
--- /dev/null
+++ b/PC/VS8.0/winsound.vcproj
@@ -0,0 +1,523 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="winsound"
+ ProjectGUID="{28B5D777-DDF2-4B6B-B34F-31D938813856}"
+ RootNamespace="winsound"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="winmm.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="winmm.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="winmm.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="winmm.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="winmm.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="winmm.lib"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="winmm.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="winmm.lib"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath="..\..\PC\winsound.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS8.0/x64.vsprops b/PC/VS8.0/x64.vsprops
new file mode 100644
index 0000000..0720084
--- /dev/null
+++ b/PC/VS8.0/x64.vsprops
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="amd64"
+ OutputDirectory="$(SolutionDir)\amd64\"
+ IntermediateDirectory="$(SolutionDir)$(PlatformName)-temp-$(ConfigurationName)\$(ProjectName)\"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/USECL:MS_OPTERON /GS-"
+ PreprocessorDefinitions="_WIN64;_M_X64"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ TargetMachine="17"
+ />
+ <UserMacro
+ Name="PythonExe"
+ Value="$(HOST_PYTHON)"
+ />
+</VisualStudioPropertySheet>
diff --git a/PC/VS9.0/_bsddb.vcproj b/PC/VS9.0/_bsddb.vcproj
new file mode 100644
index 0000000..c85aca6
--- /dev/null
+++ b/PC/VS9.0/_bsddb.vcproj
@@ -0,0 +1,1463 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="_bsddb"
+ ProjectGUID="{B4D38F3F-68FB-42EC-A45D-E00657BB3627}"
+ RootNamespace="_bsddb"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(bsddbDir),$(bsddbDir)\.."
+ PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(bsddbDepLibs)"
+ BaseAddress="0x1e180000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(bsddbDir),$(bsddbDir)\.."
+ PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(bsddbDepLibs)"
+ BaseAddress="0x1e180000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(bsddbDir),$(bsddbDir)\.."
+ PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(bsddbDepLibs)"
+ BaseAddress="0x1e180000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(bsddbDir),$(bsddbDir)\.."
+ PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(bsddbDepLibs)"
+ BaseAddress="0x1e180000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(bsddbDir),$(bsddbDir)\.."
+ PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(bsddbDepLibs)"
+ BaseAddress="0x1e180000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(bsddbDir),$(bsddbDir)\.."
+ PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(bsddbDepLibs)"
+ BaseAddress="0x1e180000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(bsddbDir),$(bsddbDir)\.."
+ PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(bsddbDepLibs)"
+ BaseAddress="0x1e180000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(bsddbDir),$(bsddbDir)\.."
+ PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(bsddbDepLibs)"
+ BaseAddress="0x1e180000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Header Files"
+ >
+ <File
+ RelativePath="..\..\Modules\bsddb.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_bsddb.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Berkeley DB 4.7.25 Source Files"
+ >
+ <File
+ RelativePath="$(bsddbDir)\..\crypto\aes_method.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\btree\bt_compact.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\btree\bt_compare.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\btree\bt_conv.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\btree\bt_curadj.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\btree\bt_cursor.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\btree\bt_delete.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\btree\bt_method.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\btree\bt_open.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\btree\bt_put.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\btree\bt_rec.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\btree\bt_reclaim.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\btree\bt_recno.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\btree\bt_rsearch.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\btree\bt_search.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\btree\bt_split.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\btree\bt_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\btree\bt_upgrade.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\btree\bt_verify.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\btree\btree_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\crdel_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\crdel_rec.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\crypto\crypto.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_am.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\common\db_byteorder.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_cam.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_cds.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_conv.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_dispatch.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_dup.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\common\db_err.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\common\db_getlong.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\common\db_idspace.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_iface.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_join.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\common\db_log2.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_meta.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_method.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_open.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_overflow.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_ovfl_vrfy.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_pr.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_rec.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_reclaim.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_remove.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_rename.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_ret.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_setid.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_setlsn.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\common\db_shash.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_stati.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_truncate.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_upg.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_upg_opd.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_vrfy.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\db\db_vrfyutil.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\dbm\dbm.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\dbreg\dbreg.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\dbreg\dbreg_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\dbreg\dbreg_rec.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\dbreg\dbreg_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\dbreg\dbreg_util.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\common\dbt.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\env\env_alloc.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\env\env_config.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\env\env_failchk.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\env\env_file.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\env\env_globals.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\env\env_method.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\env\env_name.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\env\env_open.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\env\env_recover.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\env\env_region.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\env\env_register.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\env\env_sig.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\env\env_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\fileops\fileops_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\fileops\fop_basic.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\fileops\fop_rec.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\fileops\fop_util.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\hash\hash.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\hash\hash_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\hash\hash_conv.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\hash\hash_dup.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\hash\hash_func.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\hash\hash_meta.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\hash\hash_method.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\hash\hash_open.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\hash\hash_page.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\hash\hash_rec.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\hash\hash_reclaim.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\hash\hash_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\hash\hash_upgrade.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\hash\hash_verify.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\hmac\hmac.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\hsearch\hsearch.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\lock\lock.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\lock\lock_deadlock.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\lock\lock_failchk.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\lock\lock_id.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\lock\lock_list.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\lock\lock_method.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\lock\lock_region.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\lock\lock_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\lock\lock_timer.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\lock\lock_util.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\log\log.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\log\log_archive.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\log\log_compare.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\log\log_debug.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\log\log_get.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\log\log_method.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\log\log_put.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\log\log_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\common\mkpath.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\mp\mp_alloc.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\mp\mp_bh.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\mp\mp_fget.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\mp\mp_fmethod.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\mp\mp_fopen.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\mp\mp_fput.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\mp\mp_fset.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\mp\mp_method.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\mp\mp_mvcc.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\mp\mp_region.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\mp\mp_register.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\mp\mp_resize.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\mp\mp_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\mp\mp_sync.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\mp\mp_trickle.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\crypto\mersenne\mt19937db.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\mutex\mut_alloc.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\mutex\mut_failchk.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\mutex\mut_method.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\mutex\mut_region.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\mutex\mut_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\mutex\mut_win32.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\common\openflags.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os\os_abort.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os_windows\os_abs.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os\os_addrinfo.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os\os_alloc.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os_windows\os_clock.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os_windows\os_config.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os_windows\os_cpu.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os\os_ctime.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os_windows\os_dir.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os_windows\os_errno.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os_windows\os_fid.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os_windows\os_flock.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os_windows\os_fsync.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os_windows\os_getenv.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os_windows\os_handle.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os_windows\os_map.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\common\os_method.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os_windows\os_mkdir.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os_windows\os_open.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os\os_pid.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os_windows\os_rename.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os\os_root.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os\os_rpath.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os_windows\os_rw.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os_windows\os_seek.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os\os_stack.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os_windows\os_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os\os_tmpdir.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os_windows\os_truncate.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os\os_uid.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os_windows\os_unlink.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\os_windows\os_yield.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\qam\qam.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\qam\qam_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\qam\qam_conv.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\qam\qam_files.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\qam\qam_method.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\qam\qam_open.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\qam\qam_rec.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\qam\qam_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\qam\qam_upgrade.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\qam\qam_verify.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\rep\rep_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\rep\rep_backup.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\rep\rep_elect.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\rep\rep_lease.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\rep\rep_log.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\rep\rep_method.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\rep\rep_record.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\rep\rep_region.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\rep\rep_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\rep\rep_util.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\rep\rep_verify.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\repmgr\repmgr_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\repmgr\repmgr_elect.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\repmgr\repmgr_method.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\repmgr\repmgr_msg.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\repmgr\repmgr_net.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\repmgr\repmgr_queue.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\repmgr\repmgr_sel.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\repmgr\repmgr_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\repmgr\repmgr_util.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\repmgr\repmgr_windows.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\crypto\rijndael\rijndael-alg-fst.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\crypto\rijndael\rijndael-api-fst.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\sequence\seq_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\sequence\sequence.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\hmac\sha1.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\clib\strsep.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\txn\txn.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\txn\txn_auto.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\txn\txn_chkpt.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\txn\txn_failchk.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\txn\txn_method.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\txn\txn_rec.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\txn\txn_recover.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\txn\txn_region.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\txn\txn_stat.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\txn\txn_util.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\common\util_cache.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\common\util_log.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\common\util_sig.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\xa\xa.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\xa\xa_db.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\xa\xa_map.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bsddbDir)\..\common\zerofill.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/_ctypes.vcproj b/PC/VS9.0/_ctypes.vcproj
new file mode 100644
index 0000000..7ac20c6
--- /dev/null
+++ b/PC/VS9.0/_ctypes.vcproj
@@ -0,0 +1,705 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="_ctypes"
+ ProjectGUID="{0E9791DB-593A-465F-98BC-681011311618}"
+ RootNamespace="_ctypes"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\_ctypes\libffi_msvc"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D1A0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\_ctypes\libffi_msvc"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D1A0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\_ctypes\libffi_msvc"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/EXPORT:DllGetClassObject,PRIVATE /EXPORT:DllCanUnloadNow,PRIVATE"
+ SubSystem="0"
+ BaseAddress="0x1D1A0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\_ctypes\libffi_msvc"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/EXPORT:DllGetClassObject,PRIVATE /EXPORT:DllCanUnloadNow,PRIVATE"
+ SubSystem="0"
+ BaseAddress="0x1D1A0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\_ctypes\libffi_msvc"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/EXPORT:DllGetClassObject,PRIVATE /EXPORT:DllCanUnloadNow,PRIVATE"
+ SubSystem="0"
+ BaseAddress="0x1D1A0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\_ctypes\libffi_msvc"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/EXPORT:DllGetClassObject,PRIVATE /EXPORT:DllCanUnloadNow,PRIVATE"
+ SubSystem="0"
+ BaseAddress="0x1D1A0000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\_ctypes\libffi_msvc"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/EXPORT:DllGetClassObject,PRIVATE /EXPORT:DllCanUnloadNow,PRIVATE"
+ SubSystem="0"
+ BaseAddress="0x1D1A0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\_ctypes\libffi_msvc"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/EXPORT:DllGetClassObject,PRIVATE /EXPORT:DllCanUnloadNow,PRIVATE"
+ SubSystem="0"
+ BaseAddress="0x1D1A0000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Header Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_ctypes\ctypes.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\ctypes_dlfcn.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\libffi_msvc\ffi.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\libffi_msvc\ffi_common.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\libffi_msvc\fficonfig.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\libffi_msvc\ffitarget.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_ctypes\_ctypes.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\callbacks.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\callproc.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\cfield.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\libffi_msvc\ffi.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\malloc_closure.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\libffi_msvc\prep_cif.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\stgdict.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\libffi_msvc\win32.c"
+ >
+ <FileConfiguration
+ Name="Debug|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="PGInstrument|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="PGUpdate|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\Modules\_ctypes\libffi_msvc\win64.asm"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|x64"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ CommandLine="ml64 /nologo /c /Zi /Fo &quot;$(IntDir)\win64.obj&quot; &quot;$(InputPath)&quot;&#x0D;&#x0A;"
+ Outputs="$(IntDir)\win64.obj"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|x64"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ CommandLine="ml64 /nologo /c /Fo &quot;$(IntDir)\win64.obj&quot; &quot;$(InputPath)&quot;&#x0D;&#x0A;"
+ Outputs="$(IntDir)\win64.obj"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="PGInstrument|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="PGInstrument|x64"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ CommandLine="ml64 /nologo /c /Fo &quot;$(IntDir)\win64.obj&quot; &quot;$(InputPath)&quot;&#x0D;&#x0A;"
+ Outputs="$(IntDir)\win64.obj"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="PGUpdate|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="PGUpdate|x64"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ CommandLine="ml64 /nologo /c /Fo &quot;$(IntDir)\win64.obj&quot; &quot;$(InputPath)&quot;&#x0D;&#x0A;"
+ Outputs="$(IntDir)\win64.obj"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/_ctypes_test.vcproj b/PC/VS9.0/_ctypes_test.vcproj
new file mode 100644
index 0000000..146e114
--- /dev/null
+++ b/PC/VS9.0/_ctypes_test.vcproj
@@ -0,0 +1,521 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="_ctypes_test"
+ ProjectGUID="{9EC7190A-249F-4180-A900-548FDCF3055F}"
+ RootNamespace="_ctypes_test"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Header Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_ctypes\_ctypes_test.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_ctypes\_ctypes_test.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/_elementtree.vcproj b/PC/VS9.0/_elementtree.vcproj
new file mode 100644
index 0000000..f89409c
--- /dev/null
+++ b/PC/VS9.0/_elementtree.vcproj
@@ -0,0 +1,613 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="_elementtree"
+ ProjectGUID="{17E1E049-C309-4D79-843F-AE483C264AEA}"
+ RootNamespace="_elementtree"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\expat"
+ PreprocessorDefinitions="USE_PYEXPAT_CAPI;XML_STATIC"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D100000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\expat"
+ PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS;USE_PYEXPAT_CAPI;XML_STATIC"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D100000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\expat"
+ PreprocessorDefinitions="USE_PYEXPAT_CAPI;XML_STATIC"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D100000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\expat"
+ PreprocessorDefinitions="USE_PYEXPAT_CAPI;XML_STATIC"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D100000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\expat"
+ PreprocessorDefinitions="USE_PYEXPAT_CAPI;XML_STATIC"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D100000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\expat"
+ PreprocessorDefinitions="USE_PYEXPAT_CAPI;XML_STATIC"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D100000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\expat"
+ PreprocessorDefinitions="USE_PYEXPAT_CAPI;XML_STATIC"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D100000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\Modules\expat"
+ PreprocessorDefinitions="USE_PYEXPAT_CAPI;XML_STATIC"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D100000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Header Files"
+ >
+ <File
+ RelativePath="..\..\Modules\expat\ascii.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\asciitab.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\expat.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\expat_config.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\expat_external.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\iasciitab.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\internal.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\latin1tab.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\macconfig.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\nametab.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\pyexpatns.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\utf8tab.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\winconfig.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\xmlrole.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\xmltok.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_elementtree.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\xmlparse.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\xmlrole.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\xmltok.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/_hashlib.vcproj b/PC/VS9.0/_hashlib.vcproj
new file mode 100644
index 0000000..22057ca
--- /dev/null
+++ b/PC/VS9.0/_hashlib.vcproj
@@ -0,0 +1,545 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="_hashlib"
+ ProjectGUID="{447F05A8-F581-4CAC-A466-5AC7936E207E}"
+ RootNamespace="_hashlib"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\include32"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib $(opensslDir)\out32\libeay32.lib $(opensslDir)\out32\ssleay32.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\include64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib $(opensslDir)\out64\libeay32.lib $(opensslDir)\out64\ssleay32.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\include32"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib $(opensslDir)\out32\libeay32.lib $(opensslDir)\out32\ssleay32.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\include64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib $(opensslDir)\out64\libeay32.lib $(opensslDir)\out64\ssleay32.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\include32"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib $(opensslDir)\out32\libeay32.lib $(opensslDir)\out32\ssleay32.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\include64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib $(opensslDir)\out64\libeay32.lib $(opensslDir)\out64\ssleay32.lib"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\include32"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib $(opensslDir)\out32\libeay32.lib $(opensslDir)\out32\ssleay32.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\include64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib $(opensslDir)\out64\libeay32.lib $(opensslDir)\out64\ssleay32.lib"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_hashopenssl.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/_msi.vcproj b/PC/VS9.0/_msi.vcproj
new file mode 100644
index 0000000..ff03b75
--- /dev/null
+++ b/PC/VS9.0/_msi.vcproj
@@ -0,0 +1,529 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="_msi"
+ ProjectGUID="{31FFC478-7B4A-43E8-9954-8D03E2187E9C}"
+ RootNamespace="_msi"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fci.lib msi.lib rpcrt4.lib"
+ BaseAddress="0x1D160000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fci.lib msi.lib rpcrt4.lib"
+ BaseAddress="0x1D160000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fci.lib msi.lib rpcrt4.lib"
+ BaseAddress="0x1D160000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fci.lib msi.lib rpcrt4.lib"
+ BaseAddress="0x1D160000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fci.lib msi.lib rpcrt4.lib"
+ BaseAddress="0x1D160000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fci.lib msi.lib rpcrt4.lib"
+ BaseAddress="0x1D160000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fci.lib msi.lib rpcrt4.lib"
+ BaseAddress="0x1D160000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fci.lib msi.lib rpcrt4.lib"
+ BaseAddress="0x1D160000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\PC\_msi.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/_multiprocessing.vcproj b/PC/VS9.0/_multiprocessing.vcproj
new file mode 100644
index 0000000..70c7119
--- /dev/null
+++ b/PC/VS9.0/_multiprocessing.vcproj
@@ -0,0 +1,557 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="_multiprocessing"
+ ProjectGUID="{9E48B300-37D1-11DD-8C41-005056C00008}"
+ RootNamespace="_multiprocessing"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Header Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_multiprocessing\multiprocessing.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_multiprocessing\connection.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_multiprocessing\multiprocessing.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_multiprocessing\pipe_connection.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_multiprocessing\semaphore.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_multiprocessing\socket_connection.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_multiprocessing\win32_functions.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/_socket.vcproj b/PC/VS9.0/_socket.vcproj
new file mode 100644
index 0000000..88362f0
--- /dev/null
+++ b/PC/VS9.0/_socket.vcproj
@@ -0,0 +1,537 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="_socket"
+ ProjectGUID="{86937F53-C189-40EF-8CE8-8759D8E7D480}"
+ RootNamespace="_socket"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ BaseAddress="0x1e1D0000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Header Files"
+ >
+ <File
+ RelativePath="..\..\Modules\socketmodule.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\socketmodule.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/_sqlite3.vcproj b/PC/VS9.0/_sqlite3.vcproj
new file mode 100644
index 0000000..51f1305
--- /dev/null
+++ b/PC/VS9.0/_sqlite3.vcproj
@@ -0,0 +1,613 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="_sqlite3"
+ ProjectGUID="{13CECB97-4119-4316-9D42-8534019A5A44}"
+ RootNamespace="_sqlite3"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(sqlite3Dir)"
+ PreprocessorDefinitions="MODULE_NAME=\&quot;sqlite3\&quot;"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e180000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(sqlite3Dir)"
+ PreprocessorDefinitions="MODULE_NAME=\&quot;sqlite3\&quot;"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e180000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(sqlite3Dir)"
+ PreprocessorDefinitions="MODULE_NAME=\&quot;sqlite3\&quot;"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e180000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(sqlite3Dir)"
+ PreprocessorDefinitions="MODULE_NAME=\&quot;sqlite3\&quot;"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e180000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(sqlite3Dir)"
+ PreprocessorDefinitions="MODULE_NAME=\&quot;sqlite3\&quot;"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e180000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(sqlite3Dir)"
+ PreprocessorDefinitions="MODULE_NAME=\&quot;sqlite3\&quot;"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e180000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(sqlite3Dir)"
+ PreprocessorDefinitions="MODULE_NAME=\&quot;sqlite3\&quot;"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e180000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(sqlite3Dir)"
+ PreprocessorDefinitions="MODULE_NAME=\&quot;sqlite3\&quot;"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e180000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Header Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_sqlite\cache.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\connection.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\cursor.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\microprotocols.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\module.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\prepare_protocol.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\row.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\sqlitecompat.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\statement.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\util.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_sqlite\cache.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\connection.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\cursor.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\microprotocols.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\module.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\prepare_protocol.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\row.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\statement.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sqlite\util.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/_ssl.vcproj b/PC/VS9.0/_ssl.vcproj
new file mode 100644
index 0000000..c3dd248
--- /dev/null
+++ b/PC/VS9.0/_ssl.vcproj
@@ -0,0 +1,545 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="_ssl"
+ ProjectGUID="{C6E20F84-3247-4AD6-B051-B073268F73BA}"
+ RootNamespace="_ssl"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\include32"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib crypt32.lib $(opensslDir)\out32\libeay32.lib $(opensslDir)\out32\ssleay32.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\include64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib crypt32.lib $(opensslDir)\out64\libeay32.lib $(opensslDir)\out64\ssleay32.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\include32"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib crypt32.lib $(opensslDir)\out32\libeay32.lib $(opensslDir)\out32\ssleay32.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\include64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib crypt32.lib $(opensslDir)\out64\libeay32.lib $(opensslDir)\out64\ssleay32.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\include32"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib crypt32.lib $(opensslDir)\out32\libeay32.lib $(opensslDir)\out32\ssleay32.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\include64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib crypt32.lib $(opensslDir)\out64\libeay32.lib $(opensslDir)\out64\ssleay32.lib"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\include32"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib crypt32.lib $(opensslDir)\out32\libeay32.lib $(opensslDir)\out32\ssleay32.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(opensslDir)\include64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib crypt32.lib $(opensslDir)\out64\libeay32.lib $(opensslDir)\out64\ssleay32.lib"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_ssl.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/_testcapi.vcproj b/PC/VS9.0/_testcapi.vcproj
new file mode 100644
index 0000000..cd716d3
--- /dev/null
+++ b/PC/VS9.0/_testcapi.vcproj
@@ -0,0 +1,521 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="_testcapi"
+ ProjectGUID="{6901D91C-6E48-4BB7-9FEC-700C8131DF1D}"
+ RootNamespace="_testcapi"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e1F0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e1F0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e1F0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e1F0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e1F0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e1F0000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e1F0000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1e1F0000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_testcapimodule.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/_tkinter.vcproj b/PC/VS9.0/_tkinter.vcproj
new file mode 100644
index 0000000..9c2665b
--- /dev/null
+++ b/PC/VS9.0/_tkinter.vcproj
@@ -0,0 +1,541 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="_tkinter"
+ ProjectGUID="{4946ECAC-2E69-4BF8-A90A-F5136F5094DF}"
+ RootNamespace="_tkinter"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(tcltkDir)\include"
+ PreprocessorDefinitions="WITH_APPINIT"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(tcltkLibDebug)"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(tcltk64Dir)\include"
+ PreprocessorDefinitions="WITH_APPINIT"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(tcltk64LibDebug)"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(tcltkDir)\include"
+ PreprocessorDefinitions="WITH_APPINIT"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(tcltkLib)"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(tcltk64Dir)\include"
+ PreprocessorDefinitions="WITH_APPINIT"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(tcltk64Lib)"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(tcltkDir)\include"
+ PreprocessorDefinitions="WITH_APPINIT"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(tcltkLib)"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(tcltk64Dir)\include"
+ PreprocessorDefinitions="WITH_APPINIT"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(tcltk64Lib)"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(tcltkDir)\include"
+ PreprocessorDefinitions="WITH_APPINIT"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(tcltkLib)"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(tcltk64Dir)\include"
+ PreprocessorDefinitions="WITH_APPINIT"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(tcltk64Lib)"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\_tkinter.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\tkappinit.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/bdist_wininst.vcproj b/PC/VS9.0/bdist_wininst.vcproj
new file mode 100644
index 0000000..fb36a6d
--- /dev/null
+++ b/PC/VS9.0/bdist_wininst.vcproj
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="bdist_wininst"
+ ProjectGUID="{EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}"
+ RootNamespace="wininst"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="..\..\lib\distutils\command"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName=".\..\..\lib\distutils\command\wininst.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="1"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\PC\bdist_wininst;..\..\Include;..\..\Modules\zlib"
+ PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="0"
+ AdditionalIncludeDirectories="..\..\PC;..\..\PC\bdist_wininst;..\..\Include"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="comctl32.lib imagehlp.lib"
+ OutputFile="..\..\lib\distutils\command\wininst-9.0.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ IgnoreDefaultLibraryNames="LIBC"
+ ProgramDatabaseFile="..\..\lib\distutils\command\wininst-9.0.pdb"
+ SubSystem="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ OutputDirectory="$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="3"
+ TypeLibraryName=".\..\..\lib\distutils\command\wininst.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="1"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\PC\bdist_wininst;..\..\Include;..\..\Modules\zlib"
+ PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="0"
+ AdditionalIncludeDirectories="..\..\PC;..\..\PC\bdist_wininst;..\..\Include"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="comctl32.lib imagehlp.lib"
+ OutputFile="..\..\lib\distutils\command\wininst-9.0-amd64.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ IgnoreDefaultLibraryNames="LIBC"
+ ProgramDatabaseFile="..\..\lib\distutils\command\wininst-9.0-amd64.pdb"
+ SubSystem="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+ >
+ <File
+ RelativePath="..\..\PC\bdist_wininst\extract.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\PC\bdist_wininst\install.c"
+ >
+ </File>
+ <Filter
+ Name="zlib"
+ >
+ <File
+ RelativePath="..\..\Modules\zlib\adler32.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\crc32.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inffast.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inflate.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inftrees.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\zutil.c"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl"
+ >
+ <File
+ RelativePath="..\..\PC\bdist_wininst\archive.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+ >
+ <File
+ RelativePath="..\..\PC\bdist_wininst\install.rc"
+ >
+ </File>
+ <File
+ RelativePath="..\..\PC\bdist_wininst\PythonPowered.bmp"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/build.bat b/PC/VS9.0/build.bat
new file mode 100644
index 0000000..0729ec7
--- /dev/null
+++ b/PC/VS9.0/build.bat
@@ -0,0 +1,108 @@
+@echo off
+rem A batch program to build or rebuild a particular configuration,
+rem just for convenience.
+
+rem Arguments:
+rem -c Set the configuration (default: Release)
+rem -p Set the platform (x64 or Win32, default: Win32)
+rem -r Target Rebuild instead of Build
+rem -t Set the target manually (Build, Rebuild, or Clean)
+rem -d Set the configuration to Debug
+rem -e Pull in external libraries using get_externals.bat
+rem -k Attempt to kill any running Pythons before building
+
+setlocal
+set platf=Win32
+set vs_platf=x86
+set conf=Release
+set target=
+set dir=%~dp0
+set kill=
+set build_tkinter=
+
+:CheckOpts
+if '%1'=='-c' (set conf=%2) & shift & shift & goto CheckOpts
+if '%1'=='-p' (set platf=%2) & shift & shift & goto CheckOpts
+if '%1'=='-r' (set target=/rebuild) & shift & goto CheckOpts
+if '%1'=='-t' (
+ if '%2'=='Clean' (set target=/clean) & shift & shift & goto CheckOpts
+ if '%2'=='Rebuild' (set target=/rebuild) & shift & shift & goto CheckOpts
+ if '%2'=='Build' (set target=) & shift & shift & goto CheckOpts
+ echo.Unknown target: %2 & goto :eof
+)
+if '%1'=='-d' (set conf=Debug) & shift & goto CheckOpts
+if '%1'=='-e' call "%dir%..\..\PCbuild\get_externals.bat" & (set build_tkinter=true) & shift & goto CheckOpts
+if '%1'=='-k' (set kill=true) & shift & goto CheckOpts
+
+if '%conf%'=='Debug' (set dbg_ext=_d) else (set dbg_ext=)
+if '%platf%'=='x64' (
+ set vs_platf=x86_amd64
+ set builddir=%dir%amd64\
+) else (
+ set builddir=%dir%
+)
+rem Can't use builddir until we're in a new command...
+if '%platf%'=='x64' (
+ rem Needed for buliding OpenSSL
+ set HOST_PYTHON=%builddir%python%dbg_ext%.exe
+)
+
+rem Setup the environment
+call "%dir%env.bat" %vs_platf%
+
+if '%kill%'=='true' (
+ vcbuild "%dir%kill_python.vcproj" "%conf%|%platf%" && "%builddir%kill_python%dbg_ext%.exe"
+)
+
+set externals_dir=%dir%..\..\externals
+if '%build_tkinter%'=='true' (
+ if '%platf%'=='x64' (
+ set tcltkdir=%externals_dir%\tcltk64
+ set machine=AMD64
+ ) else (
+ set tcltkdir=%externals_dir%\tcltk
+ set machine=IX86
+ )
+ if '%conf%'=='Debug' (
+ set tcl_dbg_ext=g
+ set debug_flag=1
+ ) else (
+ set tcl_dbg_ext=
+ set debug_flag=0
+ )
+ set tcldir=%externals_dir%\tcl-8.5.19.0
+ set tkdir=%externals_dir%\tk-8.5.19.0
+ set tixdir=%externals_dir%\tix-8.4.3.5
+)
+if '%build_tkinter%'=='true' (
+ if not exist "%tcltkdir%\bin\tcl85%tcl_dbg_ext%.dll" (
+ @rem clean, all and install need to be separate invocations, otherwise nmakehlp is not found on install
+ pushd "%tcldir%\win"
+ nmake -f makefile.vc MACHINE=%machine% DEBUG=%debug_flag% INSTALLDIR="%tcltkdir%" clean
+ nmake -f makefile.vc MACHINE=%machine% DEBUG=%debug_flag% INSTALLDIR="%tcltkdir%" all
+ nmake -f makefile.vc MACHINE=%machine% DEBUG=%debug_flag% INSTALLDIR="%tcltkdir%" install
+ popd
+ )
+
+ if not exist "%tcltkdir%\bin\tk85%tcl_dbg_ext%.dll" (
+ pushd "%tkdir%\win"
+ nmake -f makefile.vc MACHINE=%machine% DEBUG=%debug_flag% INSTALLDIR="%tcltkdir%" TCLDIR="%tcldir%" clean
+ nmake -f makefile.vc MACHINE=%machine% DEBUG=%debug_flag% INSTALLDIR="%tcltkdir%" TCLDIR="%tcldir%" all
+ nmake -f makefile.vc MACHINE=%machine% DEBUG=%debug_flag% INSTALLDIR="%tcltkdir%" TCLDIR="%tcldir%" install
+ popd
+ )
+
+ if not exist "%tcltkdir%\lib\tix8.4.3\tix84%tcl_dbg_ext%.dll" (
+ pushd "%tixdir%\win"
+ nmake -f python.mak DEBUG=%debug_flag% MACHINE=%machine% TCL_DIR="%tcldir%" TK_DIR="%tkdir%" INSTALL_DIR="%tcltkdir%" clean
+ nmake -f python.mak DEBUG=%debug_flag% MACHINE=%machine% TCL_DIR="%tcldir%" TK_DIR="%tkdir%" INSTALL_DIR="%tcltkdir%" all
+ nmake -f python.mak DEBUG=%debug_flag% MACHINE=%machine% TCL_DIR="%tcldir%" TK_DIR="%tkdir%" INSTALL_DIR="%tcltkdir%" install
+ popd
+ )
+)
+
+rem Call on VCBuild to do the work, echo the command.
+rem Passing %1-9 is not the preferred option, but argument parsing in
+rem batch is, shall we say, "lackluster"
+echo on
+vcbuild "%dir%pcbuild.sln" %target% "%conf%|%platf%" %1 %2 %3 %4 %5 %6 %7 %8 %9
diff --git a/PC/VS9.0/build_env.bat b/PC/VS9.0/build_env.bat
new file mode 100644
index 0000000..4c67ae3
--- /dev/null
+++ b/PC/VS9.0/build_env.bat
@@ -0,0 +1 @@
+@%comspec% /k env.bat %*
diff --git a/PC/VS9.0/build_pgo.bat b/PC/VS9.0/build_pgo.bat
new file mode 100644
index 0000000..a37b5bf
--- /dev/null
+++ b/PC/VS9.0/build_pgo.bat
@@ -0,0 +1,41 @@
+@echo off
+rem A batch program to build PGO (Profile guided optimization) by first
+rem building instrumented binaries, then running the testsuite, and
+rem finally building the optimized code.
+rem Note, after the first instrumented run, one can just keep on
+rem building the PGUpdate configuration while developing.
+
+setlocal
+set platf=Win32
+
+rem use the performance testsuite. This is quick and simple
+set job1=..\..\tools\pybench\pybench.py -n 1 -C 1 --with-gc
+set path1=..\..\tools\pybench
+
+rem or the whole testsuite for more thorough testing
+set job2=..\..\lib\test\regrtest.py
+set path2=..\..\lib
+
+set job=%job1%
+set clrpath=%path1%
+
+:CheckOpts
+if "%1"=="-p" (set platf=%2) & shift & shift & goto CheckOpts
+if "%1"=="-2" (set job=%job2%) & (set clrpath=%path2%) & shift & goto CheckOpts
+
+set PGI=%platf%-pgi
+set PGO=%platf%-pgo
+
+@echo on
+rem build the instrumented version
+call build -p %platf% -c PGInstrument
+
+rem remove .pyc files, .pgc files and execute the job
+%PGI%\python.exe rmpyc.py %clrpath%
+del %PGI%\*.pgc
+%PGI%\python.exe %job%
+
+rem finally build the optimized version
+if exist %PGO% del /s /q %PGO%
+call build -p %platf% -c PGUpdate
+
diff --git a/PC/VS9.0/build_ssl.bat b/PC/VS9.0/build_ssl.bat
new file mode 100644
index 0000000..2531a5b
--- /dev/null
+++ b/PC/VS9.0/build_ssl.bat
@@ -0,0 +1,12 @@
+@echo off
+if not defined HOST_PYTHON (
+ if %1 EQU Debug (
+ set HOST_PYTHON=python_d.exe
+ if not exist python27_d.dll exit 1
+ ) ELSE (
+ set HOST_PYTHON=python.exe
+ if not exist python27.dll exit 1
+ )
+)
+%HOST_PYTHON% build_ssl.py %1 %2 %3
+
diff --git a/PC/VS9.0/build_ssl.py b/PC/VS9.0/build_ssl.py
new file mode 100644
index 0000000..eb0b4c9
--- /dev/null
+++ b/PC/VS9.0/build_ssl.py
@@ -0,0 +1,238 @@
+# Script for building the _ssl and _hashlib modules for Windows.
+# Uses Perl to setup the OpenSSL environment correctly
+# and build OpenSSL, then invokes a simple nmake session
+# for the actual _ssl.pyd and _hashlib.pyd DLLs.
+
+# THEORETICALLY, you can:
+# * Unpack the latest SSL release one level above your main Python source
+# directory. It is likely you will already find the zlib library and
+# any other external packages there.
+# * Install ActivePerl and ensure it is somewhere on your path.
+# * Run this script from the PCBuild directory.
+#
+# it should configure and build SSL, then build the _ssl and _hashlib
+# Python extensions without intervention.
+
+# Modified by Christian Heimes
+# Now this script supports pre-generated makefiles and assembly files.
+# Developers don't need an installation of Perl anymore to build Python. A svn
+# checkout from our svn repository is enough.
+#
+# In Order to create the files in the case of an update you still need Perl.
+# Run build_ssl in this order:
+# python.exe build_ssl.py Release x64
+# python.exe build_ssl.py Release Win32
+
+from __future__ import with_statement, print_function
+import os
+import re
+import sys
+import time
+import subprocess
+from shutil import copy
+from distutils import log
+from distutils.spawn import find_executable
+from distutils.file_util import copy_file
+from distutils.sysconfig import parse_makefile, expand_makefile_vars
+
+# The mk1mf.pl output filename template
+# !!! This must match what is used in prepare_ssl.py
+MK1MF_FMT = 'ms\\nt{}.mak'
+
+# The header files output directory name template
+# !!! This must match what is used in prepare_ssl.py
+INCLUDE_FMT = 'include{}'
+
+# Fetch all the directory definitions from VC properties
+def get_project_properties(propfile):
+ macro_pattern = r'<UserMacro\s+Name="([^"]+?)"\s+Value="([^"]*?)"\s*/>'
+ with open(propfile) as fin:
+ items = re.findall(macro_pattern, fin.read(), re.MULTILINE)
+ props = dict(items)
+ for name, value in items:
+ try:
+ props[name] = expand_makefile_vars(value, props)
+ except TypeError:
+ # value contains undefined variable reference, drop it
+ del props[name]
+ return props
+
+
+_variable_rx = re.compile(r"([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)")
+def fix_makefile(makefile, platform_makefile, suffix):
+ """Fix some stuff in all makefiles
+ """
+ subs = {
+ 'PERL': 'rem', # just in case
+ 'CP': 'copy',
+ 'MKDIR': 'mkdir',
+ 'OUT_D': 'out' + suffix,
+ 'TMP_D': 'tmp' + suffix,
+ 'INC_D': INCLUDE_FMT.format(suffix),
+ 'INCO_D': '$(INC_D)\\openssl',
+ }
+ with open(platform_makefile) as fin, open(makefile, 'w') as fout:
+ for line in fin:
+ m = _variable_rx.match(line)
+ if m:
+ name = m.group(1)
+ if name in subs:
+ line = '%s=%s\n' % (name, subs[name])
+ fout.write(line)
+
+
+_copy_rx = re.compile(r'\t\$\(PERL\) '
+ r'\$\(SRC_D\)\\util\\copy-if-different.pl '
+ r'"([^"]+)"\s+"([^"]+)"')
+def copy_files(makefile, makevars):
+ # Create the destination directories (see 'init' rule in nt.dll)
+ for varname in ('TMP_D', 'LIB_D', 'INC_D', 'INCO_D'):
+ dirname = makevars[varname]
+ if not os.path.isdir(dirname):
+ os.mkdir(dirname)
+ # Process the just local library headers (HEADER) as installed headers
+ # (EXHEADER) are handled by prepare_ssl.py (see 'headers' rule in nt.dll)
+ headers = set(makevars['HEADER'].split())
+ with open(makefile) as fin:
+ for line in fin:
+ m = _copy_rx.match(line)
+ if m:
+ src, dst = m.groups()
+ src = expand_makefile_vars(src, makevars)
+ dst = expand_makefile_vars(dst, makevars)
+ if dst in headers:
+ copy_file(src, dst, preserve_times=False, update=True)
+
+
+# Update buildinf.h for the build platform.
+def fix_buildinf(makevars):
+ platform_cpp_symbol = 'MK1MF_PLATFORM_'
+ platform_cpp_symbol += makevars['PLATFORM'].replace('-', '_')
+ fn = expand_makefile_vars('$(INCL_D)\\buildinf.h', makevars)
+ with open(fn, 'w') as f:
+ # sanity check
+ f.write(('#ifndef {}\n'
+ ' #error "Windows build (PLATFORM={PLATFORM}) only"\n'
+ '#endif\n').format(platform_cpp_symbol, **makevars))
+ buildinf = (
+ '#define CFLAGS "compiler: cl {CFLAG}"\n'
+ '#define PLATFORM "{PLATFORM}"\n'
+ '#define DATE "{}"\n'
+ ).format(time.asctime(time.gmtime()),
+ **makevars)
+ f.write(buildinf)
+ print('Updating buildinf:')
+ print(buildinf)
+ sys.stdout.flush()
+
+
+def main():
+ if sys.argv[1] == "Debug":
+ print("OpenSSL debug builds aren't supported.")
+ elif sys.argv[1] != "Release":
+ raise ValueError('Unrecognized configuration: %s' % sys.argv[1])
+
+ if sys.argv[2] == "Win32":
+ platform = "VC-WIN32"
+ suffix = '32'
+ elif sys.argv[2] == "x64":
+ platform = "VC-WIN64A"
+ suffix = '64'
+ else:
+ raise ValueError('Unrecognized platform: %s' % sys.argv[2])
+
+ # Have the distutils functions display information output
+ log.set_verbosity(1)
+
+ # Use the same properties that are used in the VS projects
+ solution_dir = os.path.dirname(__file__)
+ propfile = os.path.join(solution_dir, 'pyproject.vsprops')
+ props = get_project_properties(propfile)
+
+ # Ensure we have the necessary external depenedencies
+ ssl_dir = os.path.join(solution_dir, props['opensslDir'])
+ if not os.path.isdir(ssl_dir):
+ print("Could not find the OpenSSL sources, try running "
+ "'build.bat -e'")
+ sys.exit(1)
+
+ # Ensure the executables used herein are available.
+ if not find_executable('nmake.exe'):
+ print('Could not find nmake.exe, try running env.bat')
+ sys.exit(1)
+
+ # add our copy of NASM to PATH. It will be on the same level as openssl
+ externals_dir = os.path.join(solution_dir, props['externalsDir'])
+ for dir in os.listdir(externals_dir):
+ if dir.startswith('nasm'):
+ nasm_dir = os.path.join(externals_dir, dir)
+ nasm_dir = os.path.abspath(nasm_dir)
+ old_path = os.environ['PATH']
+ os.environ['PATH'] = os.pathsep.join([nasm_dir, old_path])
+ break
+ else:
+ if not find_executable('nasm.exe'):
+ print('Could not find nasm.exe, please add to PATH')
+ sys.exit(1)
+
+ # If the ssl makefiles do not exist, we invoke PCbuild/prepare_ssl.py
+ # to generate them.
+ platform_makefile = MK1MF_FMT.format(suffix)
+ if not os.path.isfile(os.path.join(ssl_dir, platform_makefile)):
+ pcbuild_dir = os.path.join(os.path.dirname(externals_dir), 'PCbuild')
+ prepare_ssl = os.path.join(pcbuild_dir, 'prepare_ssl.py')
+ rc = subprocess.call([sys.executable, prepare_ssl, ssl_dir])
+ if rc:
+ print('Executing', prepare_ssl, 'failed (error %d)' % rc)
+ sys.exit(rc)
+
+ old_cd = os.getcwd()
+ try:
+ os.chdir(ssl_dir)
+
+ # Get the variables defined in the current makefile, if it exists.
+ makefile = MK1MF_FMT.format('')
+ try:
+ makevars = parse_makefile(makefile)
+ except EnvironmentError:
+ makevars = {'PLATFORM': None}
+
+ # Rebuild the makefile when building for different a platform than
+ # the last run.
+ if makevars['PLATFORM'] != platform:
+ print("Updating the makefile...")
+ sys.stdout.flush()
+ # Firstly, apply the changes for the platform makefile into
+ # a temporary file to prevent any errors from this script
+ # causing false positives on subsequent runs.
+ new_makefile = makefile + '.new'
+ fix_makefile(new_makefile, platform_makefile, suffix)
+ makevars = parse_makefile(new_makefile)
+
+ # Secondly, perform the make recipes that use Perl
+ copy_files(new_makefile, makevars)
+
+ # Set our build information in buildinf.h.
+ # XXX: This isn't needed for a properly "prepared" SSL, but
+ # it fixes the current checked-in external (as of 2017-05).
+ fix_buildinf(makevars)
+
+ # Finally, move the temporary file to its real destination.
+ if os.path.exists(makefile):
+ os.remove(makefile)
+ os.rename(new_makefile, makefile)
+
+ # Now run make.
+ makeCommand = "nmake /nologo /f \"%s\" lib" % makefile
+ print("Executing ssl makefiles:", makeCommand)
+ sys.stdout.flush()
+ rc = os.system(makeCommand)
+ if rc:
+ print("Executing", makefile, "failed (error %d)" % rc)
+ sys.exit(rc)
+ finally:
+ os.chdir(old_cd)
+ sys.exit(rc)
+
+if __name__=='__main__':
+ main()
diff --git a/PC/VS9.0/build_tkinter.py b/PC/VS9.0/build_tkinter.py
new file mode 100644
index 0000000..1241864
--- /dev/null
+++ b/PC/VS9.0/build_tkinter.py
@@ -0,0 +1,82 @@
+"""Script to compile the dependencies of _tkinter
+
+Copyright (c) 2007 by Christian Heimes <christian@cheimes.de>
+
+Licensed to PSF under a Contributor Agreement.
+"""
+
+import os
+import sys
+
+here = os.path.abspath(os.path.dirname(__file__))
+par = os.path.pardir
+
+TCL = "tcl8.5.2"
+TK = "tk8.5.2"
+TIX = "tix-8.4.0.x"
+
+ROOT = os.path.abspath(os.path.join(here, par, par))
+# Windows 2000 compatibility: WINVER 0x0500
+# http://msdn2.microsoft.com/en-us/library/aa383745.aspx
+NMAKE = ('nmake /nologo /f %s '
+ 'COMPILERFLAGS=\"-DWINVER=0x0500 -D_WIN32_WINNT=0x0500 -DNTDDI_VERSION=NTDDI_WIN2KSP4\" '
+ '%s %s')
+
+def nmake(makefile, command="", **kw):
+ defines = ' '.join('%s=%s' % i for i in kw.items())
+ cmd = NMAKE % (makefile, defines, command)
+ print("\n\n"+cmd+"\n")
+ if os.system(cmd) != 0:
+ raise RuntimeError(cmd)
+
+def build(platform, clean):
+ if platform == "Win32":
+ dest = os.path.join(ROOT, "tcltk")
+ machine = "X86"
+ elif platform == "AMD64":
+ dest = os.path.join(ROOT, "tcltk64")
+ machine = "AMD64"
+ else:
+ raise ValueError(platform)
+
+ # TCL
+ tcldir = os.path.join(ROOT, TCL)
+ if 1:
+ os.chdir(os.path.join(tcldir, "win"))
+ if clean:
+ nmake("makefile.vc", "clean")
+ nmake("makefile.vc", MACHINE=machine)
+ nmake("makefile.vc", "install", INSTALLDIR=dest, MACHINE=machine)
+
+ # TK
+ if 1:
+ os.chdir(os.path.join(ROOT, TK, "win"))
+ if clean:
+ nmake("makefile.vc", "clean", DEBUG=0, TCLDIR=tcldir)
+ nmake("makefile.vc", DEBUG=0, MACHINE=machine)
+ nmake("makefile.vc", "install", DEBUG=0, INSTALLDIR=dest, MACHINE=machine)
+
+ # TIX
+ if 1:
+ # python9.mak is available at http://svn.python.org
+ os.chdir(os.path.join(ROOT, TIX, "win"))
+ if clean:
+ nmake("python.mak", "clean")
+ nmake("python.mak", MACHINE=machine, INSTALL_DIR=dest)
+ nmake("python.mak", "install", INSTALL_DIR=dest)
+
+def main():
+ if len(sys.argv) < 2 or sys.argv[1] not in ("Win32", "AMD64"):
+ print("%s Win32|AMD64" % sys.argv[0])
+ sys.exit(1)
+
+ if "-c" in sys.argv:
+ clean = True
+ else:
+ clean = False
+
+ build(sys.argv[1], clean)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/PC/VS9.0/bz2.vcproj b/PC/VS9.0/bz2.vcproj
new file mode 100644
index 0000000..e4581a5
--- /dev/null
+++ b/PC/VS9.0/bz2.vcproj
@@ -0,0 +1,581 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="bz2"
+ ProjectGUID="{73FCD2BD-F133-46B7-8EC1-144CD82A59D5}"
+ RootNamespace="bz2"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(bz2Dir)"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D170000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(bz2Dir)"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D170000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(bz2Dir)"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D170000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(bz2Dir)"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D170000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(bz2Dir)"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D170000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(bz2Dir)"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D170000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(bz2Dir)"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D170000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(bz2Dir)"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D170000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\bz2module.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="bzip2 1.0.6 Header Files"
+ >
+ <File
+ RelativePath="$(bz2Dir)\bzlib.h"
+ >
+ </File>
+ <File
+ RelativePath="$(bz2Dir)\bzlib_private.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="bzip2 1.0.6 Source Files"
+ >
+ <File
+ RelativePath="$(bz2Dir)\blocksort.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bz2Dir)\bzlib.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bz2Dir)\compress.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bz2Dir)\crctable.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bz2Dir)\decompress.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bz2Dir)\huffman.c"
+ >
+ </File>
+ <File
+ RelativePath="$(bz2Dir)\randtable.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/debug.vsprops b/PC/VS9.0/debug.vsprops
new file mode 100644
index 0000000..2be7f74
--- /dev/null
+++ b/PC/VS9.0/debug.vsprops
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="debug"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ />
+ <UserMacro
+ Name="KillPythonExe"
+ Value="$(OutDir)\kill_python_d.exe"
+ />
+</VisualStudioPropertySheet>
diff --git a/PC/VS9.0/env.bat b/PC/VS9.0/env.bat
new file mode 100644
index 0000000..4175ca4
--- /dev/null
+++ b/PC/VS9.0/env.bat
@@ -0,0 +1,4 @@
+@echo off
+echo Build environments: x86, ia64, amd64, x86_amd64, x86_ia64
+echo.
+call "%VS90COMNTOOLS%..\..\VC\vcvarsall.bat" %*
diff --git a/PC/VS9.0/field3.py b/PC/VS9.0/field3.py
new file mode 100644
index 0000000..edcbe36
--- /dev/null
+++ b/PC/VS9.0/field3.py
@@ -0,0 +1,35 @@
+# An absurd workaround for the lack of arithmetic in MS's resource compiler.
+# After building Python, run this, then paste the output into the appropriate
+# part of PC\python_nt.rc.
+# Example output:
+#
+# * For 2.3a0,
+# * PY_MICRO_VERSION = 0
+# * PY_RELEASE_LEVEL = 'alpha' = 0xA
+# * PY_RELEASE_SERIAL = 1
+# *
+# * and 0*1000 + 10*10 + 1 = 101.
+# */
+# #define FIELD3 101
+
+import sys
+
+major, minor, micro, level, serial = sys.version_info
+levelnum = {'alpha': 0xA,
+ 'beta': 0xB,
+ 'candidate': 0xC,
+ 'final': 0xF,
+ }[level]
+string = sys.version.split()[0] # like '2.3a0'
+
+print(" * For %s," % string)
+print(" * PY_MICRO_VERSION = %d" % micro)
+print(" * PY_RELEASE_LEVEL = %r = %s" % (level, hex(levelnum)))
+print(" * PY_RELEASE_SERIAL = %d" % serial)
+print(" *")
+
+field3 = micro * 1000 + levelnum * 10 + serial
+
+print(" * and %d*1000 + %d*10 + %d = %d" % (micro, levelnum, serial, field3))
+print(" */")
+print("#define FIELD3", field3)
diff --git a/PC/VS9.0/idle.bat b/PC/VS9.0/idle.bat
new file mode 100644
index 0000000..dcb0485
--- /dev/null
+++ b/PC/VS9.0/idle.bat
@@ -0,0 +1,15 @@
+@echo off
+rem start idle
+rem Usage: idle [-d]
+rem -d Run Debug build (python_d.exe). Else release build.
+
+setlocal
+set exe=python
+PATH %PATH%;..\..\tcltk\bin
+
+if "%1"=="-d" (set exe=python_d) & shift
+
+set cmd=%exe% ../Lib/idlelib/idle.py %1 %2 %3 %4 %5 %6 %7 %8 %9
+
+echo on
+%cmd%
diff --git a/PC/VS9.0/installer.bmp b/PC/VS9.0/installer.bmp
new file mode 100644
index 0000000..1875e19
--- /dev/null
+++ b/PC/VS9.0/installer.bmp
Binary files differ
diff --git a/PC/VS9.0/kill_python.c b/PC/VS9.0/kill_python.c
new file mode 100644
index 0000000..f3880fc
--- /dev/null
+++ b/PC/VS9.0/kill_python.c
@@ -0,0 +1,178 @@
+/*
+ * Helper program for killing lingering python[_d].exe processes before
+ * building, thus attempting to avoid build failures due to files being
+ * locked.
+ */
+
+#include <windows.h>
+#include <wchar.h>
+#include <tlhelp32.h>
+#include <stdio.h>
+
+#pragma comment(lib, "psapi")
+
+#ifdef _DEBUG
+#define PYTHON_EXE (L"python_d.exe")
+#define PYTHON_EXE_LEN (12)
+#define KILL_PYTHON_EXE (L"kill_python_d.exe")
+#define KILL_PYTHON_EXE_LEN (17)
+#else
+#define PYTHON_EXE (L"python.exe")
+#define PYTHON_EXE_LEN (10)
+#define KILL_PYTHON_EXE (L"kill_python.exe")
+#define KILL_PYTHON_EXE_LEN (15)
+#endif
+
+int
+main(int argc, char **argv)
+{
+ HANDLE hp, hsp, hsm; /* process, snapshot processes, snapshot modules */
+ DWORD dac, our_pid;
+ size_t len;
+ wchar_t path[MAX_PATH+1];
+
+ MODULEENTRY32W me;
+ PROCESSENTRY32W pe;
+
+ me.dwSize = sizeof(MODULEENTRY32W);
+ pe.dwSize = sizeof(PROCESSENTRY32W);
+
+ memset(path, 0, MAX_PATH+1);
+
+ our_pid = GetCurrentProcessId();
+
+ hsm = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, our_pid);
+ if (hsm == INVALID_HANDLE_VALUE) {
+ printf("CreateToolhelp32Snapshot[1] failed: %d\n", GetLastError());
+ return 1;
+ }
+
+ if (!Module32FirstW(hsm, &me)) {
+ printf("Module32FirstW[1] failed: %d\n", GetLastError());
+ CloseHandle(hsm);
+ return 1;
+ }
+
+ /*
+ * Enumerate over the modules for the current process in order to find
+ * kill_process[_d].exe, then take a note of the directory it lives in.
+ */
+ do {
+ if (_wcsnicmp(me.szModule, KILL_PYTHON_EXE, KILL_PYTHON_EXE_LEN))
+ continue;
+
+ len = wcsnlen_s(me.szExePath, MAX_PATH) - KILL_PYTHON_EXE_LEN;
+ wcsncpy_s(path, MAX_PATH+1, me.szExePath, len);
+
+ break;
+
+ } while (Module32NextW(hsm, &me));
+
+ CloseHandle(hsm);
+
+ if (path == NULL) {
+ printf("failed to discern directory of running process\n");
+ return 1;
+ }
+
+ /*
+ * Take a snapshot of system processes. Enumerate over the snapshot,
+ * looking for python processes. When we find one, verify it lives
+ * in the same directory we live in. If it does, kill it. If we're
+ * unable to kill it, treat this as a fatal error and return 1.
+ *
+ * The rationale behind this is that we're called at the start of the
+ * build process on the basis that we'll take care of killing any
+ * running instances, such that the build won't encounter permission
+ * denied errors during linking. If we can't kill one of the processes,
+ * we can't provide this assurance, and the build shouldn't start.
+ */
+
+ hsp = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
+ if (hsp == INVALID_HANDLE_VALUE) {
+ printf("CreateToolhelp32Snapshot[2] failed: %d\n", GetLastError());
+ return 1;
+ }
+
+ if (!Process32FirstW(hsp, &pe)) {
+ printf("Process32FirstW failed: %d\n", GetLastError());
+ CloseHandle(hsp);
+ return 1;
+ }
+
+ dac = PROCESS_QUERY_INFORMATION | PROCESS_VM_READ | PROCESS_TERMINATE;
+ do {
+
+ /*
+ * XXX TODO: if we really wanted to be fancy, we could check the
+ * modules for all processes (not just the python[_d].exe ones)
+ * and see if any of our DLLs are loaded (i.e. python30[_d].dll),
+ * as that would also inhibit our ability to rebuild the solution.
+ * Not worth loosing sleep over though; for now, a simple check
+ * for just the python executable should be sufficient.
+ */
+
+ if (_wcsnicmp(pe.szExeFile, PYTHON_EXE, PYTHON_EXE_LEN))
+ /* This isn't a python process. */
+ continue;
+
+ /* It's a python process, so figure out which directory it's in... */
+ hsm = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pe.th32ProcessID);
+ if (hsm == INVALID_HANDLE_VALUE)
+ /*
+ * If our module snapshot fails (which will happen if we don't own
+ * the process), just ignore it and continue. (It seems different
+ * versions of Windows return different values for GetLastError()
+ * in this situation; it's easier to just ignore it and move on vs.
+ * stopping the build for what could be a false positive.)
+ */
+ continue;
+
+ if (!Module32FirstW(hsm, &me)) {
+ printf("Module32FirstW[2] failed: %d\n", GetLastError());
+ CloseHandle(hsp);
+ CloseHandle(hsm);
+ return 1;
+ }
+
+ do {
+ if (_wcsnicmp(me.szModule, PYTHON_EXE, PYTHON_EXE_LEN))
+ /* Wrong module, we're looking for python[_d].exe... */
+ continue;
+
+ if (_wcsnicmp(path, me.szExePath, len))
+ /* Process doesn't live in our directory. */
+ break;
+
+ /* Python process residing in the right directory, kill it! */
+ hp = OpenProcess(dac, FALSE, pe.th32ProcessID);
+ if (!hp) {
+ printf("OpenProcess failed: %d\n", GetLastError());
+ CloseHandle(hsp);
+ CloseHandle(hsm);
+ return 1;
+ }
+
+ if (!TerminateProcess(hp, 1)) {
+ printf("TerminateProcess failed: %d\n", GetLastError());
+ CloseHandle(hsp);
+ CloseHandle(hsm);
+ CloseHandle(hp);
+ return 1;
+ }
+
+ CloseHandle(hp);
+ break;
+
+ } while (Module32NextW(hsm, &me));
+
+ CloseHandle(hsm);
+
+ } while (Process32NextW(hsp, &pe));
+
+ CloseHandle(hsp);
+
+ return 0;
+}
+
+/* vi: set ts=8 sw=4 sts=4 expandtab */
diff --git a/PC/VS9.0/kill_python.vcproj b/PC/VS9.0/kill_python.vcproj
new file mode 100644
index 0000000..918702d
--- /dev/null
+++ b/PC/VS9.0/kill_python.vcproj
@@ -0,0 +1,279 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="kill_python"
+ ProjectGUID="{6DE10744-E396-40A5-B4E2-1B69AA7C8D31}"
+ RootNamespace="kill_python"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(ProjectName)_d.exe"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(ProjectName)_d.exe"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath=".\kill_python.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/make_buildinfo.c b/PC/VS9.0/make_buildinfo.c
new file mode 100644
index 0000000..1cc71f1
--- /dev/null
+++ b/PC/VS9.0/make_buildinfo.c
@@ -0,0 +1,94 @@
+#include <windows.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <stdio.h>
+
+#define CMD_SIZE 500
+
+/* This file creates the getbuildinfo.o object, by first
+ invoking subwcrev.exe (if found), and then invoking cl.exe.
+ As a side effect, it might generate PCBuild\getbuildinfo2.c
+ also. If this isn't a subversion checkout, or subwcrev isn't
+ found, it compiles ..\\Modules\\getbuildinfo.c instead.
+
+ Currently, subwcrev.exe is found from the registry entries
+ of TortoiseSVN.
+
+ No attempt is made to place getbuildinfo.o into the proper
+ binary directory. This isn't necessary, as this tool is
+ invoked as a pre-link step for pythoncore, so that overwrites
+ any previous getbuildinfo.o.
+
+*/
+
+int make_buildinfo2()
+{
+ struct _stat st;
+ HKEY hTortoise;
+ char command[CMD_SIZE+1];
+ DWORD type, size;
+ if (_stat(".svn", &st) < 0)
+ return 0;
+ /* Allow suppression of subwcrev.exe invocation if a no_subwcrev file is present. */
+ if (_stat("no_subwcrev", &st) == 0)
+ return 0;
+ if (RegOpenKey(HKEY_LOCAL_MACHINE, "Software\\TortoiseSVN", &hTortoise) != ERROR_SUCCESS &&
+ RegOpenKey(HKEY_CURRENT_USER, "Software\\TortoiseSVN", &hTortoise) != ERROR_SUCCESS)
+ /* Tortoise not installed */
+ return 0;
+ command[0] = '"'; /* quote the path to the executable */
+ size = sizeof(command) - 1;
+ if (RegQueryValueEx(hTortoise, "Directory", 0, &type, command+1, &size) != ERROR_SUCCESS ||
+ type != REG_SZ)
+ /* Registry corrupted */
+ return 0;
+ strcat_s(command, CMD_SIZE, "bin\\subwcrev.exe");
+ if (_stat(command+1, &st) < 0)
+ /* subwcrev.exe not part of the release */
+ return 0;
+ strcat_s(command, CMD_SIZE, "\" .. ..\\..\\Modules\\getbuildinfo.c getbuildinfo2.c");
+ puts(command); fflush(stdout);
+ if (system(command) < 0)
+ return 0;
+ return 1;
+}
+
+int main(int argc, char*argv[])
+{
+ char command[500] = "cl.exe -c -D_WIN32 -DUSE_DL_EXPORT -D_WINDOWS -DWIN32 -D_WINDLL ";
+ int do_unlink, result;
+ if (argc != 2) {
+ fprintf(stderr, "make_buildinfo $(ConfigurationName)\n");
+ return EXIT_FAILURE;
+ }
+ if (strcmp(argv[1], "Release") == 0) {
+ strcat_s(command, CMD_SIZE, "-MD ");
+ }
+ else if (strcmp(argv[1], "Debug") == 0) {
+ strcat_s(command, CMD_SIZE, "-D_DEBUG -MDd ");
+ }
+ else if (strcmp(argv[1], "ReleaseItanium") == 0) {
+ strcat_s(command, CMD_SIZE, "-MD /USECL:MS_ITANIUM ");
+ }
+ else if (strcmp(argv[1], "ReleaseAMD64") == 0) {
+ strcat_s(command, CMD_SIZE, "-MD ");
+ strcat_s(command, CMD_SIZE, "-MD /USECL:MS_OPTERON ");
+ }
+ else {
+ fprintf(stderr, "unsupported configuration %s\n", argv[1]);
+ return EXIT_FAILURE;
+ }
+
+ if ((do_unlink = make_buildinfo2()))
+ strcat_s(command, CMD_SIZE, "getbuildinfo2.c -DSUBWCREV ");
+ else
+ strcat_s(command, CMD_SIZE, "..\\..\\Modules\\getbuildinfo.c");
+ strcat_s(command, CMD_SIZE, " -Fogetbuildinfo.o -I..\\..\\Include -I..\\..\\PC");
+ puts(command); fflush(stdout);
+ result = system(command);
+ if (do_unlink)
+ _unlink("getbuildinfo2.c");
+ if (result < 0)
+ return EXIT_FAILURE;
+ return 0;
+}
diff --git a/PC/VS9.0/make_buildinfo.vcproj b/PC/VS9.0/make_buildinfo.vcproj
new file mode 100644
index 0000000..c42229c
--- /dev/null
+++ b/PC/VS9.0/make_buildinfo.vcproj
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="windows-1250"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="make_buildinfo"
+ ProjectGUID="{C73F0EC1-358B-4177-940F-0846AC8B04CD}"
+ RootNamespace="make_buildinfo"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ InlineFunctionExpansion="1"
+ PreprocessorDefinitions="_CONSOLE"
+ RuntimeLibrary="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)/make_buildinfo.exe"
+ ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_CONSOLE"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath=".\make_buildinfo.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/make_versioninfo.vcproj b/PC/VS9.0/make_versioninfo.vcproj
new file mode 100644
index 0000000..690c069
--- /dev/null
+++ b/PC/VS9.0/make_versioninfo.vcproj
@@ -0,0 +1,324 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="make_versioninfo"
+ ProjectGUID="{F0E0541E-F17D-430B-97C4-93ADF0DD284E}"
+ RootNamespace="make_versioninfo"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Build PC/pythonnt_rc(_d).h"
+ CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo.exe &gt; ..\..\PC\pythonnt_rc.h&#x0D;&#x0A;"
+ Outputs="$(SolutionDir)..\..\PC\pythonnt_rc.h"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_CONSOLE"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(SolutionDir)make_versioninfo.exe"
+ ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
+ SubSystem="1"
+ BaseAddress="0x1d000000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo.exe &gt; ..\..\PC\python_nt.h&#x0D;&#x0A;"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Build PC/pythonnt_rc(_d).h"
+ CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo.exe &gt; ..\..\PC\pythonnt_rc.h&#x0D;&#x0A;"
+ Outputs="$(SolutionDir)..\..\PC\pythonnt_rc.h"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions="_CONSOLE"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(SolutionDir)make_versioninfo.exe"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo.exe &gt; ..\..\PC\python_nt.h&#x0D;&#x0A;"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Build PC/pythonnt_rc(_d).h"
+ CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo_d.exe &gt; ..\..\PC\pythonnt_rc_d.h&#x0D;&#x0A;"
+ Outputs="$(SolutionDir)..\..\PC\pythonnt_rc_d.h"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ InlineFunctionExpansion="1"
+ EnableIntrinsicFunctions="false"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_CONSOLE"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(SolutionDir)make_versioninfo_d.exe"
+ ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
+ SubSystem="1"
+ BaseAddress="0x1d000000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo_d.exe &gt; ..\..\PC\python_nt_d.h&#x0D;&#x0A;"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\debug.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Build PC/pythonnt_rc(_d).h"
+ CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo_d.exe &gt; ..\..\PC\pythonnt_rc_d.h&#x0D;&#x0A;"
+ Outputs="$(SolutionDir)..\..\PC\pythonnt_rc_d.h"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ InlineFunctionExpansion="1"
+ EnableIntrinsicFunctions="false"
+ PreprocessorDefinitions="_CONSOLE"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(SolutionDir)make_versioninfo_d.exe"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo_d.exe &gt; ..\..\PC\python_nt_d.h&#x0D;&#x0A;"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\PC\make_versioninfo.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/pcbuild.sln b/PC/VS9.0/pcbuild.sln
new file mode 100644
index 0000000..c5e072e
--- /dev/null
+++ b/PC/VS9.0/pcbuild.sln
@@ -0,0 +1,559 @@
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python", "python.vcproj", "{B11D750F-CD1F-4A96-85CE-E69A5C5259F9}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058} = {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_versioninfo", "make_versioninfo.vcproj", "{F0E0541E-F17D-430B-97C4-93ADF0DD284E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythoncore", "pythoncore.vcproj", "{CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}"
+ ProjectSection(ProjectDependencies) = postProject
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E} = {F0E0541E-F17D-430B-97C4-93ADF0DD284E}
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31} = {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD} = {C73F0EC1-358B-4177-940F-0846AC8B04CD}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythonw", "pythonw.vcproj", "{F4229CC3-873C-49AE-9729-DD308ED4CD4A}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "w9xpopen", "w9xpopen.vcproj", "{E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}"
+ ProjectSection(ProjectDependencies) = postProject
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31} = {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_buildinfo", "make_buildinfo.vcproj", "{C73F0EC1-358B-4177-940F-0846AC8B04CD}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{553EC33E-9816-4996-A660-5D6186A0B0B3}"
+ ProjectSection(SolutionItems) = preProject
+ ..\Modules\getbuildinfo.c = ..\Modules\getbuildinfo.c
+ readme.txt = readme.txt
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winsound", "winsound.vcproj", "{28B5D777-DDF2-4B6B-B34F-31D938813856}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_bsddb", "_bsddb.vcproj", "{B4D38F3F-68FB-42EC-A45D-E00657BB3627}"
+ ProjectSection(ProjectDependencies) = postProject
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31} = {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ctypes", "_ctypes.vcproj", "{0E9791DB-593A-465F-98BC-681011311618}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ctypes_test", "_ctypes_test.vcproj", "{9EC7190A-249F-4180-A900-548FDCF3055F}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_elementtree", "_elementtree.vcproj", "{17E1E049-C309-4D79-843F-AE483C264AEA}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_msi", "_msi.vcproj", "{31FFC478-7B4A-43E8-9954-8D03E2187E9C}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_socket", "_socket.vcproj", "{86937F53-C189-40EF-8CE8-8759D8E7D480}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_sqlite3", "_sqlite3.vcproj", "{13CECB97-4119-4316-9D42-8534019A5A44}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ {A1A295E5-463C-437F-81CA-1F32367685DA} = {A1A295E5-463C-437F-81CA-1F32367685DA}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ssl", "_ssl.vcproj", "{C6E20F84-3247-4AD6-B051-B073268F73BA}"
+ ProjectSection(ProjectDependencies) = postProject
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} = {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}
+ {86937F53-C189-40EF-8CE8-8759D8E7D480} = {86937F53-C189-40EF-8CE8-8759D8E7D480}
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testcapi", "_testcapi.vcproj", "{6901D91C-6E48-4BB7-9FEC-700C8131DF1D}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_tkinter", "_tkinter.vcproj", "{4946ECAC-2E69-4BF8-A90A-F5136F5094DF}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bz2", "bz2.vcproj", "{73FCD2BD-F133-46B7-8EC1-144CD82A59D5}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "select", "select.vcproj", "{18CAE28C-B454-46C1-87A0-493D91D97F03}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unicodedata", "unicodedata.vcproj", "{ECC7CEAC-A5E5-458E-BB9E-2413CC847881}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pyexpat", "pyexpat.vcproj", "{D06B6426-4762-44CC-8BAD-D79052507F2F}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bdist_wininst", "bdist_wininst.vcproj", "{EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_hashlib", "_hashlib.vcproj", "{447F05A8-F581-4CAC-A466-5AC7936E207E}"
+ ProjectSection(ProjectDependencies) = postProject
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} = {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sqlite3", "sqlite3.vcproj", "{A1A295E5-463C-437F-81CA-1F32367685DA}"
+ ProjectSection(ProjectDependencies) = postProject
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31} = {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_multiprocessing", "_multiprocessing.vcproj", "{9E48B300-37D1-11DD-8C41-005056C00008}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "kill_python", "kill_python.vcproj", "{6DE10744-E396-40A5-B4E2-1B69AA7C8D31}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ PGInstrument|Win32 = PGInstrument|Win32
+ PGInstrument|x64 = PGInstrument|x64
+ PGUpdate|Win32 = PGUpdate|Win32
+ PGUpdate|x64 = PGUpdate|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug|Win32.Build.0 = Debug|Win32
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug|x64.ActiveCfg = Debug|x64
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug|x64.Build.0 = Debug|x64
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release|Win32.ActiveCfg = Release|Win32
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release|Win32.Build.0 = Release|Win32
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release|x64.ActiveCfg = Release|x64
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release|x64.Build.0 = Release|x64
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Debug|Win32.Build.0 = Debug|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Debug|x64.ActiveCfg = Debug|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Debug|x64.Build.0 = Debug|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.PGInstrument|Win32.ActiveCfg = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.PGInstrument|Win32.Build.0 = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.PGInstrument|x64.ActiveCfg = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.PGInstrument|x64.Build.0 = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.PGUpdate|Win32.ActiveCfg = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.PGUpdate|Win32.Build.0 = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.PGUpdate|x64.ActiveCfg = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.PGUpdate|x64.Build.0 = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Release|Win32.ActiveCfg = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Release|Win32.Build.0 = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Release|x64.ActiveCfg = Release|Win32
+ {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Release|x64.Build.0 = Release|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug|Win32.Build.0 = Debug|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug|x64.ActiveCfg = Debug|x64
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug|x64.Build.0 = Debug|x64
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release|Win32.ActiveCfg = Release|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release|Win32.Build.0 = Release|Win32
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release|x64.ActiveCfg = Release|x64
+ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release|x64.Build.0 = Release|x64
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug|Win32.Build.0 = Debug|Win32
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug|x64.ActiveCfg = Debug|x64
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug|x64.Build.0 = Debug|x64
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release|Win32.ActiveCfg = Release|Win32
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release|Win32.Build.0 = Release|Win32
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release|x64.ActiveCfg = Release|x64
+ {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release|x64.Build.0 = Release|x64
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Debug|Win32.Build.0 = Debug|Win32
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Debug|x64.ActiveCfg = Debug|x64
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Debug|x64.Build.0 = Debug|x64
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Release|Win32.ActiveCfg = Release|Win32
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Release|Win32.Build.0 = Release|Win32
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Release|x64.ActiveCfg = Release|x64
+ {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Release|x64.Build.0 = Release|x64
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Debug|Win32.ActiveCfg = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Debug|Win32.Build.0 = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Debug|x64.ActiveCfg = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Debug|x64.Build.0 = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.PGInstrument|Win32.ActiveCfg = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.PGInstrument|Win32.Build.0 = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.PGInstrument|x64.ActiveCfg = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.PGInstrument|x64.Build.0 = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.PGUpdate|Win32.ActiveCfg = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.PGUpdate|Win32.Build.0 = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.PGUpdate|x64.ActiveCfg = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.PGUpdate|x64.Build.0 = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Release|Win32.ActiveCfg = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Release|Win32.Build.0 = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Release|x64.ActiveCfg = Release|Win32
+ {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Release|x64.Build.0 = Release|Win32
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.Debug|Win32.ActiveCfg = Debug|Win32
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.Debug|Win32.Build.0 = Debug|Win32
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.Debug|x64.ActiveCfg = Debug|x64
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.Debug|x64.Build.0 = Debug|x64
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.Release|Win32.ActiveCfg = Release|Win32
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.Release|Win32.Build.0 = Release|Win32
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.Release|x64.ActiveCfg = Release|x64
+ {28B5D777-DDF2-4B6B-B34F-31D938813856}.Release|x64.Build.0 = Release|x64
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.Debug|Win32.Build.0 = Debug|Win32
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.Debug|x64.ActiveCfg = Debug|x64
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.Debug|x64.Build.0 = Debug|x64
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.Release|Win32.ActiveCfg = Release|Win32
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.Release|Win32.Build.0 = Release|Win32
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.Release|x64.ActiveCfg = Release|x64
+ {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.Release|x64.Build.0 = Release|x64
+ {0E9791DB-593A-465F-98BC-681011311618}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0E9791DB-593A-465F-98BC-681011311618}.Debug|Win32.Build.0 = Debug|Win32
+ {0E9791DB-593A-465F-98BC-681011311618}.Debug|x64.ActiveCfg = Debug|x64
+ {0E9791DB-593A-465F-98BC-681011311618}.Debug|x64.Build.0 = Debug|x64
+ {0E9791DB-593A-465F-98BC-681011311618}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {0E9791DB-593A-465F-98BC-681011311618}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {0E9791DB-593A-465F-98BC-681011311618}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {0E9791DB-593A-465F-98BC-681011311618}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {0E9791DB-593A-465F-98BC-681011311618}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {0E9791DB-593A-465F-98BC-681011311618}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {0E9791DB-593A-465F-98BC-681011311618}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {0E9791DB-593A-465F-98BC-681011311618}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {0E9791DB-593A-465F-98BC-681011311618}.Release|Win32.ActiveCfg = Release|Win32
+ {0E9791DB-593A-465F-98BC-681011311618}.Release|Win32.Build.0 = Release|Win32
+ {0E9791DB-593A-465F-98BC-681011311618}.Release|x64.ActiveCfg = Release|x64
+ {0E9791DB-593A-465F-98BC-681011311618}.Release|x64.Build.0 = Release|x64
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.Debug|Win32.Build.0 = Debug|Win32
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.Debug|x64.ActiveCfg = Debug|x64
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.Debug|x64.Build.0 = Debug|x64
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.Release|Win32.ActiveCfg = Release|Win32
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.Release|Win32.Build.0 = Release|Win32
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.Release|x64.ActiveCfg = Release|x64
+ {9EC7190A-249F-4180-A900-548FDCF3055F}.Release|x64.Build.0 = Release|x64
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.Debug|Win32.Build.0 = Debug|Win32
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.Debug|x64.ActiveCfg = Debug|x64
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.Debug|x64.Build.0 = Debug|x64
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.Release|Win32.ActiveCfg = Release|Win32
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.Release|Win32.Build.0 = Release|Win32
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.Release|x64.ActiveCfg = Release|x64
+ {17E1E049-C309-4D79-843F-AE483C264AEA}.Release|x64.Build.0 = Release|x64
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Debug|Win32.Build.0 = Debug|Win32
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Debug|x64.ActiveCfg = Debug|x64
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Debug|x64.Build.0 = Debug|x64
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Release|Win32.ActiveCfg = Release|Win32
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Release|Win32.Build.0 = Release|Win32
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Release|x64.ActiveCfg = Release|x64
+ {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Release|x64.Build.0 = Release|x64
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.Debug|Win32.ActiveCfg = Debug|Win32
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.Debug|Win32.Build.0 = Debug|Win32
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.Debug|x64.ActiveCfg = Debug|x64
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.Debug|x64.Build.0 = Debug|x64
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.Release|Win32.ActiveCfg = Release|Win32
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.Release|Win32.Build.0 = Release|Win32
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.Release|x64.ActiveCfg = Release|x64
+ {86937F53-C189-40EF-8CE8-8759D8E7D480}.Release|x64.Build.0 = Release|x64
+ {13CECB97-4119-4316-9D42-8534019A5A44}.Debug|Win32.ActiveCfg = Debug|Win32
+ {13CECB97-4119-4316-9D42-8534019A5A44}.Debug|Win32.Build.0 = Debug|Win32
+ {13CECB97-4119-4316-9D42-8534019A5A44}.Debug|x64.ActiveCfg = Debug|x64
+ {13CECB97-4119-4316-9D42-8534019A5A44}.Debug|x64.Build.0 = Debug|x64
+ {13CECB97-4119-4316-9D42-8534019A5A44}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {13CECB97-4119-4316-9D42-8534019A5A44}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {13CECB97-4119-4316-9D42-8534019A5A44}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {13CECB97-4119-4316-9D42-8534019A5A44}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {13CECB97-4119-4316-9D42-8534019A5A44}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {13CECB97-4119-4316-9D42-8534019A5A44}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {13CECB97-4119-4316-9D42-8534019A5A44}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {13CECB97-4119-4316-9D42-8534019A5A44}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {13CECB97-4119-4316-9D42-8534019A5A44}.Release|Win32.ActiveCfg = Release|Win32
+ {13CECB97-4119-4316-9D42-8534019A5A44}.Release|Win32.Build.0 = Release|Win32
+ {13CECB97-4119-4316-9D42-8534019A5A44}.Release|x64.ActiveCfg = Release|x64
+ {13CECB97-4119-4316-9D42-8534019A5A44}.Release|x64.Build.0 = Release|x64
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.Debug|Win32.Build.0 = Debug|Win32
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.Debug|x64.ActiveCfg = Debug|x64
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.Debug|x64.Build.0 = Debug|x64
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.Release|Win32.ActiveCfg = Release|Win32
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.Release|Win32.Build.0 = Release|Win32
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.Release|x64.ActiveCfg = Release|x64
+ {C6E20F84-3247-4AD6-B051-B073268F73BA}.Release|x64.Build.0 = Release|x64
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Debug|Win32.Build.0 = Debug|Win32
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Debug|x64.ActiveCfg = Debug|x64
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Debug|x64.Build.0 = Debug|x64
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Release|Win32.ActiveCfg = Release|Win32
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Release|Win32.Build.0 = Release|Win32
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Release|x64.ActiveCfg = Release|x64
+ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Release|x64.Build.0 = Release|x64
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Debug|Win32.ActiveCfg = Debug|Win32
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Debug|Win32.Build.0 = Debug|Win32
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Debug|x64.ActiveCfg = Debug|x64
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Debug|x64.Build.0 = Debug|x64
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Release|Win32.ActiveCfg = Release|Win32
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Release|Win32.Build.0 = Release|Win32
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Release|x64.ActiveCfg = Release|x64
+ {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Release|x64.Build.0 = Release|x64
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Debug|Win32.ActiveCfg = Debug|Win32
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Debug|Win32.Build.0 = Debug|Win32
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Debug|x64.ActiveCfg = Debug|x64
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Debug|x64.Build.0 = Debug|x64
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Release|Win32.ActiveCfg = Release|Win32
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Release|Win32.Build.0 = Release|Win32
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Release|x64.ActiveCfg = Release|x64
+ {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Release|x64.Build.0 = Release|x64
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.Debug|Win32.ActiveCfg = Debug|Win32
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.Debug|Win32.Build.0 = Debug|Win32
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.Debug|x64.ActiveCfg = Debug|x64
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.Debug|x64.Build.0 = Debug|x64
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.Release|Win32.ActiveCfg = Release|Win32
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.Release|Win32.Build.0 = Release|Win32
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.Release|x64.ActiveCfg = Release|x64
+ {18CAE28C-B454-46C1-87A0-493D91D97F03}.Release|x64.Build.0 = Release|x64
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Debug|Win32.ActiveCfg = Debug|Win32
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Debug|Win32.Build.0 = Debug|Win32
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Debug|x64.ActiveCfg = Debug|x64
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Debug|x64.Build.0 = Debug|x64
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Release|Win32.ActiveCfg = Release|Win32
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Release|Win32.Build.0 = Release|Win32
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Release|x64.ActiveCfg = Release|x64
+ {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Release|x64.Build.0 = Release|x64
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.Debug|Win32.Build.0 = Debug|Win32
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.Debug|x64.ActiveCfg = Debug|x64
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.Debug|x64.Build.0 = Debug|x64
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.Release|Win32.ActiveCfg = Release|Win32
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.Release|Win32.Build.0 = Release|Win32
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.Release|x64.ActiveCfg = Release|x64
+ {D06B6426-4762-44CC-8BAD-D79052507F2F}.Release|x64.Build.0 = Release|x64
+ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Debug|Win32.ActiveCfg = Release|Win32
+ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Debug|x64.ActiveCfg = Release|x64
+ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGInstrument|Win32.ActiveCfg = Release|Win32
+ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGInstrument|x64.ActiveCfg = Release|x64
+ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGUpdate|Win32.ActiveCfg = Release|Win32
+ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGUpdate|x64.ActiveCfg = Release|x64
+ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Release|Win32.ActiveCfg = Release|Win32
+ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Release|x64.ActiveCfg = Release|x64
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.Debug|Win32.Build.0 = Debug|Win32
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.Debug|x64.ActiveCfg = Debug|x64
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.Debug|x64.Build.0 = Debug|x64
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.Release|Win32.ActiveCfg = Release|Win32
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.Release|Win32.Build.0 = Release|Win32
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.Release|x64.ActiveCfg = Release|x64
+ {447F05A8-F581-4CAC-A466-5AC7936E207E}.Release|x64.Build.0 = Release|x64
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.Debug|Win32.Build.0 = Debug|Win32
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.Debug|x64.ActiveCfg = Debug|x64
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.Debug|x64.Build.0 = Debug|x64
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.Release|Win32.ActiveCfg = Release|Win32
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.Release|Win32.Build.0 = Release|Win32
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.Release|x64.ActiveCfg = Release|x64
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.Release|x64.Build.0 = Release|x64
+ {9E48B300-37D1-11DD-8C41-005056C00008}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9E48B300-37D1-11DD-8C41-005056C00008}.Debug|Win32.Build.0 = Debug|Win32
+ {9E48B300-37D1-11DD-8C41-005056C00008}.Debug|x64.ActiveCfg = Debug|x64
+ {9E48B300-37D1-11DD-8C41-005056C00008}.Debug|x64.Build.0 = Debug|x64
+ {9E48B300-37D1-11DD-8C41-005056C00008}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {9E48B300-37D1-11DD-8C41-005056C00008}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {9E48B300-37D1-11DD-8C41-005056C00008}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {9E48B300-37D1-11DD-8C41-005056C00008}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {9E48B300-37D1-11DD-8C41-005056C00008}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {9E48B300-37D1-11DD-8C41-005056C00008}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {9E48B300-37D1-11DD-8C41-005056C00008}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {9E48B300-37D1-11DD-8C41-005056C00008}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {9E48B300-37D1-11DD-8C41-005056C00008}.Release|Win32.ActiveCfg = Release|Win32
+ {9E48B300-37D1-11DD-8C41-005056C00008}.Release|Win32.Build.0 = Release|Win32
+ {9E48B300-37D1-11DD-8C41-005056C00008}.Release|x64.ActiveCfg = Release|x64
+ {9E48B300-37D1-11DD-8C41-005056C00008}.Release|x64.Build.0 = Release|x64
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.Debug|Win32.ActiveCfg = Debug|Win32
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.Debug|Win32.Build.0 = Debug|Win32
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.Debug|x64.ActiveCfg = Debug|x64
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.Debug|x64.Build.0 = Debug|x64
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.PGInstrument|Win32.ActiveCfg = Release|Win32
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.PGInstrument|Win32.Build.0 = Release|Win32
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.PGInstrument|x64.ActiveCfg = Release|x64
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.PGInstrument|x64.Build.0 = Release|x64
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.PGUpdate|Win32.ActiveCfg = Release|Win32
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.PGUpdate|Win32.Build.0 = Release|Win32
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.PGUpdate|x64.ActiveCfg = Release|x64
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.PGUpdate|x64.Build.0 = Release|x64
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.Release|Win32.ActiveCfg = Release|Win32
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.Release|Win32.Build.0 = Release|Win32
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.Release|x64.ActiveCfg = Release|x64
+ {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.Release|x64.Build.0 = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/PC/VS9.0/pginstrument.vsprops b/PC/VS9.0/pginstrument.vsprops
new file mode 100644
index 0000000..af8813c
--- /dev/null
+++ b/PC/VS9.0/pginstrument.vsprops
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="pginstrument"
+ OutputDirectory="$(OutDirPGI)"
+ IntermediateDirectory="$(SolutionDir)$(PlatformName)-temp-pgi\$(ProjectName)\"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ EnableIntrinsicFunctions="false"
+ FavorSizeOrSpeed="2"
+ OmitFramePointers="true"
+ EnableFiberSafeOptimizations="false"
+ WholeProgramOptimization="true"
+ StringPooling="true"
+ ExceptionHandling="0"
+ BufferSecurityCheck="false"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="1"
+ LinkTimeCodeGeneration="2"
+ ProfileGuidedDatabase="$(SolutionDir)$(PlatformName)-pgi\$(TargetName).pgd"
+ ImportLibrary="$(OutDirPGI)\$(TargetName).lib"
+ />
+ <UserMacro
+ Name="OutDirPGI"
+ Value="$(SolutionDir)$(PlatformName)-pgi\"
+ />
+</VisualStudioPropertySheet>
diff --git a/PC/VS9.0/pgupdate.vsprops b/PC/VS9.0/pgupdate.vsprops
new file mode 100644
index 0000000..7ce4a3a
--- /dev/null
+++ b/PC/VS9.0/pgupdate.vsprops
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="pgupdate"
+ OutputDirectory="$(SolutionDir)$(PlatformName)-pgo\"
+ InheritedPropertySheets="$(SolutionDir)\pginstrument.vsprops"
+ >
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalManifestDependencies=""
+ LinkTimeCodeGeneration="4"
+ />
+</VisualStudioPropertySheet>
diff --git a/PC/VS9.0/pyd.vsprops b/PC/VS9.0/pyd.vsprops
new file mode 100644
index 0000000..ce039eb
--- /dev/null
+++ b/PC/VS9.0/pyd.vsprops
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="pyd"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE"
+ RuntimeLibrary="2"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(ProjectName).pyd"
+ ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"
+ ImportLibrary="$(OutDir)\$(TargetName).lib"
+ GenerateManifest="false"
+ />
+ <Tool
+ Name="VCManifestTool"
+ EmbedManifest="false"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine=""
+ />
+</VisualStudioPropertySheet>
diff --git a/PC/VS9.0/pyd_d.vsprops b/PC/VS9.0/pyd_d.vsprops
new file mode 100644
index 0000000..8508156
--- /dev/null
+++ b/PC/VS9.0/pyd_d.vsprops
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="pyd_d"
+ InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ InlineFunctionExpansion="0"
+ EnableIntrinsicFunctions="false"
+ PreprocessorDefinitions="Py_BUILD_CORE_MODULE"
+ RuntimeLibrary="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(ProjectName)_d.pyd"
+ LinkIncremental="1"
+ ProgramDatabaseFile="$(OutDir)\$(ProjectName)_d.pdb"
+ ImportLibrary="$(OutDir)\$(TargetName).lib"
+ GenerateManifest="false"
+ />
+ <Tool
+ Name="VCManifestTool"
+ EmbedManifest="false"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine=""
+ />
+ <UserMacro
+ Name="PythonExe"
+ Value="$(SolutionDir)python_d.exe"
+ />
+</VisualStudioPropertySheet>
diff --git a/PC/VS9.0/pyexpat.vcproj b/PC/VS9.0/pyexpat.vcproj
new file mode 100644
index 0000000..76b698f
--- /dev/null
+++ b/PC/VS9.0/pyexpat.vcproj
@@ -0,0 +1,553 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="pyexpat"
+ ProjectGUID="{D06B6426-4762-44CC-8BAD-D79052507F2F}"
+ RootNamespace="pyexpat"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=".\..\..\Modules\expat"
+ PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS;PYEXPAT_EXPORTS;XML_STATIC"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=".\..\..\Modules\expat"
+ PreprocessorDefinitions="PYEXPAT_EXPORTS;XML_STATIC"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=".\..\..\Modules\expat"
+ PreprocessorDefinitions="PYEXPAT_EXPORTS;XML_STATIC"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=".\..\..\Modules\expat"
+ PreprocessorDefinitions="PYEXPAT_EXPORTS;XML_STATIC"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=".\..\..\Modules\expat"
+ PreprocessorDefinitions="PYEXPAT_EXPORTS;XML_STATIC"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=".\..\..\Modules\expat"
+ PreprocessorDefinitions="PYEXPAT_EXPORTS;XML_STATIC"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=".\..\..\Modules\expat"
+ PreprocessorDefinitions="PYEXPAT_EXPORTS;XML_STATIC"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=".\..\..\Modules\expat"
+ PreprocessorDefinitions="PYEXPAT_EXPORTS;XML_STATIC"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Header Files"
+ >
+ <File
+ RelativePath="..\..\Modules\expat\xmlrole.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\xmltok.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\pyexpat.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\xmlparse.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\xmlrole.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\expat\xmltok.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/pyproject.vsprops b/PC/VS9.0/pyproject.vsprops
new file mode 100644
index 0000000..ef28af8
--- /dev/null
+++ b/PC/VS9.0/pyproject.vsprops
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="pyproject"
+ OutputDirectory="$(SolutionDir)"
+ IntermediateDirectory="$(SolutionDir)$(PlatformName)-temp-$(ConfigurationName)\$(ProjectName)\"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories="..\..\Include; ..\..\PC"
+ PreprocessorDefinitions="_WIN32;WIN32"
+ StringPooling="true"
+ ExceptionHandling="0"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories="$(OutDir)"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="$(OutDir)$(TargetName).pdb"
+ SubSystem="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ AdditionalIncludeDirectories="..\..\PC;..\..\Include"
+ />
+ <UserMacro
+ Name="PyDllName"
+ Value="python27"
+ />
+ <UserMacro
+ Name="PythonExe"
+ Value="$(SolutionDir)\python.exe"
+ />
+ <UserMacro
+ Name="externalsDir"
+ Value="..\..\externals"
+ />
+ <UserMacro
+ Name="bsddb47Dir"
+ Value="$(externalsDir)\bsddb-4.7.25.0\build_windows"
+ />
+ <UserMacro
+ Name="bsddb47DepLibs"
+ Value="ws2_32.lib"
+ />
+ <UserMacro
+ Name="bsddbDir"
+ Value="$(bsddb47Dir)"
+ />
+ <UserMacro
+ Name="bsddbDepLibs"
+ Value="$(bsddb47DepLibs)"
+ />
+ <UserMacro
+ Name="bsddb44Dir"
+ Value="$(externalsDir)\db-4.4.20\build_win32"
+ />
+ <UserMacro
+ Name="bsddb44DepLibs"
+ Value=""
+ />
+ <UserMacro
+ Name="sqlite3Dir"
+ Value="$(externalsDir)\sqlite-3.14.2.0"
+ />
+ <UserMacro
+ Name="bz2Dir"
+ Value="$(externalsDir)\bzip2-1.0.6"
+ />
+ <UserMacro
+ Name="opensslDir"
+ Value="$(externalsDir)\openssl-1.0.2o"
+ />
+ <UserMacro
+ Name="tcltkDir"
+ Value="$(externalsDir)\tcltk"
+ />
+ <UserMacro
+ Name="tcltk64Dir"
+ Value="$(externalsDir)\tcltk64"
+ />
+ <UserMacro
+ Name="tcltkLib"
+ Value="$(tcltkDir)\lib\tcl85.lib $(tcltkDir)\lib\tk85.lib"
+ />
+ <UserMacro
+ Name="tcltkLibDebug"
+ Value="$(tcltkDir)\lib\tcl85g.lib $(tcltkDir)\lib\tk85g.lib"
+ />
+ <UserMacro
+ Name="tcltk64Lib"
+ Value="$(tcltk64Dir)\lib\tcl85.lib $(tcltk64Dir)\lib\tk85.lib"
+ />
+ <UserMacro
+ Name="tcltk64LibDebug"
+ Value="$(tcltk64Dir)\lib\tcl85g.lib $(tcltk64Dir)\lib\tk85g.lib"
+ />
+</VisualStudioPropertySheet>
diff --git a/PC/VS9.0/python.vcproj b/PC/VS9.0/python.vcproj
new file mode 100644
index 0000000..d3baa11
--- /dev/null
+++ b/PC/VS9.0/python.vcproj
@@ -0,0 +1,637 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="python"
+ ProjectGUID="{B11D750F-CD1F-4A96-85CE-E69A5C5259F9}"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_CONSOLE"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\python.exe"
+ SubSystem="1"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_CONSOLE"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\python.exe"
+ SubSystem="1"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ EnableIntrinsicFunctions="false"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_CONSOLE"
+ RuntimeLibrary="3"
+ BrowseInformation="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\Include"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\python_d.exe"
+ SubSystem="1"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\debug.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ EnableIntrinsicFunctions="false"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_CONSOLE"
+ RuntimeLibrary="3"
+ BrowseInformation="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\Include"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\python_d.exe"
+ SubSystem="1"
+ StackReserveSize="2100000"
+ BaseAddress="0x1d000000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops;.\pginstrument.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_CONSOLE"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\python.exe"
+ SubSystem="1"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ ImportLibrary=""
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops;.\pginstrument.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_CONSOLE"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\python.exe"
+ SubSystem="1"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ ImportLibrary=""
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops;.\pgupdate.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_CONSOLE"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\python.exe"
+ SubSystem="1"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ ImportLibrary=""
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops;.\pgupdate.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_CONSOLE"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\python.exe"
+ SubSystem="1"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ ImportLibrary=""
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Resource Files"
+ >
+ <File
+ RelativePath="..\..\PC\pycon.ico"
+ >
+ </File>
+ <File
+ RelativePath="..\..\PC\python_exe.rc"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\python.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/pythoncore.vcproj b/PC/VS9.0/pythoncore.vcproj
new file mode 100644
index 0000000..79dcf96
--- /dev/null
+++ b/PC/VS9.0/pythoncore.vcproj
@@ -0,0 +1,1889 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="pythoncore"
+ ProjectGUID="{CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}"
+ RootNamespace="pythoncore"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/Zm200 "
+ AdditionalIncludeDirectories="..\..\Python;..\..\Modules\zlib"
+ PreprocessorDefinitions="_USRDLL;Py_BUILD_CORE;Py_ENABLE_SHARED;WIN32"
+ RuntimeLibrary="2"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\Include"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ Description="Generate build information..."
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="getbuildinfo.o"
+ OutputFile="$(OutDir)\$(PyDllName).dll"
+ IgnoreDefaultLibraryNames="libc"
+ ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
+ BaseAddress="0x1e000000"
+ ImportLibrary="$(OutDir)$(PyDllName).lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/Zm200 "
+ AdditionalIncludeDirectories="..\..\Python;..\..\Modules\zlib"
+ PreprocessorDefinitions="_USRDLL;Py_BUILD_CORE;Py_ENABLE_SHARED;WIN32"
+ RuntimeLibrary="2"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\Include"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ Description="Generate build information..."
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="getbuildinfo.o"
+ OutputFile="$(OutDir)\$(PyDllName).dll"
+ IgnoreDefaultLibraryNames="libc"
+ ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
+ BaseAddress="0x1e000000"
+ ImportLibrary="$(OutDir)$(PyDllName).lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/Zm200 "
+ Optimization="0"
+ InlineFunctionExpansion="0"
+ EnableIntrinsicFunctions="false"
+ AdditionalIncludeDirectories="..\..\Python;..\..\Modules\zlib"
+ PreprocessorDefinitions="_USRDLL;Py_BUILD_CORE;Py_ENABLE_SHARED;WIN32"
+ RuntimeLibrary="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\Include"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ Description="Generate build information..."
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Debug"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="getbuildinfo.o"
+ OutputFile="$(OutDir)\$(PyDllName)_d.dll"
+ IgnoreDefaultLibraryNames="libc"
+ ProgramDatabaseFile="$(OutDir)$(PyDllName)_d.pdb"
+ BaseAddress="0x1e000000"
+ ImportLibrary="$(OutDir)$(PyDllName)_d.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\debug.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/Zm200 "
+ Optimization="0"
+ InlineFunctionExpansion="0"
+ EnableIntrinsicFunctions="false"
+ AdditionalIncludeDirectories="..\..\Python;..\..\Modules\zlib"
+ PreprocessorDefinitions="_USRDLL;Py_BUILD_CORE;Py_ENABLE_SHARED;WIN32"
+ RuntimeLibrary="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\Include"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ Description="Generate build information..."
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Debug"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="getbuildinfo.o"
+ OutputFile="$(OutDir)\$(PyDllName)_d.dll"
+ IgnoreDefaultLibraryNames="libc"
+ ProgramDatabaseFile="$(OutDir)$(PyDllName)_d.pdb"
+ BaseAddress="0x1e000000"
+ ImportLibrary="$(OutDir)$(PyDllName)_d.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops;.\pginstrument.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/Zm200 "
+ AdditionalIncludeDirectories="..\..\Python;..\..\Modules\zlib"
+ PreprocessorDefinitions="_USRDLL;Py_BUILD_CORE;Py_ENABLE_SHARED;WIN32"
+ RuntimeLibrary="2"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\Include"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ Description="Generate build information..."
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="getbuildinfo.o"
+ OutputFile="$(OutDir)\$(PyDllName).dll"
+ IgnoreDefaultLibraryNames="libc"
+ ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
+ BaseAddress="0x1e000000"
+ ImportLibrary="$(OutDirPGI)$(PyDllName).lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops;.\pginstrument.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/Zm200 "
+ AdditionalIncludeDirectories="..\..\Python;..\..\Modules\zlib"
+ PreprocessorDefinitions="_USRDLL;Py_BUILD_CORE;Py_ENABLE_SHARED;WIN32"
+ RuntimeLibrary="2"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\Include"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ Description="Generate build information..."
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="getbuildinfo.o"
+ OutputFile="$(OutDir)\$(PyDllName).dll"
+ IgnoreDefaultLibraryNames="libc"
+ ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
+ BaseAddress="0x1e000000"
+ ImportLibrary="$(OutDirPGI)$(PyDllName).lib"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops;.\pgupdate.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/Zm200 "
+ AdditionalIncludeDirectories="..\..\Python;..\..\Modules\zlib"
+ PreprocessorDefinitions="_USRDLL;Py_BUILD_CORE;Py_ENABLE_SHARED;WIN32"
+ RuntimeLibrary="2"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\Include"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ Description="Generate build information..."
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="getbuildinfo.o"
+ OutputFile="$(OutDir)\$(PyDllName).dll"
+ IgnoreDefaultLibraryNames="libc"
+ ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
+ BaseAddress="0x1e000000"
+ ImportLibrary="$(OutDirPGI)$(PyDllName).lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops;.\pgupdate.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/Zm200 "
+ AdditionalIncludeDirectories="..\..\Python;..\..\Modules\zlib"
+ PreprocessorDefinitions="_USRDLL;Py_BUILD_CORE;Py_ENABLE_SHARED;WIN32"
+ RuntimeLibrary="2"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\Include"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ Description="Generate build information..."
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="getbuildinfo.o"
+ OutputFile="$(OutDir)\$(PyDllName).dll"
+ IgnoreDefaultLibraryNames="libc"
+ ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
+ BaseAddress="0x1e000000"
+ ImportLibrary="$(OutDirPGI)$(PyDllName).lib"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Include"
+ >
+ <File
+ RelativePath="..\..\Include\abstract.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\asdl.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\ast.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\bitset.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\boolobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\bufferobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\bytes_methods.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\bytearrayobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\bytesobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\cellobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\ceval.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\classobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\cobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\code.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\codecs.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\compile.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\complexobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\cStringIO.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\datetime.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\descrobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\dictobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\dtoa.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\enumobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\errcode.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\eval.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\fileobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\floatobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\frameobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\funcobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\genobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\graminit.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\grammar.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\import.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\intobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\intrcheck.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\iterobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\listobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\longintrepr.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\longobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\marshal.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\memoryobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\metagrammar.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\methodobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\modsupport.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\moduleobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\node.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\object.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\objimpl.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\opcode.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\osdefs.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\parsetok.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\patchlevel.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pgen.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pgenheaders.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\py_curses.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pyarena.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pycapsule.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pyctype.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pydebug.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pyerrors.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pyexpat.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pyfpe.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pygetopt.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pymactoolbox.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pymath.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pymem.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pyport.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pystate.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pystrcmp.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pystrtod.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\Python-ast.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\Python.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pythonrun.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\pythread.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\rangeobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\setobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\sliceobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\stringobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\structmember.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\structseq.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\symtable.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\sysmodule.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\timefuncs.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\token.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\traceback.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\tupleobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\ucnhash.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\unicodeobject.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Include\weakrefobject.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Modules"
+ >
+ <File
+ RelativePath="..\..\Modules\_bisectmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_codecsmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_collectionsmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_csv.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_functoolsmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_heapqmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_hotshot.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_json.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_localemodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_lsprof.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_math.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_math.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_randommodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_sre.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_struct.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_weakref.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\arraymodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\audioop.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\binascii.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cmathmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cPickle.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cStringIO.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\datetimemodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\errnomodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\future_builtins.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\gcmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\imageop.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\itertoolsmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\main.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\mathmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\md5.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\md5.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\md5module.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\mmapmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\operator.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\parsermodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\posixmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\rotatingtree.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\rotatingtree.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\sha256module.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\sha512module.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\shamodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\signalmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\stropmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\symtablemodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\threadmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\timemodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\xxsubtype.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zipimport.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlibmodule.c"
+ >
+ </File>
+ <Filter
+ Name="zlib"
+ >
+ <File
+ RelativePath="..\..\Modules\zlib\adler32.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\compress.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\crc32.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\crc32.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\deflate.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\deflate.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\gzclose.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\gzlib.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\gzread.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\gzwrite.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\infback.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inffast.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inffast.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inffixed.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inflate.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inflate.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inftrees.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inftrees.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\trees.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\trees.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\uncompr.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\zconf.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\zconf.in.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\zlib.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\zutil.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\zutil.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="cjkcodecs"
+ >
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\_codecs_cn.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\_codecs_hk.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\_codecs_iso2022.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\_codecs_jp.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\_codecs_kr.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\_codecs_tw.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\alg_jisx0201.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\cjkcodecs.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\emu_jisx0213_2000.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\mappings_cn.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\mappings_hk.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\mappings_jisx0213_pair.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\mappings_jp.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\mappings_kr.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\mappings_tw.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\multibytecodec.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\cjkcodecs\multibytecodec.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="_io"
+ >
+ <File
+ RelativePath="..\..\Modules\_io\_iomodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_io\_iomodule.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_io\bufferedio.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_io\bytesio.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_io\fileio.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_io\iobase.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_io\stringio.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_io\textio.c"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ <Filter
+ Name="Objects"
+ >
+ <File
+ RelativePath="..\..\Objects\abstract.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\boolobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\bufferobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\bytes_methods.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\bytearrayobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\capsule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\cellobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\classobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\cobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\codeobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\complexobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\stringlib\count.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\descrobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\dictobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\enumobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\exceptions.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\stringlib\fastsearch.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\fileobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\stringlib\find.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\floatobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\frameobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\funcobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\genobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\intobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\iterobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\listobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\longobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\memoryobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\methodobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\moduleobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\object.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\obmalloc.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\stringlib\partition.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\rangeobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\setobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\sliceobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\stringlib\split.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\stringobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\structseq.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\tupleobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\typeobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\unicodectype.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\unicodeobject.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\unicodetype_db.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Objects\weakrefobject.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Parser"
+ >
+ <File
+ RelativePath="..\..\Parser\acceler.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\bitset.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\firstsets.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\grammar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\grammar1.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\listnode.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\metagrammar.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\myreadline.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\node.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\parser.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\parser.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\parsetok.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\tokenizer.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Parser\tokenizer.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="PC"
+ >
+ <File
+ RelativePath="..\..\PC\_subprocess.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\PC\_winreg.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\PC\config.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\PC\dl_nt.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\PC\errmap.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\PC\getpathp.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\PC\import_nt.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\PC\msvcrtmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\PC\pyconfig.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Python"
+ >
+ <File
+ RelativePath="..\..\Python\_warnings.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\asdl.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\ast.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\bltinmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\ceval.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\codecs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\compile.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\dtoa.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\dynload_win.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\errors.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\formatter_string.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\formatter_unicode.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\frozen.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\future.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\getargs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\getcompiler.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\getcopyright.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\getopt.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\getplatform.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\getversion.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\graminit.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\import.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\importdl.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\importdl.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\marshal.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\modsupport.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\mysnprintf.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\mystrtoul.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\peephole.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\pyarena.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\pyctype.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\pyfpe.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\pymath.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\pystate.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\pystrcmp.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\pystrtod.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\Python-ast.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\pythonrun.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\random.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\structmember.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\symtable.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\sysmodule.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\thread.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\thread_nt.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Python\traceback.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ >
+ <File
+ RelativePath="..\..\PC\python_nt.rc"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/pythonw.vcproj b/PC/VS9.0/pythonw.vcproj
new file mode 100644
index 0000000..d3597f4
--- /dev/null
+++ b/PC/VS9.0/pythonw.vcproj
@@ -0,0 +1,618 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="pythonw"
+ ProjectGUID="{F4229CC3-873C-49AE-9729-DD308ED4CD4A}"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ EnableIntrinsicFunctions="false"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_WINDOWS"
+ RuntimeLibrary="3"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\pythonw_d.exe"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\debug.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ EnableIntrinsicFunctions="false"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_WINDOWS"
+ RuntimeLibrary="3"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\pythonw_d.exe"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_WINDOWS"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\pythonw.exe"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_WINDOWS"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\pythonw.exe"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops;.\pginstrument.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_WINDOWS"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\pythonw.exe"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ ImportLibrary=""
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops;.\pginstrument.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_WINDOWS"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\pythonw.exe"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ ImportLibrary=""
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops;.\pgupdate.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_WINDOWS"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\pythonw.exe"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ ImportLibrary=""
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops;.\pgupdate.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_WINDOWS"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\pythonw.exe"
+ StackReserveSize="2000000"
+ BaseAddress="0x1d000000"
+ ImportLibrary=""
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Resource Files"
+ >
+ <File
+ RelativePath="..\..\PC\python_exe.rc"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\PC\WinMain.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/readme.txt b/PC/VS9.0/readme.txt
new file mode 100644
index 0000000..a4024d5
--- /dev/null
+++ b/PC/VS9.0/readme.txt
@@ -0,0 +1,252 @@
+Building Python using VC++ 9.0
+------------------------------
+
+This directory is used to build Python for Win32 and x64 platforms, e.g.
+Windows 2000, XP, Vista and Windows Server 2008. In order to build 32-bit
+debug and release executables, Microsoft Visual C++ 2008 Express Edition is
+required at the very least. In order to build 64-bit debug and release
+executables, Visual Studio 2008 Standard Edition is required at the very
+least. In order to build all of the above, as well as generate release builds
+that make use of Profile Guided Optimisation (PG0), Visual Studio 2008
+Professional Edition is required at the very least. The official Python
+releases are built with this version of Visual Studio.
+
+For other Windows platforms and compilers, see PC/readme.txt.
+
+All you need to do is open the workspace "pcbuild.sln" in Visual Studio,
+select the desired combination of configuration and platform and eventually
+build the solution. Unless you are going to debug a problem in the core or
+you are going to create an optimized build you want to select "Release" as
+configuration.
+
+The PCbuild directory is compatible with all versions of Visual Studio from
+VS C++ Express Edition over the standard edition up to the professional
+edition. However the express edition does not support features like solution
+folders or profile guided optimization (PGO). The missing bits and pieces
+won't stop you from building Python.
+
+The solution is configured to build the projects in the correct order. "Build
+Solution" or F7 takes care of dependencies except for x64 builds. To make
+cross compiling x64 builds on a 32bit OS possible the x64 builds require a
+32bit version of Python.
+
+NOTE:
+ You probably don't want to build most of the other subprojects, unless
+ you're building an entire Python distribution from scratch, or
+ specifically making changes to the subsystems they implement, or are
+ running a Python core buildbot test slave; see SUBPROJECTS below)
+
+When using the Debug setting, the output files have a _d added to
+their name: python27_d.dll, python_d.exe, parser_d.pyd, and so on. Both
+the build and rt batch files accept a -d option for debug builds.
+
+The 32bit builds end up in the solution folder PCbuild while the x64 builds
+land in the amd64 subfolder. The PGI and PGO builds for profile guided
+optimization end up in their own folders, too.
+
+Legacy support
+--------------
+
+You can find build directories for older versions of Visual Studio and
+Visual C++ in the PC directory. The legacy build directories are no longer
+actively maintained and may not work out of the box.
+
+PC/VC6/
+ Visual C++ 6.0
+PC/VS7.1/
+ Visual Studio 2003 (7.1)
+PC/VS8.0/
+ Visual Studio 2005 (8.0)
+
+
+C RUNTIME
+---------
+
+Visual Studio 2008 uses version 9 of the C runtime (MSVCRT9). The executables
+are linked to a CRT "side by side" assembly which must be present on the target
+machine. This is available under the VC/Redist folder of your visual studio
+distribution. On XP and later operating systems that support
+side-by-side assemblies it is not enough to have the msvcrt90.dll present,
+it has to be there as a whole assembly, that is, a folder with the .dll
+and a .manifest. Also, a check is made for the correct version.
+Therefore, one should distribute this assembly with the dlls, and keep
+it in the same directory. For compatibility with older systems, one should
+also set the PATH to this directory so that the dll can be found.
+For more info, see the Readme in the VC/Redist folder.
+
+SUBPROJECTS
+-----------
+These subprojects should build out of the box. Subprojects other than the
+main ones (pythoncore, python, pythonw) generally build a DLL (renamed to
+.pyd) from a specific module so that users don't have to load the code
+supporting that module unless they import the module.
+
+pythoncore
+ .dll and .lib
+python
+ .exe
+pythonw
+ pythonw.exe, a variant of python.exe that doesn't pop up a DOS box
+_socket
+ socketmodule.c
+_testcapi
+ tests of the Python C API, run via Lib/test/test_capi.py, and
+ implemented by module Modules/_testcapimodule.c
+pyexpat
+ Python wrapper for accelerated XML parsing, which incorporates stable
+ code from the Expat project: http://sourceforge.net/projects/expat/
+select
+ selectmodule.c
+unicodedata
+ large tables of Unicode data
+winsound
+ play sounds (typically .wav files) under Windows
+
+Python-controlled subprojects that wrap external projects:
+_bsddb
+ Wraps Berkeley DB 4.7.25, which is currently built by _bsddb.vcproj.
+ project.
+_sqlite3
+ Wraps SQLite 3.8.11.0, which is currently built by sqlite3.vcproj.
+_tkinter
+ Wraps the Tk windowing system. Unlike _bsddb and _sqlite3, there's no
+ corresponding tcltk.vcproj-type project that builds Tcl/Tk from vcproj's
+ within our pcbuild.sln, which means this module expects to find a
+ pre-built Tcl/Tk in either ..\externals\tcltk for 32-bit or
+ ..\externals\tcltk64 for 64-bit (relative to this directory). See below
+ for instructions to build Tcl/Tk.
+bz2
+ Python wrapper for the libbz2 compression library. Homepage
+ http://sources.redhat.com/bzip2/
+ Download the source from the python.org copy into the dist
+ directory:
+
+ svn export http://svn.python.org/projects/external/bzip2-1.0.6
+
+ ** NOTE: if you use the PCbuild\get_externals.bat approach for
+ obtaining external sources then you don't need to manually get the source
+ above via subversion. **
+
+_ssl
+ Python wrapper for the secure sockets library.
+
+ Get the source code through
+
+ svn export http://svn.python.org/projects/external/openssl-1.0.2o
+
+ ** NOTE: if you use the PCbuild\get_externals.bat approach for
+ obtaining external sources then you don't need to manually get the source
+ above via subversion. **
+
+ The NASM assembler is required to build OpenSSL. If you use the
+ PCbuild\get_externals.bat script to get external library sources, it also
+ downloads a version of NASM, which the ssl build script will add to PATH.
+ Otherwise, you can download the NASM installer from
+ http://www.nasm.us/
+ and add NASM to your PATH.
+
+ You will also need ActivePerl from
+ http://www.activestate.com/activeperl/
+ in order to create the necessary makefiles and .asm files for building
+ OpenSSL.
+
+ The build process makes sure that no patented algorithms are included.
+ For now RC5, MDC2 and IDEA are excluded from the build. You may have
+ to manually remove $(OBJ_D)\i_*.obj from ms\nt.mak if the build process
+ complains about missing files or forbidden IDEA. Again the files provided
+ in the subversion repository are already fixed.
+
+ The MSVC project simply invokes PCBuild/build_ssl.py to perform
+ the build. This Python script locates and builds your OpenSSL
+ installation, then invokes a simple makefile to build the final .pyd.
+
+ build_ssl.py attempts to catch the most common errors (such as not
+ being able to find OpenSSL sources, or not being able to find a Perl
+ that works with OpenSSL) and give a reasonable error message.
+ If you have a problem that doesn't seem to be handled correctly
+ (eg, you know you have ActivePerl but we can't find it), please take
+ a peek at build_ssl.py and suggest patches. Note that build_ssl.py
+ should be able to be run directly from the command-line.
+
+ build_ssl.py/MSVC isn't clever enough to clean OpenSSL - you must do
+ this by hand.
+
+The subprojects above wrap external projects Python doesn't control, and as
+such, a little more work is required in order to download the relevant source
+files for each project before they can be built. The easiest way to do this
+is to use the `build.bat` script in this directory to build Python, and pass
+the '-e' switch to tell it to use get_externals.bat to fetch external sources
+and build Tcl/Tk and Tix. To use get_externals.bat, you'll need to have
+Subversion installed and svn.exe on your PATH. The script will fetch external
+library sources from http://svn.python.org/external and place them in
+..\externals (relative to this directory).
+
+Building for Itanium
+--------------------
+
+Official support for Itanium builds have been dropped from the build. Please
+contact us and provide patches if you are interested in Itanium builds.
+
+Building for AMD64
+------------------
+
+The build process for AMD64 / x64 is very similar to standard builds. You just
+have to set x64 as platform. In addition, the HOST_PYTHON environment variable
+must point to a Python interpreter (at least 2.4), to support cross-compilation.
+
+Building Python Using the free MS Toolkit Compiler
+--------------------------------------------------
+
+Microsoft has withdrawn the free MS Toolkit Compiler, so this can no longer
+be considered a supported option. Instead you can use the free VS C++ Express
+Edition.
+
+Profile Guided Optimization
+---------------------------
+
+The solution has two configurations for PGO. The PGInstrument
+configuration must be build first. The PGInstrument binaries are
+linked against a profiling library and contain extra debug
+information. The PGUpdate configuration takes the profiling data and
+generates optimized binaries.
+
+The build_pgo.bat script automates the creation of optimized binaries. It
+creates the PGI files, runs the unit test suite or PyBench with the PGI
+python and finally creates the optimized files.
+
+http://msdn.microsoft.com/en-us/library/e7k32f4k(VS.90).aspx
+
+Static library
+--------------
+
+The solution has no configuration for static libraries. However it is easy
+it build a static library instead of a DLL. You simply have to set the
+"Configuration Type" to "Static Library (.lib)" and alter the preprocessor
+macro "Py_ENABLE_SHARED" to "Py_NO_ENABLE_SHARED". You may also have to
+change the "Runtime Library" from "Multi-threaded DLL (/MD)" to
+"Multi-threaded (/MT)".
+
+Visual Studio properties
+------------------------
+
+The PCbuild solution makes heavy use of Visual Studio property files
+(*.vsprops). The properties can be viewed and altered in the Property
+Manager (View -> Other Windows -> Property Manager).
+
+ * debug (debug macro: _DEBUG)
+ * pginstrument (PGO)
+ * pgupdate (PGO)
+ +-- pginstrument
+ * pyd (python extension, release build)
+ +-- release
+ +-- pyproject
+ * pyd_d (python extension, debug build)
+ +-- debug
+ +-- pyproject
+ * pyproject (base settings for all projects, user macros like PyDllName)
+ * release (release macro: NDEBUG)
+ * x64 (AMD64 / x64 platform specific settings)
+
+The pyproject propertyfile defines _WIN32 and x64 defines _WIN64 and _M_X64
+although the macros are set by the compiler, too. The GUI doesn't always know
+about the macros and confuse the user with false information.
diff --git a/PC/VS9.0/release.vsprops b/PC/VS9.0/release.vsprops
new file mode 100644
index 0000000..6d6842d
--- /dev/null
+++ b/PC/VS9.0/release.vsprops
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="release"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ />
+ <UserMacro
+ Name="KillPythonExe"
+ Value="$(OutDir)\kill_python.exe"
+ />
+</VisualStudioPropertySheet>
diff --git a/PC/VS9.0/rmpyc.py b/PC/VS9.0/rmpyc.py
new file mode 100644
index 0000000..a1e75bb
--- /dev/null
+++ b/PC/VS9.0/rmpyc.py
@@ -0,0 +1,25 @@
+# Remove all the .pyc and .pyo files under ../Lib.
+
+
+def deltree(root):
+ import os
+ from os.path import join
+
+ npyc = npyo = 0
+ for root, dirs, files in os.walk(root):
+ for name in files:
+ delete = False
+ if name.endswith('.pyc'):
+ delete = True
+ npyc += 1
+ elif name.endswith('.pyo'):
+ delete = True
+ npyo += 1
+
+ if delete:
+ os.remove(join(root, name))
+
+ return npyc, npyo
+
+npyc, npyo = deltree("../Lib")
+print(npyc, ".pyc deleted,", npyo, ".pyo deleted")
diff --git a/PC/VS9.0/rt.bat b/PC/VS9.0/rt.bat
new file mode 100644
index 0000000..85e3d63
--- /dev/null
+++ b/PC/VS9.0/rt.bat
@@ -0,0 +1,60 @@
+@echo off
+rem Run Tests. Run the regression test suite.
+rem Usage: rt [-d] [-O] [-q] [-x64] regrtest_args
+rem -d Run Debug build (python_d.exe). Else release build.
+rem -O Run python.exe or python_d.exe (see -d) with -O.
+rem -q "quick" -- normally the tests are run twice, the first time
+rem after deleting all the .py[co] files reachable from Lib/.
+rem -q runs the tests just once, and without deleting .py[co] files.
+rem -x64 Run the 64-bit build of python (or python_d if -d was specified)
+rem from the 'amd64' dir instead of the 32-bit build in this dir.
+rem All leading instances of these switches are shifted off, and
+rem whatever remains (up to 9 arguments) is passed to regrtest.py.
+rem For example,
+rem rt -O -d -x test_thread
+rem runs
+rem python_d -O ../lib/test/regrtest.py -x test_thread
+rem twice, and
+rem rt -q -g test_binascii
+rem runs
+rem python_d ../lib/test/regrtest.py -g test_binascii
+rem to generate the expected-output file for binascii quickly.
+rem
+rem Confusing: if you want to pass a comma-separated list, like
+rem -u network,largefile
+rem then you have to quote it on the rt line, like
+rem rt -u "network,largefile"
+
+setlocal
+
+set pcbuild=%~dp0
+set prefix=%pcbuild%
+set suffix=
+set qmode=
+set dashO=
+set tcltk=tcltk
+
+:CheckOpts
+if "%1"=="-O" (set dashO=-O) & shift & goto CheckOpts
+if "%1"=="-q" (set qmode=yes) & shift & goto CheckOpts
+if "%1"=="-d" (set suffix=_d) & shift & goto CheckOpts
+if "%1"=="-x64" (set prefix=%prefix%amd64) & (set tcltk=tcltk64) & shift & goto CheckOpts
+
+PATH %PATH%;%pcbuild%..\..\externals\%tcltk%\bin
+set exe="%prefix%\python%suffix%"
+set cmd=%exe% %dashO% -Wd -3 -E -tt "%pcbuild%\..\..\Lib\test\regrtest.py" %1 %2 %3 %4 %5 %6 %7 %8 %9
+if defined qmode goto Qmode
+
+echo Deleting .pyc/.pyo files ...
+%exe% "%pcbuild%\rmpyc.py"
+
+echo on
+%cmd%
+@echo off
+
+echo About to run again without deleting .pyc/.pyo first:
+pause
+
+:Qmode
+echo on
+%cmd%
diff --git a/PC/VS9.0/select.vcproj b/PC/VS9.0/select.vcproj
new file mode 100644
index 0000000..a28c744
--- /dev/null
+++ b/PC/VS9.0/select.vcproj
@@ -0,0 +1,537 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="select"
+ ProjectGUID="{18CAE28C-B454-46C1-87A0-493D91D97F03}"
+ RootNamespace="select"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ IgnoreDefaultLibraryNames="libc"
+ BaseAddress="0x1D110000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ IgnoreDefaultLibraryNames="libc"
+ BaseAddress="0x1D110000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ IgnoreDefaultLibraryNames="libc"
+ BaseAddress="0x1D110000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ IgnoreDefaultLibraryNames="libc"
+ BaseAddress="0x1D110000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ IgnoreDefaultLibraryNames="libc"
+ BaseAddress="0x1D110000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ IgnoreDefaultLibraryNames="libc"
+ BaseAddress="0x1D110000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ IgnoreDefaultLibraryNames="libc"
+ BaseAddress="0x1D110000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ IgnoreDefaultLibraryNames="libc"
+ BaseAddress="0x1D110000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\selectmodule.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/sqlite3.vcproj b/PC/VS9.0/sqlite3.vcproj
new file mode 100644
index 0000000..70badf5
--- /dev/null
+++ b/PC/VS9.0/sqlite3.vcproj
@@ -0,0 +1,537 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="sqlite3"
+ ProjectGUID="{A1A295E5-463C-437F-81CA-1F32367685DA}"
+ RootNamespace="sqlite3"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\sqlite3.vsprops;.\debug.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(ProjectName)_d.dll"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\sqlite3.vsprops;.\debug.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(ProjectName)_d.dll"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\sqlite3.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(ProjectName).dll"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\sqlite3.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(ProjectName).dll"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\sqlite3.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="&quot;$(sqlite3Dir)&quot;"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(ProjectName).dll"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\sqlite3.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\sqlite3.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(ProjectName).dll"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\sqlite3.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Header Files"
+ >
+ <File
+ RelativePath="$(sqlite3Dir)\sqlite3.h"
+ >
+ </File>
+ <File
+ RelativePath="$(sqlite3Dir)\sqlite3ext.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="$(sqlite3Dir)\sqlite3.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/sqlite3.vsprops b/PC/VS9.0/sqlite3.vsprops
new file mode 100644
index 0000000..420ba6c
--- /dev/null
+++ b/PC/VS9.0/sqlite3.vsprops
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="sqlite3"
+ InheritedPropertySheets=".\pyproject.vsprops"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(sqlite3Dir)"
+ PreprocessorDefinitions="SQLITE_API=__declspec(dllexport)"
+ WarningLevel="1"
+ />
+</VisualStudioPropertySheet>
diff --git a/PC/VS9.0/unicodedata.vcproj b/PC/VS9.0/unicodedata.vcproj
new file mode 100644
index 0000000..db03de2
--- /dev/null
+++ b/PC/VS9.0/unicodedata.vcproj
@@ -0,0 +1,533 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="unicodedata"
+ ProjectGUID="{ECC7CEAC-A5E5-458E-BB9E-2413CC847881}"
+ RootNamespace="unicodedata"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D120000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D120000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D120000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D120000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D120000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D120000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D120000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ BaseAddress="0x1D120000"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Header Files"
+ >
+ <File
+ RelativePath="..\..\Modules\unicodedata_db.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\unicodename_db.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\Modules\unicodedata.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/vs9to8.py b/PC/VS9.0/vs9to8.py
new file mode 100644
index 0000000..a4e6801
--- /dev/null
+++ b/PC/VS9.0/vs9to8.py
@@ -0,0 +1,36 @@
+from __future__ import with_statement
+import os
+
+def vs9to8(src, dest):
+ for name in os.listdir(src):
+ path, ext = os.path.splitext(name)
+ if ext.lower() not in ('.sln', '.vcproj', '.vsprops'):
+ continue
+
+ filename = os.path.normpath(os.path.join(src, name))
+ destname = os.path.normpath(os.path.join(dest, name))
+ print("%s -> %s" % (filename, destname))
+
+ with open(filename, 'rU') as fin:
+ lines = fin.read()
+ lines = lines.replace('Version="9,00"', 'Version="8.00"')
+ lines = lines.replace('Version="9.00"', 'Version="8.00"')
+ lines = lines.replace('Format Version 10.00', 'Format Version 9.00')
+ lines = lines.replace('Visual Studio 2008', 'Visual Studio 2005')
+
+ lines = lines.replace('wininst-9.0', 'wininst-8.0')
+ lines = lines.replace('..\\', '..\\..\\')
+ lines = lines.replace('..\\..\\..\\..\\', '..\\..\\..\\')
+
+ # Bah. VS8.0 does not expand macros in file names.
+ # Replace them here.
+ lines = lines.replace('$(sqlite3Dir)', '..\\..\\..\\sqlite-3.6.21')
+ lines = lines.replace('$(bsddbDir)\\..\\..', '..\\..\\..\\db-4.7.25.0\\build_windows\\..')
+ lines = lines.replace('$(bsddbDir)', '..\\..\\..\\db-4.7.25.0\\build_windows')
+
+ with open(destname, 'wb') as fout:
+ lines = lines.replace("\n", "\r\n")
+ fout.write(lines)
+
+if __name__ == "__main__":
+ vs9to8(src=".", dest="../PC/VS8.0")
diff --git a/PC/VS9.0/w9xpopen.vcproj b/PC/VS9.0/w9xpopen.vcproj
new file mode 100644
index 0000000..d2d3ad9
--- /dev/null
+++ b/PC/VS9.0/w9xpopen.vcproj
@@ -0,0 +1,576 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="w9xpopen"
+ ProjectGUID="{E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}"
+ RootNamespace="w9xpopen"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\debug.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ GenerateDebugInformation="false"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ GenerateDebugInformation="false"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops;.\pginstrument.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ GenerateDebugInformation="false"
+ SubSystem="1"
+ ImportLibrary=""
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops;.\pginstrument.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ GenerateDebugInformation="false"
+ SubSystem="1"
+ ImportLibrary=""
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops;.\pgupdate.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ GenerateDebugInformation="false"
+ SubSystem="1"
+ ImportLibrary=""
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops;.\pgupdate.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ GenerateDebugInformation="false"
+ SubSystem="1"
+ ImportLibrary=""
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\PC\w9xpopen.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/winsound.vcproj b/PC/VS9.0/winsound.vcproj
new file mode 100644
index 0000000..b6e61f5
--- /dev/null
+++ b/PC/VS9.0/winsound.vcproj
@@ -0,0 +1,523 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="winsound"
+ ProjectGUID="{28B5D777-DDF2-4B6B-B34F-31D938813856}"
+ RootNamespace="winsound"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="winmm.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="winmm.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="winmm.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="winmm.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="winmm.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="winmm.lib"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="winmm.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="winmm.lib"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath="..\..\PC\winsound.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/VS9.0/x64.vsprops b/PC/VS9.0/x64.vsprops
new file mode 100644
index 0000000..0720084
--- /dev/null
+++ b/PC/VS9.0/x64.vsprops
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="amd64"
+ OutputDirectory="$(SolutionDir)\amd64\"
+ IntermediateDirectory="$(SolutionDir)$(PlatformName)-temp-$(ConfigurationName)\$(ProjectName)\"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/USECL:MS_OPTERON /GS-"
+ PreprocessorDefinitions="_WIN64;_M_X64"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ TargetMachine="17"
+ />
+ <UserMacro
+ Name="PythonExe"
+ Value="$(HOST_PYTHON)"
+ />
+</VisualStudioPropertySheet>
diff --git a/PC/WinMain.c b/PC/WinMain.c
index e439bed..2cdd0cb 100644
--- a/PC/WinMain.c
+++ b/PC/WinMain.c
@@ -5,12 +5,12 @@
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
-int WINAPI wWinMain(
+int WINAPI WinMain(
HINSTANCE hInstance, /* handle to current instance */
HINSTANCE hPrevInstance, /* handle to previous instance */
- LPWSTR lpCmdLine, /* pointer to command line */
+ LPSTR lpCmdLine, /* pointer to command line */
int nCmdShow /* show state of window */
)
{
- return Py_Main(__argc, __wargv);
+ return Py_Main(__argc, __argv);
}
diff --git a/PC/_msi.c b/PC/_msi.c
index accbe7a..3c46d83 100644
--- a/PC/_msi.c
+++ b/PC/_msi.c
@@ -1,5 +1,5 @@
/* Helper library for MSI creation with Python.
- * Copyright (C) 2005 Martin v. Löwis
+ * Copyright (C) 2005 Martin v. Löwis
* Licensed to PSF under a contributor agreement.
*/
@@ -18,7 +18,7 @@ static PyObject*
uuidcreate(PyObject* obj, PyObject*args)
{
UUID result;
- wchar_t *cresult;
+ char *cresult;
PyObject *oresult;
/* May return ok, local only, and no address.
@@ -30,13 +30,13 @@ uuidcreate(PyObject* obj, PyObject*args)
return NULL;
}
- if (UuidToStringW(&result, &cresult) == RPC_S_OUT_OF_MEMORY) {
+ if (UuidToString(&result, &cresult) == RPC_S_OUT_OF_MEMORY) {
PyErr_SetString(PyExc_MemoryError, "out of memory in uuidgen");
return NULL;
}
- oresult = PyUnicode_FromWideChar(cresult, wcslen(cresult));
- RpcStringFreeW(&cresult);
+ oresult = PyString_FromString(cresult);
+ RpcStringFree(&cresult);
return oresult;
}
@@ -55,7 +55,7 @@ static FNFCIFREE(cb_free)
static FNFCIOPEN(cb_open)
{
- int result = _open(pszFile, oflag | O_NOINHERIT, pmode);
+ int result = _open(pszFile, oflag, pmode);
if (result == -1)
*err = errno;
return result;
@@ -63,7 +63,7 @@ static FNFCIOPEN(cb_open)
static FNFCIREAD(cb_read)
{
- UINT result = (UINT)_read((int)hf, memory, cb);
+ UINT result = (UINT)_read(hf, memory, cb);
if (result != cb)
*err = errno;
return result;
@@ -71,7 +71,7 @@ static FNFCIREAD(cb_read)
static FNFCIWRITE(cb_write)
{
- UINT result = (UINT)_write((int)hf, memory, cb);
+ UINT result = (UINT)_write(hf, memory, cb);
if (result != cb)
*err = errno;
return result;
@@ -79,7 +79,7 @@ static FNFCIWRITE(cb_write)
static FNFCICLOSE(cb_close)
{
- int result = _close((int)hf);
+ int result = _close(hf);
if (result != 0)
*err = errno;
return result;
@@ -87,7 +87,7 @@ static FNFCICLOSE(cb_close)
static FNFCISEEK(cb_seek)
{
- long result = (long)_lseek((int)hf, dist, seektype);
+ long result = (long)_lseek(hf, dist, seektype);
if (result == -1)
*err = errno;
return result;
@@ -122,9 +122,7 @@ static FNFCIGETTEMPFILE(cb_gettempfile)
static FNFCISTATUS(cb_status)
{
if (pv) {
- _Py_IDENTIFIER(status);
-
- PyObject *result = _PyObject_CallMethodId(pv, &PyId_status, "iii", typeStatus, cb1, cb2);
+ PyObject *result = PyObject_CallMethod(pv, "status", "iii", typeStatus, cb1, cb2);
if (result == NULL)
return -1;
Py_DECREF(result);
@@ -135,19 +133,17 @@ static FNFCISTATUS(cb_status)
static FNFCIGETNEXTCABINET(cb_getnextcabinet)
{
if (pv) {
- _Py_IDENTIFIER(getnextcabinet);
-
- PyObject *result = _PyObject_CallMethodId(pv, &PyId_getnextcabinet, "i", pccab->iCab);
+ PyObject *result = PyObject_CallMethod(pv, "getnextcabinet", "i", pccab->iCab);
if (result == NULL)
return -1;
- if (!PyBytes_Check(result)) {
+ if (!PyString_Check(result)) {
PyErr_Format(PyExc_TypeError,
"Incorrect return type %s from getnextcabinet",
result->ob_type->tp_name);
Py_DECREF(result);
return FALSE;
}
- strncpy(pccab->szCab, PyBytes_AsString(result), sizeof(pccab->szCab));
+ strncpy(pccab->szCab, PyString_AsString(result), sizeof(pccab->szCab));
return TRUE;
}
return FALSE;
@@ -179,7 +175,7 @@ static FNFCIGETOPENINFO(cb_getopeninfo)
CloseHandle(handle);
- return _open(pszName, _O_RDONLY | _O_BINARY | O_NOINHERIT);
+ return _open(pszName, _O_RDONLY | _O_BINARY);
}
static PyObject* fcicreate(PyObject* obj, PyObject* args)
@@ -243,13 +239,8 @@ static PyObject* fcicreate(PyObject* obj, PyObject* args)
for (i=0; i < PyList_GET_SIZE(files); i++) {
PyObject *item = PyList_GET_ITEM(files, i);
char *filename, *cabname;
-
- if (!PyArg_ParseTuple(item, "ss", &filename, &cabname)) {
- PyErr_SetString(PyExc_TypeError, "FCICreate expects a list of tuples containing two strings");
- FCIDestroy(hfci);
- return NULL;
- }
-
+ if (!PyArg_ParseTuple(item, "ss", &filename, &cabname))
+ goto err;
if (!FCIAddFile(hfci, filename, cabname, FALSE,
cb_getnextcabinet, cb_status, cb_getopeninfo,
tcompTYPE_MSZIP))
@@ -262,13 +253,10 @@ static PyObject* fcicreate(PyObject* obj, PyObject* args)
if (!FCIDestroy(hfci))
goto err;
- Py_RETURN_NONE;
+ Py_INCREF(Py_None);
+ return Py_None;
err:
- if(erf.fError)
- PyErr_Format(PyExc_ValueError, "FCI error %d", erf.erfOper); /* XXX better error type */
- else
- PyErr_SetString(PyExc_ValueError, "FCI general error");
-
+ PyErr_Format(PyExc_ValueError, "FCI error %d", erf.erfOper); /* XXX better error type */
FCIDestroy(hfci);
return NULL;
}
@@ -287,6 +275,15 @@ msiobj_dealloc(msiobj* msidb)
}
static PyObject*
+msiobj_close(msiobj* msidb, PyObject *args)
+{
+ MsiCloseHandle(msidb->h);
+ msidb->h = 0;
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+static PyObject*
msierror(int status)
{
int code;
@@ -315,12 +312,6 @@ msierror(int status)
case ERROR_INVALID_PARAMETER:
PyErr_SetString(MSIError, "invalid parameter");
return NULL;
- case ERROR_OPEN_FAILED:
- PyErr_SetString(MSIError, "open failed");
- return NULL;
- case ERROR_CREATE_FAILED:
- PyErr_SetString(MSIError, "create failed");
- return NULL;
default:
PyErr_Format(MSIError, "unknown error %x", status);
return NULL;
@@ -344,23 +335,12 @@ msierror(int status)
return NULL;
}
-static PyObject*
-msidb_close(msiobj* msidb, PyObject *args)
-{
- int status;
- if ((status = MsiCloseHandle(msidb->h)) != ERROR_SUCCESS) {
- return msierror(status);
- }
- msidb->h = 0;
- Py_RETURN_NONE;
-}
-
/*************************** Record objects **********************/
static PyObject*
record_getfieldcount(msiobj* record, PyObject* args)
{
- return PyLong_FromLong(MsiRecordGetFieldCount(record->h));
+ return PyInt_FromLong(MsiRecordGetFieldCount(record->h));
}
static PyObject*
@@ -376,7 +356,7 @@ record_getinteger(msiobj* record, PyObject* args)
PyErr_SetString(MSIError, "could not convert record field to integer");
return NULL;
}
- return PyLong_FromLong((long) status);
+ return PyInt_FromLong((long) status);
}
static PyObject*
@@ -384,23 +364,23 @@ record_getstring(msiobj* record, PyObject* args)
{
unsigned int field;
unsigned int status;
- WCHAR buf[2000];
- WCHAR *res = buf;
+ char buf[2000];
+ char *res = buf;
DWORD size = sizeof(buf);
PyObject* string;
if (!PyArg_ParseTuple(args, "I:GetString", &field))
return NULL;
- status = MsiRecordGetStringW(record->h, field, res, &size);
+ status = MsiRecordGetString(record->h, field, res, &size);
if (status == ERROR_MORE_DATA) {
- res = (WCHAR*) malloc((size + 1)*sizeof(WCHAR));
+ res = (char*) malloc(size + 1);
if (res == NULL)
return PyErr_NoMemory();
- status = MsiRecordGetStringW(record->h, field, res, &size);
+ status = MsiRecordGetString(record->h, field, res, &size);
}
if (status != ERROR_SUCCESS)
return msierror((int) status);
- string = PyUnicode_FromWideChar(res, size);
+ string = PyString_FromString(res);
if (buf != res)
free(res);
return string;
@@ -413,7 +393,8 @@ record_cleardata(msiobj* record, PyObject *args)
if (status != ERROR_SUCCESS)
return msierror(status);
- Py_RETURN_NONE;
+ Py_INCREF(Py_None);
+ return Py_None;
}
static PyObject*
@@ -421,15 +402,16 @@ record_setstring(msiobj* record, PyObject *args)
{
int status;
int field;
- wchar_t *data;
+ char *data;
- if (!PyArg_ParseTuple(args, "iu:SetString", &field, &data))
+ if (!PyArg_ParseTuple(args, "is:SetString", &field, &data))
return NULL;
- if ((status = MsiRecordSetStringW(record->h, field, data)) != ERROR_SUCCESS)
+ if ((status = MsiRecordSetString(record->h, field, data)) != ERROR_SUCCESS)
return msierror(status);
- Py_RETURN_NONE;
+ Py_INCREF(Py_None);
+ return Py_None;
}
static PyObject*
@@ -437,15 +419,16 @@ record_setstream(msiobj* record, PyObject *args)
{
int status;
int field;
- wchar_t *data;
+ char *data;
- if (!PyArg_ParseTuple(args, "iu:SetStream", &field, &data))
+ if (!PyArg_ParseTuple(args, "is:SetStream", &field, &data))
return NULL;
- if ((status = MsiRecordSetStreamW(record->h, field, data)) != ERROR_SUCCESS)
+ if ((status = MsiRecordSetStream(record->h, field, data)) != ERROR_SUCCESS)
return msierror(status);
- Py_RETURN_NONE;
+ Py_INCREF(Py_None);
+ return Py_None;
}
static PyObject*
@@ -461,7 +444,8 @@ record_setinteger(msiobj* record, PyObject *args)
if ((status = MsiRecordSetInteger(record->h, field, data)) != ERROR_SUCCESS)
return msierror(status);
- Py_RETURN_NONE;
+ Py_INCREF(Py_None);
+ return Py_None;
}
@@ -491,10 +475,10 @@ static PyTypeObject record_Type = {
0, /*tp_itemsize*/
/* methods */
(destructor)msiobj_dealloc, /*tp_dealloc*/
- 0, /*tp_vectorcall_offset*/
+ 0, /*tp_print*/
0, /*tp_getattr*/
0, /*tp_setattr*/
- 0, /*tp_as_async*/
+ 0, /*tp_compare*/
0, /*tp_repr*/
0, /*tp_as_number*/
0, /*tp_as_sequence*/
@@ -571,9 +555,6 @@ summary_getproperty(msiobj* si, PyObject *args)
status = MsiSummaryInfoGetProperty(si->h, field, &type, &ival,
&fval, sval, &ssize);
}
- if (status != ERROR_SUCCESS) {
- return msierror(status);
- }
switch(type) {
case VT_I2:
@@ -611,7 +592,7 @@ summary_getpropertycount(msiobj* si, PyObject *args)
if (status != ERROR_SUCCESS)
return msierror(status);
- return PyLong_FromLong(result);
+ return PyInt_FromLong(result);
}
static PyObject*
@@ -624,20 +605,12 @@ summary_setproperty(msiobj* si, PyObject *args)
if (!PyArg_ParseTuple(args, "iO:SetProperty", &field, &data))
return NULL;
- if (PyUnicode_Check(data)) {
- const WCHAR *value = _PyUnicode_AsUnicode(data);
- if (value == NULL) {
- return NULL;
- }
- status = MsiSummaryInfoSetPropertyW(si->h, field, VT_LPSTR,
- 0, NULL, value);
- } else if (PyLong_CheckExact(data)) {
- long value = PyLong_AsLong(data);
- if (value == -1 && PyErr_Occurred()) {
- return NULL;
- }
+ if (PyString_Check(data)) {
+ status = MsiSummaryInfoSetProperty(si->h, field, VT_LPSTR,
+ 0, NULL, PyString_AsString(data));
+ } else if (PyInt_Check(data)) {
status = MsiSummaryInfoSetProperty(si->h, field, VT_I4,
- value, NULL, NULL);
+ PyInt_AsLong(data), NULL, NULL);
} else {
PyErr_SetString(PyExc_TypeError, "unsupported type");
return NULL;
@@ -646,7 +619,8 @@ summary_setproperty(msiobj* si, PyObject *args)
if (status != ERROR_SUCCESS)
return msierror(status);
- Py_RETURN_NONE;
+ Py_INCREF(Py_None);
+ return Py_None;
}
@@ -658,7 +632,8 @@ summary_persist(msiobj* si, PyObject *args)
status = MsiSummaryInfoPersist(si->h);
if (status != ERROR_SUCCESS)
return msierror(status);
- Py_RETURN_NONE;
+ Py_INCREF(Py_None);
+ return Py_None;
}
static PyMethodDef summary_methods[] = {
@@ -680,10 +655,10 @@ static PyTypeObject summary_Type = {
0, /*tp_itemsize*/
/* methods */
(destructor)msiobj_dealloc, /*tp_dealloc*/
- 0, /*tp_vectorcall_offset*/
+ 0, /*tp_print*/
0, /*tp_getattr*/
0, /*tp_setattr*/
- 0, /*tp_as_async*/
+ 0, /*tp_compare*/
0, /*tp_repr*/
0, /*tp_as_number*/
0, /*tp_as_sequence*/
@@ -741,7 +716,8 @@ view_execute(msiobj *view, PyObject*args)
if (status != ERROR_SUCCESS)
return msierror(status);
- Py_RETURN_NONE;
+ Py_INCREF(Py_None);
+ return Py_None;
}
static PyObject*
@@ -750,12 +726,8 @@ view_fetch(msiobj *view, PyObject*args)
int status;
MSIHANDLE result;
- status = MsiViewFetch(view->h, &result);
- if (status == ERROR_NO_MORE_ITEMS) {
- Py_RETURN_NONE;
- } else if (status != ERROR_SUCCESS) {
+ if ((status = MsiViewFetch(view->h, &result)) != ERROR_SUCCESS)
return msierror(status);
- }
return record_new(result);
}
@@ -794,7 +766,8 @@ view_modify(msiobj *view, PyObject *args)
if ((status = MsiViewModify(view->h, kind, ((msiobj*)data)->h)) != ERROR_SUCCESS)
return msierror(status);
- Py_RETURN_NONE;
+ Py_INCREF(Py_None);
+ return Py_None;
}
static PyObject*
@@ -805,7 +778,8 @@ view_close(msiobj *view, PyObject*args)
if ((status = MsiViewClose(view->h)) != ERROR_SUCCESS)
return msierror(status);
- Py_RETURN_NONE;
+ Py_INCREF(Py_None);
+ return Py_None;
}
static PyMethodDef view_methods[] = {
@@ -829,10 +803,10 @@ static PyTypeObject msiview_Type = {
0, /*tp_itemsize*/
/* methods */
(destructor)msiobj_dealloc, /*tp_dealloc*/
- 0, /*tp_vectorcall_offset*/
+ 0, /*tp_print*/
0, /*tp_getattr*/
0, /*tp_setattr*/
- 0, /*tp_as_async*/
+ 0, /*tp_compare*/
0, /*tp_repr*/
0, /*tp_as_number*/
0, /*tp_as_sequence*/
@@ -900,7 +874,8 @@ msidb_commit(msiobj *msidb, PyObject *args)
if ((status = MsiDatabaseCommit(msidb->h)) != ERROR_SUCCESS)
return msierror(status);
- Py_RETURN_NONE;
+ Py_INCREF(Py_None);
+ return Py_None;
}
static PyObject*
@@ -935,8 +910,6 @@ static PyMethodDef db_methods[] = {
PyDoc_STR("Commit() -> None\nWraps MsiDatabaseCommit")},
{ "GetSummaryInformation", (PyCFunction)msidb_getsummaryinformation, METH_VARARGS,
PyDoc_STR("GetSummaryInformation(updateCount) -> viewobj\nWraps MsiGetSummaryInformation")},
- { "Close", (PyCFunction)msidb_close, METH_NOARGS,
- PyDoc_STR("Close() -> None\nWraps MsiCloseHandle")},
{ NULL, NULL }
};
@@ -947,10 +920,10 @@ static PyTypeObject msidb_Type = {
0, /*tp_itemsize*/
/* methods */
(destructor)msiobj_dealloc, /*tp_dealloc*/
- 0, /*tp_vectorcall_offset*/
+ 0, /*tp_print*/
0, /*tp_getattr*/
0, /*tp_setattr*/
- 0, /*tp_as_async*/
+ 0, /*tp_compare*/
0, /*tp_repr*/
0, /*tp_as_number*/
0, /*tp_as_sequence*/
@@ -985,8 +958,8 @@ static PyTypeObject msidb_Type = {
};
#define Py_NOT_PERSIST(x, flag) \
- (x != (SIZE_T)(flag) && \
- x != ((SIZE_T)(flag) | MSIDBOPEN_PATCHFILE))
+ (x != (int)(flag) && \
+ x != ((int)(flag) | MSIDBOPEN_PATCHFILE))
#define Py_INVALID_PERSIST(x) \
(Py_NOT_PERSIST(x, MSIDBOPEN_READONLY) && \
@@ -1009,7 +982,7 @@ static PyObject* msiopendb(PyObject *obj, PyObject *args)
behavior. */
if (Py_INVALID_PERSIST(persist))
return msierror(ERROR_INVALID_PARAMETER);
- status = MsiOpenDatabase(path, (LPCSTR)(SIZE_T)persist, &h);
+ status = MsiOpenDatabase(path, (LPCSTR)persist, &h);
if (status != ERROR_SUCCESS)
return msierror(status);
@@ -1053,73 +1026,59 @@ static PyMethodDef msi_methods[] = {
static char msi_doc[] = "Documentation";
-
-static struct PyModuleDef _msimodule = {
- PyModuleDef_HEAD_INIT,
- "_msi",
- msi_doc,
- -1,
- msi_methods,
- NULL,
- NULL,
- NULL,
- NULL
-};
-
PyMODINIT_FUNC
-PyInit__msi(void)
+init_msi(void)
{
PyObject *m;
- m = PyModule_Create(&_msimodule);
+ m = Py_InitModule3("_msi", msi_methods, msi_doc);
if (m == NULL)
- return NULL;
-
- PyModule_AddIntConstant(m, "MSIDBOPEN_CREATEDIRECT", (long)(SIZE_T)MSIDBOPEN_CREATEDIRECT);
- PyModule_AddIntConstant(m, "MSIDBOPEN_CREATE", (long)(SIZE_T)MSIDBOPEN_CREATE);
- PyModule_AddIntConstant(m, "MSIDBOPEN_DIRECT", (long)(SIZE_T)MSIDBOPEN_DIRECT);
- PyModule_AddIntConstant(m, "MSIDBOPEN_READONLY", (long)(SIZE_T)MSIDBOPEN_READONLY);
- PyModule_AddIntConstant(m, "MSIDBOPEN_TRANSACT", (long)(SIZE_T)MSIDBOPEN_TRANSACT);
- PyModule_AddIntConstant(m, "MSIDBOPEN_PATCHFILE", (long)(SIZE_T)MSIDBOPEN_PATCHFILE);
-
- PyModule_AddIntMacro(m, MSICOLINFO_NAMES);
- PyModule_AddIntMacro(m, MSICOLINFO_TYPES);
-
- PyModule_AddIntMacro(m, MSIMODIFY_SEEK);
- PyModule_AddIntMacro(m, MSIMODIFY_REFRESH);
- PyModule_AddIntMacro(m, MSIMODIFY_INSERT);
- PyModule_AddIntMacro(m, MSIMODIFY_UPDATE);
- PyModule_AddIntMacro(m, MSIMODIFY_ASSIGN);
- PyModule_AddIntMacro(m, MSIMODIFY_REPLACE);
- PyModule_AddIntMacro(m, MSIMODIFY_MERGE);
- PyModule_AddIntMacro(m, MSIMODIFY_DELETE);
- PyModule_AddIntMacro(m, MSIMODIFY_INSERT_TEMPORARY);
- PyModule_AddIntMacro(m, MSIMODIFY_VALIDATE);
- PyModule_AddIntMacro(m, MSIMODIFY_VALIDATE_NEW);
- PyModule_AddIntMacro(m, MSIMODIFY_VALIDATE_FIELD);
- PyModule_AddIntMacro(m, MSIMODIFY_VALIDATE_DELETE);
-
- PyModule_AddIntMacro(m, PID_CODEPAGE);
- PyModule_AddIntMacro(m, PID_TITLE);
- PyModule_AddIntMacro(m, PID_SUBJECT);
- PyModule_AddIntMacro(m, PID_AUTHOR);
- PyModule_AddIntMacro(m, PID_KEYWORDS);
- PyModule_AddIntMacro(m, PID_COMMENTS);
- PyModule_AddIntMacro(m, PID_TEMPLATE);
- PyModule_AddIntMacro(m, PID_LASTAUTHOR);
- PyModule_AddIntMacro(m, PID_REVNUMBER);
- PyModule_AddIntMacro(m, PID_LASTPRINTED);
- PyModule_AddIntMacro(m, PID_CREATE_DTM);
- PyModule_AddIntMacro(m, PID_LASTSAVE_DTM);
- PyModule_AddIntMacro(m, PID_PAGECOUNT);
- PyModule_AddIntMacro(m, PID_WORDCOUNT);
- PyModule_AddIntMacro(m, PID_CHARCOUNT);
- PyModule_AddIntMacro(m, PID_APPNAME);
- PyModule_AddIntMacro(m, PID_SECURITY);
+ return;
+
+ PyModule_AddIntConstant(m, "MSIDBOPEN_CREATEDIRECT", (int)MSIDBOPEN_CREATEDIRECT);
+ PyModule_AddIntConstant(m, "MSIDBOPEN_CREATE", (int)MSIDBOPEN_CREATE);
+ PyModule_AddIntConstant(m, "MSIDBOPEN_DIRECT", (int)MSIDBOPEN_DIRECT);
+ PyModule_AddIntConstant(m, "MSIDBOPEN_READONLY", (int)MSIDBOPEN_READONLY);
+ PyModule_AddIntConstant(m, "MSIDBOPEN_TRANSACT", (int)MSIDBOPEN_TRANSACT);
+ PyModule_AddIntConstant(m, "MSIDBOPEN_PATCHFILE", (int)MSIDBOPEN_PATCHFILE);
+
+ PyModule_AddIntConstant(m, "MSICOLINFO_NAMES", MSICOLINFO_NAMES);
+ PyModule_AddIntConstant(m, "MSICOLINFO_TYPES", MSICOLINFO_TYPES);
+
+ PyModule_AddIntConstant(m, "MSIMODIFY_SEEK", MSIMODIFY_SEEK);
+ PyModule_AddIntConstant(m, "MSIMODIFY_REFRESH", MSIMODIFY_REFRESH);
+ PyModule_AddIntConstant(m, "MSIMODIFY_INSERT", MSIMODIFY_INSERT);
+ PyModule_AddIntConstant(m, "MSIMODIFY_UPDATE", MSIMODIFY_UPDATE);
+ PyModule_AddIntConstant(m, "MSIMODIFY_ASSIGN", MSIMODIFY_ASSIGN);
+ PyModule_AddIntConstant(m, "MSIMODIFY_REPLACE", MSIMODIFY_REPLACE);
+ PyModule_AddIntConstant(m, "MSIMODIFY_MERGE", MSIMODIFY_MERGE);
+ PyModule_AddIntConstant(m, "MSIMODIFY_DELETE", MSIMODIFY_DELETE);
+ PyModule_AddIntConstant(m, "MSIMODIFY_INSERT_TEMPORARY", MSIMODIFY_INSERT_TEMPORARY);
+ PyModule_AddIntConstant(m, "MSIMODIFY_VALIDATE", MSIMODIFY_VALIDATE);
+ PyModule_AddIntConstant(m, "MSIMODIFY_VALIDATE_NEW", MSIMODIFY_VALIDATE_NEW);
+ PyModule_AddIntConstant(m, "MSIMODIFY_VALIDATE_FIELD", MSIMODIFY_VALIDATE_FIELD);
+ PyModule_AddIntConstant(m, "MSIMODIFY_VALIDATE_DELETE", MSIMODIFY_VALIDATE_DELETE);
+
+ PyModule_AddIntConstant(m, "PID_CODEPAGE", PID_CODEPAGE);
+ PyModule_AddIntConstant(m, "PID_TITLE", PID_TITLE);
+ PyModule_AddIntConstant(m, "PID_SUBJECT", PID_SUBJECT);
+ PyModule_AddIntConstant(m, "PID_AUTHOR", PID_AUTHOR);
+ PyModule_AddIntConstant(m, "PID_KEYWORDS", PID_KEYWORDS);
+ PyModule_AddIntConstant(m, "PID_COMMENTS", PID_COMMENTS);
+ PyModule_AddIntConstant(m, "PID_TEMPLATE", PID_TEMPLATE);
+ PyModule_AddIntConstant(m, "PID_LASTAUTHOR", PID_LASTAUTHOR);
+ PyModule_AddIntConstant(m, "PID_REVNUMBER", PID_REVNUMBER);
+ PyModule_AddIntConstant(m, "PID_LASTPRINTED", PID_LASTPRINTED);
+ PyModule_AddIntConstant(m, "PID_CREATE_DTM", PID_CREATE_DTM);
+ PyModule_AddIntConstant(m, "PID_LASTSAVE_DTM", PID_LASTSAVE_DTM);
+ PyModule_AddIntConstant(m, "PID_PAGECOUNT", PID_PAGECOUNT);
+ PyModule_AddIntConstant(m, "PID_WORDCOUNT", PID_WORDCOUNT);
+ PyModule_AddIntConstant(m, "PID_CHARCOUNT", PID_CHARCOUNT);
+ PyModule_AddIntConstant(m, "PID_APPNAME", PID_APPNAME);
+ PyModule_AddIntConstant(m, "PID_SECURITY", PID_SECURITY);
MSIError = PyErr_NewException ("_msi.MSIError", NULL, NULL);
if (!MSIError)
- return NULL;
+ return;
PyModule_AddObject(m, "MSIError", MSIError);
- return m;
}
diff --git a/PC/_subprocess.c b/PC/_subprocess.c
new file mode 100644
index 0000000..66940ff
--- /dev/null
+++ b/PC/_subprocess.c
@@ -0,0 +1,691 @@
+/*
+ * support routines for subprocess module
+ *
+ * Currently, this extension module is only required when using the
+ * subprocess module on Windows, but in the future, stubs for other
+ * platforms might be added here as well.
+ *
+ * Copyright (c) 2004 by Fredrik Lundh <fredrik@pythonware.com>
+ * Copyright (c) 2004 by Secret Labs AB, http://www.pythonware.com
+ * Copyright (c) 2004 by Peter Astrand <astrand@lysator.liu.se>
+ *
+ * By obtaining, using, and/or copying this software and/or its
+ * associated documentation, you agree that you have read, understood,
+ * and will comply with the following terms and conditions:
+ *
+ * Permission to use, copy, modify, and distribute this software and
+ * its associated documentation for any purpose and without fee is
+ * hereby granted, provided that the above copyright notice appears in
+ * all copies, and that both that copyright notice and this permission
+ * notice appear in supporting documentation, and that the name of the
+ * authors not be used in advertising or publicity pertaining to
+ * distribution of the software without specific, written prior
+ * permission.
+ *
+ * THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
+ * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+ * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+ * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ */
+
+/* Licensed to PSF under a Contributor Agreement. */
+/* See http://www.python.org/2.4/license for licensing details. */
+
+/* TODO: handle unicode command lines? */
+/* TODO: handle unicode environment? */
+
+#include "Python.h"
+
+#define WINDOWS_LEAN_AND_MEAN
+#include "windows.h"
+
+/* -------------------------------------------------------------------- */
+/* handle wrapper. note that this library uses integers when passing
+ handles to a function, and handle wrappers when returning handles.
+ the wrapper is used to provide Detach and Close methods */
+
+typedef struct {
+ PyObject_HEAD
+ HANDLE handle;
+} sp_handle_object;
+
+staticforward PyTypeObject sp_handle_type;
+
+static PyObject*
+sp_handle_new(HANDLE handle)
+{
+ sp_handle_object* self;
+
+ self = PyObject_NEW(sp_handle_object, &sp_handle_type);
+ if (self == NULL)
+ return NULL;
+
+ self->handle = handle;
+
+ return (PyObject*) self;
+}
+
+#if defined(MS_WIN32) && !defined(MS_WIN64)
+#define HANDLE_TO_PYNUM(handle) PyInt_FromLong((long) handle)
+#define PY_HANDLE_PARAM "l"
+#else
+#define HANDLE_TO_PYNUM(handle) PyLong_FromLongLong((long long) handle)
+#define PY_HANDLE_PARAM "L"
+#endif
+
+static PyObject*
+sp_handle_detach(sp_handle_object* self, PyObject* args)
+{
+ HANDLE handle;
+
+ if (! PyArg_ParseTuple(args, ":Detach"))
+ return NULL;
+
+ handle = self->handle;
+
+ self->handle = INVALID_HANDLE_VALUE;
+
+ /* note: return the current handle, as an integer */
+ return HANDLE_TO_PYNUM(handle);
+}
+
+static PyObject*
+sp_handle_close(sp_handle_object* self, PyObject* args)
+{
+ if (! PyArg_ParseTuple(args, ":Close"))
+ return NULL;
+
+ if (self->handle != INVALID_HANDLE_VALUE) {
+ CloseHandle(self->handle);
+ self->handle = INVALID_HANDLE_VALUE;
+ }
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+static void
+sp_handle_dealloc(sp_handle_object* self)
+{
+ if (self->handle != INVALID_HANDLE_VALUE)
+ CloseHandle(self->handle);
+ PyObject_FREE(self);
+}
+
+static PyMethodDef sp_handle_methods[] = {
+ {"Detach", (PyCFunction) sp_handle_detach, METH_VARARGS},
+ {"Close", (PyCFunction) sp_handle_close, METH_VARARGS},
+ {NULL, NULL}
+};
+
+static PyObject*
+sp_handle_getattr(sp_handle_object* self, char* name)
+{
+ return Py_FindMethod(sp_handle_methods, (PyObject*) self, name);
+}
+
+static PyObject*
+sp_handle_as_int(sp_handle_object* self)
+{
+ return HANDLE_TO_PYNUM(self->handle);
+}
+
+static PyNumberMethods sp_handle_as_number;
+
+statichere PyTypeObject sp_handle_type = {
+ PyObject_HEAD_INIT(NULL)
+ 0, /*ob_size*/
+ "_subprocess_handle", sizeof(sp_handle_object), 0,
+ (destructor) sp_handle_dealloc, /*tp_dealloc*/
+ 0, /*tp_print*/
+ (getattrfunc) sp_handle_getattr,/*tp_getattr*/
+ 0, /*tp_setattr*/
+ 0, /*tp_compare*/
+ 0, /*tp_repr*/
+ &sp_handle_as_number, /*tp_as_number */
+ 0, /*tp_as_sequence */
+ 0, /*tp_as_mapping */
+ 0 /*tp_hash*/
+};
+
+/* -------------------------------------------------------------------- */
+/* windows API functions */
+
+PyDoc_STRVAR(GetStdHandle_doc,
+"GetStdHandle(handle) -> integer\n\
+\n\
+Return a handle to the specified standard device\n\
+(STD_INPUT_HANDLE, STD_OUTPUT_HANDLE, STD_ERROR_HANDLE).\n\
+The integer associated with the handle object is returned.");
+
+static PyObject *
+sp_GetStdHandle(PyObject* self, PyObject* args)
+{
+ HANDLE handle;
+ int std_handle;
+
+ if (! PyArg_ParseTuple(args, "i:GetStdHandle", &std_handle))
+ return NULL;
+
+ Py_BEGIN_ALLOW_THREADS
+ handle = GetStdHandle((DWORD) std_handle);
+ Py_END_ALLOW_THREADS
+
+ if (handle == INVALID_HANDLE_VALUE)
+ return PyErr_SetFromWindowsErr(GetLastError());
+
+ if (! handle) {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+
+ /* note: returns integer, not handle object */
+ return HANDLE_TO_PYNUM(handle);
+}
+
+PyDoc_STRVAR(GetCurrentProcess_doc,
+"GetCurrentProcess() -> handle\n\
+\n\
+Return a handle object for the current process.");
+
+static PyObject *
+sp_GetCurrentProcess(PyObject* self, PyObject* args)
+{
+ if (! PyArg_ParseTuple(args, ":GetCurrentProcess"))
+ return NULL;
+
+ return sp_handle_new(GetCurrentProcess());
+}
+
+PyDoc_STRVAR(DuplicateHandle_doc,
+"DuplicateHandle(source_proc_handle, source_handle,\n\
+ target_proc_handle, target_handle, access,\n\
+ inherit[, options]) -> handle\n\
+\n\
+Return a duplicate handle object.\n\
+\n\
+The duplicate handle refers to the same object as the original\n\
+handle. Therefore, any changes to the object are reflected\n\
+through both handles.");
+
+static PyObject *
+sp_DuplicateHandle(PyObject* self, PyObject* args)
+{
+ HANDLE target_handle;
+ BOOL result;
+
+ HANDLE source_process_handle;
+ HANDLE source_handle;
+ HANDLE target_process_handle;
+ int desired_access;
+ int inherit_handle;
+ int options = 0;
+
+ if (! PyArg_ParseTuple(args,
+ PY_HANDLE_PARAM PY_HANDLE_PARAM PY_HANDLE_PARAM
+ "ii|i:DuplicateHandle",
+ &source_process_handle,
+ &source_handle,
+ &target_process_handle,
+ &desired_access,
+ &inherit_handle,
+ &options))
+ return NULL;
+
+ Py_BEGIN_ALLOW_THREADS
+ result = DuplicateHandle(
+ source_process_handle,
+ source_handle,
+ target_process_handle,
+ &target_handle,
+ desired_access,
+ inherit_handle,
+ options
+ );
+ Py_END_ALLOW_THREADS
+
+ if (! result)
+ return PyErr_SetFromWindowsErr(GetLastError());
+
+ return sp_handle_new(target_handle);
+}
+
+PyDoc_STRVAR(CreatePipe_doc,
+"CreatePipe(pipe_attrs, size) -> (read_handle, write_handle)\n\
+\n\
+Create an anonymous pipe, and return handles to the read and\n\
+write ends of the pipe.\n\
+\n\
+pipe_attrs is ignored internally and can be None.");
+
+static PyObject *
+sp_CreatePipe(PyObject* self, PyObject* args)
+{
+ HANDLE read_pipe;
+ HANDLE write_pipe;
+ BOOL result;
+
+ PyObject* pipe_attributes; /* ignored */
+ int size;
+
+ if (! PyArg_ParseTuple(args, "Oi:CreatePipe", &pipe_attributes, &size))
+ return NULL;
+
+ Py_BEGIN_ALLOW_THREADS
+ result = CreatePipe(&read_pipe, &write_pipe, NULL, size);
+ Py_END_ALLOW_THREADS
+
+ if (! result)
+ return PyErr_SetFromWindowsErr(GetLastError());
+
+ return Py_BuildValue(
+ "NN", sp_handle_new(read_pipe), sp_handle_new(write_pipe));
+}
+
+/* helpers for createprocess */
+
+static int
+getint(PyObject* obj, char* name)
+{
+ PyObject* value;
+ int ret;
+
+ value = PyObject_GetAttrString(obj, name);
+ if (! value) {
+ PyErr_Clear(); /* FIXME: propagate error? */
+ return 0;
+ }
+ ret = (int) PyInt_AsLong(value);
+ Py_DECREF(value);
+ return ret;
+}
+
+static HANDLE
+gethandle(PyObject* obj, char* name)
+{
+ sp_handle_object* value;
+ HANDLE ret;
+
+ value = (sp_handle_object*) PyObject_GetAttrString(obj, name);
+ if (! value) {
+ PyErr_Clear(); /* FIXME: propagate error? */
+ return NULL;
+ }
+ if (value->ob_type != &sp_handle_type)
+ ret = NULL;
+ else
+ ret = value->handle;
+ Py_DECREF(value);
+ return ret;
+}
+
+static PyObject*
+getenvironment(PyObject* environment)
+{
+ int i, envsize;
+ PyObject* out = NULL;
+ PyObject* keys;
+ PyObject* values;
+ char* p;
+
+ /* convert environment dictionary to windows environment string */
+ if (! PyMapping_Check(environment)) {
+ PyErr_SetString(
+ PyExc_TypeError, "environment must be dictionary or None");
+ return NULL;
+ }
+
+ envsize = PyMapping_Length(environment);
+
+ keys = PyMapping_Keys(environment);
+ if (!keys) {
+ return NULL;
+ }
+ values = PyMapping_Values(environment);
+ if (!values) {
+ goto error;
+ }
+
+ out = PyString_FromStringAndSize(NULL, 2048);
+ if (! out)
+ goto error;
+
+ p = PyString_AS_STRING(out);
+
+ for (i = 0; i < envsize; i++) {
+ size_t ksize, vsize, totalsize;
+ PyObject* key = PyList_GET_ITEM(keys, i);
+ PyObject* value = PyList_GET_ITEM(values, i);
+
+ if (! PyString_Check(key) || ! PyString_Check(value)) {
+ PyErr_SetString(PyExc_TypeError,
+ "environment can only contain strings");
+ goto error;
+ }
+ ksize = PyString_GET_SIZE(key);
+ vsize = PyString_GET_SIZE(value);
+ if (strlen(PyString_AS_STRING(key)) != ksize ||
+ strlen(PyString_AS_STRING(value)) != vsize)
+ {
+ PyErr_SetString(PyExc_TypeError, "embedded null character");
+ goto error;
+ }
+ /* Search from index 1 because on Windows starting '=' is allowed for
+ defining hidden environment variables. */
+ if (ksize == 0 || strchr(PyString_AS_STRING(key) + 1, '=') != NULL) {
+ PyErr_SetString(PyExc_ValueError, "illegal environment variable name");
+ goto error;
+ }
+ totalsize = (p - PyString_AS_STRING(out)) + ksize + 1 +
+ vsize + 1 + 1;
+ if (totalsize > (size_t)PyString_GET_SIZE(out)) {
+ size_t offset = p - PyString_AS_STRING(out);
+ if (_PyString_Resize(&out, totalsize + 1024))
+ goto exit;
+ p = PyString_AS_STRING(out) + offset;
+ }
+ memcpy(p, PyString_AS_STRING(key), ksize);
+ p += ksize;
+ *p++ = '=';
+ memcpy(p, PyString_AS_STRING(value), vsize);
+ p += vsize;
+ *p++ = '\0';
+ }
+
+ /* add trailing null byte */
+ *p++ = '\0';
+ _PyString_Resize(&out, p - PyString_AS_STRING(out));
+
+ /* PyObject_Print(out, stdout, 0); */
+exit:
+ Py_XDECREF(keys);
+ Py_XDECREF(values);
+
+ return out;
+
+ error:
+ Py_XDECREF(out);
+ Py_XDECREF(keys);
+ Py_XDECREF(values);
+ return NULL;
+}
+
+PyDoc_STRVAR(CreateProcess_doc,
+"CreateProcess(app_name, cmd_line, proc_attrs, thread_attrs,\n\
+ inherit, flags, env_mapping, curdir,\n\
+ startup_info) -> (proc_handle, thread_handle,\n\
+ pid, tid)\n\
+\n\
+Create a new process and its primary thread. The return\n\
+value is a tuple of the process handle, thread handle,\n\
+process ID, and thread ID.\n\
+\n\
+proc_attrs and thread_attrs are ignored internally and can be None.");
+
+static PyObject *
+sp_CreateProcess(PyObject* self, PyObject* args)
+{
+ BOOL result;
+ PROCESS_INFORMATION pi;
+ STARTUPINFO si;
+ PyObject* environment;
+
+ char* application_name;
+ char* command_line;
+ PyObject* process_attributes; /* ignored */
+ PyObject* thread_attributes; /* ignored */
+ int inherit_handles;
+ int creation_flags;
+ PyObject* env_mapping;
+ char* current_directory;
+ PyObject* startup_info;
+
+ if (! PyArg_ParseTuple(args, "zzOOiiOzO:CreateProcess",
+ &application_name,
+ &command_line,
+ &process_attributes,
+ &thread_attributes,
+ &inherit_handles,
+ &creation_flags,
+ &env_mapping,
+ &current_directory,
+ &startup_info))
+ return NULL;
+
+ ZeroMemory(&si, sizeof(si));
+ si.cb = sizeof(si);
+
+ /* note: we only support a small subset of all SI attributes */
+ si.dwFlags = getint(startup_info, "dwFlags");
+ si.wShowWindow = getint(startup_info, "wShowWindow");
+ si.hStdInput = gethandle(startup_info, "hStdInput");
+ si.hStdOutput = gethandle(startup_info, "hStdOutput");
+ si.hStdError = gethandle(startup_info, "hStdError");
+
+ if (PyErr_Occurred())
+ return NULL;
+
+ if (env_mapping == Py_None)
+ environment = NULL;
+ else {
+ environment = getenvironment(env_mapping);
+ if (! environment)
+ return NULL;
+ }
+
+ Py_BEGIN_ALLOW_THREADS
+ result = CreateProcess(application_name,
+ command_line,
+ NULL,
+ NULL,
+ inherit_handles,
+ creation_flags,
+ environment ? PyString_AS_STRING(environment) : NULL,
+ current_directory,
+ &si,
+ &pi);
+ Py_END_ALLOW_THREADS
+
+ Py_XDECREF(environment);
+
+ if (! result)
+ return PyErr_SetFromWindowsErr(GetLastError());
+
+ return Py_BuildValue("NNii",
+ sp_handle_new(pi.hProcess),
+ sp_handle_new(pi.hThread),
+ pi.dwProcessId,
+ pi.dwThreadId);
+}
+
+PyDoc_STRVAR(TerminateProcess_doc,
+"TerminateProcess(handle, exit_code) -> None\n\
+\n\
+Terminate the specified process and all of its threads.");
+
+static PyObject *
+sp_TerminateProcess(PyObject* self, PyObject* args)
+{
+ BOOL result;
+
+ HANDLE process;
+ int exit_code;
+ if (! PyArg_ParseTuple(args, PY_HANDLE_PARAM "i:TerminateProcess",
+ &process, &exit_code))
+ return NULL;
+
+ result = TerminateProcess(process, exit_code);
+
+ if (! result)
+ return PyErr_SetFromWindowsErr(GetLastError());
+
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+PyDoc_STRVAR(GetExitCodeProcess_doc,
+"GetExitCodeProcess(handle) -> Exit code\n\
+\n\
+Return the termination status of the specified process.");
+
+static PyObject *
+sp_GetExitCodeProcess(PyObject* self, PyObject* args)
+{
+ DWORD exit_code;
+ BOOL result;
+
+ HANDLE process;
+ if (! PyArg_ParseTuple(args, PY_HANDLE_PARAM ":GetExitCodeProcess", &process))
+ return NULL;
+
+ result = GetExitCodeProcess(process, &exit_code);
+
+ if (! result)
+ return PyErr_SetFromWindowsErr(GetLastError());
+
+ return PyInt_FromLong(exit_code);
+}
+
+PyDoc_STRVAR(WaitForSingleObject_doc,
+"WaitForSingleObject(handle, timeout) -> result\n\
+\n\
+Wait until the specified object is in the signaled state or\n\
+the time-out interval elapses. The timeout value is specified\n\
+in milliseconds.");
+
+static PyObject *
+sp_WaitForSingleObject(PyObject* self, PyObject* args)
+{
+ DWORD result;
+
+ HANDLE handle;
+ int milliseconds;
+ if (! PyArg_ParseTuple(args, PY_HANDLE_PARAM "i:WaitForSingleObject",
+ &handle,
+ &milliseconds))
+ return NULL;
+
+ Py_BEGIN_ALLOW_THREADS
+ result = WaitForSingleObject(handle, (DWORD) milliseconds);
+ Py_END_ALLOW_THREADS
+
+ if (result == WAIT_FAILED)
+ return PyErr_SetFromWindowsErr(GetLastError());
+
+ return PyInt_FromLong((int) result);
+}
+
+PyDoc_STRVAR(GetVersion_doc,
+"GetVersion() -> version\n\
+\n\
+Return the version number of the current operating system.");
+
+static PyObject *
+sp_GetVersion(PyObject* self, PyObject* args)
+{
+ if (! PyArg_ParseTuple(args, ":GetVersion"))
+ return NULL;
+
+ return PyInt_FromLong((int) GetVersion());
+}
+
+PyDoc_STRVAR(GetModuleFileName_doc,
+"GetModuleFileName(module) -> path\n\
+\n\
+Return the fully-qualified path for the file that contains\n\
+the specified module. The module must have been loaded by the\n\
+current process.\n\
+\n\
+The module parameter should be a handle to the loaded module\n\
+whose path is being requested. If this parameter is 0, \n\
+GetModuleFileName retrieves the path of the executable file\n\
+of the current process.");
+
+static PyObject *
+sp_GetModuleFileName(PyObject* self, PyObject* args)
+{
+ BOOL result;
+ HMODULE module;
+ TCHAR filename[MAX_PATH];
+
+ if (! PyArg_ParseTuple(args, PY_HANDLE_PARAM ":GetModuleFileName",
+ &module))
+ return NULL;
+
+ result = GetModuleFileName(module, filename, MAX_PATH);
+ filename[MAX_PATH-1] = '\0';
+
+ if (! result)
+ return PyErr_SetFromWindowsErr(GetLastError());
+
+ return PyString_FromString(filename);
+}
+
+static PyMethodDef sp_functions[] = {
+ {"GetStdHandle", sp_GetStdHandle, METH_VARARGS, GetStdHandle_doc},
+ {"GetCurrentProcess", sp_GetCurrentProcess, METH_VARARGS,
+ GetCurrentProcess_doc},
+ {"DuplicateHandle", sp_DuplicateHandle, METH_VARARGS,
+ DuplicateHandle_doc},
+ {"CreatePipe", sp_CreatePipe, METH_VARARGS, CreatePipe_doc},
+ {"CreateProcess", sp_CreateProcess, METH_VARARGS, CreateProcess_doc},
+ {"TerminateProcess", sp_TerminateProcess, METH_VARARGS,
+ TerminateProcess_doc},
+ {"GetExitCodeProcess", sp_GetExitCodeProcess, METH_VARARGS,
+ GetExitCodeProcess_doc},
+ {"WaitForSingleObject", sp_WaitForSingleObject, METH_VARARGS,
+ WaitForSingleObject_doc},
+ {"GetVersion", sp_GetVersion, METH_VARARGS, GetVersion_doc},
+ {"GetModuleFileName", sp_GetModuleFileName, METH_VARARGS,
+ GetModuleFileName_doc},
+ {NULL, NULL}
+};
+
+/* -------------------------------------------------------------------- */
+
+static void
+defint(PyObject* d, const char* name, int value)
+{
+ PyObject* v = PyInt_FromLong((long) value);
+ if (v) {
+ PyDict_SetItemString(d, (char*) name, v);
+ Py_DECREF(v);
+ }
+}
+
+#if PY_VERSION_HEX >= 0x02030000
+PyMODINIT_FUNC
+#else
+DL_EXPORT(void)
+#endif
+init_subprocess()
+{
+ PyObject *d;
+ PyObject *m;
+
+ /* patch up object descriptors */
+ sp_handle_type.ob_type = &PyType_Type;
+ sp_handle_as_number.nb_int = (unaryfunc) sp_handle_as_int;
+
+ m = Py_InitModule("_subprocess", sp_functions);
+ if (m == NULL)
+ return;
+ d = PyModule_GetDict(m);
+
+ /* constants */
+ defint(d, "STD_INPUT_HANDLE", STD_INPUT_HANDLE);
+ defint(d, "STD_OUTPUT_HANDLE", STD_OUTPUT_HANDLE);
+ defint(d, "STD_ERROR_HANDLE", STD_ERROR_HANDLE);
+ defint(d, "DUPLICATE_SAME_ACCESS", DUPLICATE_SAME_ACCESS);
+ defint(d, "STARTF_USESTDHANDLES", STARTF_USESTDHANDLES);
+ defint(d, "STARTF_USESHOWWINDOW", STARTF_USESHOWWINDOW);
+ defint(d, "SW_HIDE", SW_HIDE);
+ defint(d, "INFINITE", INFINITE);
+ defint(d, "WAIT_OBJECT_0", WAIT_OBJECT_0);
+ defint(d, "CREATE_NEW_CONSOLE", CREATE_NEW_CONSOLE);
+ defint(d, "CREATE_NEW_PROCESS_GROUP", CREATE_NEW_PROCESS_GROUP);
+ defint(d, "STILL_ACTIVE", STILL_ACTIVE);
+}
diff --git a/PC/_testconsole.c b/PC/_testconsole.c
deleted file mode 100644
index 23d1286..0000000
--- a/PC/_testconsole.c
+++ /dev/null
@@ -1,131 +0,0 @@
-
-/* Testing module for multi-phase initialization of extension modules (PEP 489)
- */
-
-#include "Python.h"
-
-#ifdef MS_WINDOWS
-
-#include "..\modules\_io\_iomodule.h"
-
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#include <fcntl.h>
-
- /* The full definition is in iomodule. We reproduce
- enough here to get the handle, which is all we want. */
-typedef struct {
- PyObject_HEAD
- HANDLE handle;
-} winconsoleio;
-
-
-static int execfunc(PyObject *m)
-{
- return 0;
-}
-
-PyModuleDef_Slot testconsole_slots[] = {
- {Py_mod_exec, execfunc},
- {0, NULL},
-};
-
-/*[clinic input]
-module _testconsole
-
-_testconsole.write_input
- file: object
- s: PyBytesObject
-
-Writes UTF-16-LE encoded bytes to the console as if typed by a user.
-[clinic start generated code]*/
-
-static PyObject *
-_testconsole_write_input_impl(PyObject *module, PyObject *file,
- PyBytesObject *s)
-/*[clinic end generated code: output=48f9563db34aedb3 input=4c774f2d05770bc6]*/
-{
- INPUT_RECORD *rec = NULL;
-
- if (!PyWindowsConsoleIO_Check(file)) {
- PyErr_SetString(PyExc_TypeError, "expected raw console object");
- return NULL;
- }
-
- const wchar_t *p = (const wchar_t *)PyBytes_AS_STRING(s);
- DWORD size = (DWORD)PyBytes_GET_SIZE(s) / sizeof(wchar_t);
-
- rec = (INPUT_RECORD*)PyMem_Malloc(sizeof(INPUT_RECORD) * size);
- if (!rec)
- goto error;
- memset(rec, 0, sizeof(INPUT_RECORD) * size);
-
- INPUT_RECORD *prec = rec;
- for (DWORD i = 0; i < size; ++i, ++p, ++prec) {
- prec->EventType = KEY_EVENT;
- prec->Event.KeyEvent.bKeyDown = TRUE;
- prec->Event.KeyEvent.wRepeatCount = 10;
- prec->Event.KeyEvent.uChar.UnicodeChar = *p;
- }
-
- HANDLE hInput = ((winconsoleio*)file)->handle;
- DWORD total = 0;
- while (total < size) {
- DWORD wrote;
- if (!WriteConsoleInputW(hInput, &rec[total], (size - total), &wrote)) {
- PyErr_SetFromWindowsErr(0);
- goto error;
- }
- total += wrote;
- }
-
- PyMem_Free((void*)rec);
-
- Py_RETURN_NONE;
-error:
- if (rec)
- PyMem_Free((void*)rec);
- return NULL;
-}
-
-/*[clinic input]
-_testconsole.read_output
- file: object
-
-Reads a str from the console as written to stdout.
-[clinic start generated code]*/
-
-static PyObject *
-_testconsole_read_output_impl(PyObject *module, PyObject *file)
-/*[clinic end generated code: output=876310d81a73e6d2 input=b3521f64b1b558e3]*/
-{
- Py_RETURN_NONE;
-}
-
-#include "clinic\_testconsole.c.h"
-
-PyMethodDef testconsole_methods[] = {
- _TESTCONSOLE_WRITE_INPUT_METHODDEF
- _TESTCONSOLE_READ_OUTPUT_METHODDEF
- {NULL, NULL}
-};
-
-static PyModuleDef testconsole_def = {
- PyModuleDef_HEAD_INIT, /* m_base */
- "_testconsole", /* m_name */
- PyDoc_STR("Test module for the Windows console"), /* m_doc */
- 0, /* m_size */
- testconsole_methods, /* m_methods */
- testconsole_slots, /* m_slots */
- NULL, /* m_traverse */
- NULL, /* m_clear */
- NULL, /* m_free */
-};
-
-PyMODINIT_FUNC
-PyInit__testconsole(PyObject *spec)
-{
- return PyModuleDef_Init(&testconsole_def);
-}
-
-#endif /* MS_WINDOWS */
diff --git a/PC/_winreg.c b/PC/_winreg.c
new file mode 100644
index 0000000..e0fdff2
--- /dev/null
+++ b/PC/_winreg.c
@@ -0,0 +1,1872 @@
+/*
+ _winreg.c
+
+ Windows Registry access module for Python.
+
+ * Simple registry access written by Mark Hammond in win32api
+ module circa 1995.
+ * Bill Tutt expanded the support significantly not long after.
+ * Numerous other people have submitted patches since then.
+ * Ripped from win32api module 03-Feb-2000 by Mark Hammond, and
+ basic Unicode support added.
+
+*/
+
+#include "Python.h"
+#include "structmember.h"
+#include "malloc.h" /* for alloca */
+#include "windows.h"
+
+static BOOL PyHKEY_AsHKEY(PyObject *ob, HKEY *pRes, BOOL bNoneOK);
+static PyObject *PyHKEY_FromHKEY(HKEY h);
+static BOOL PyHKEY_Close(PyObject *obHandle);
+
+static char errNotAHandle[] = "Object is not a handle";
+
+/* The win32api module reports the function name that failed,
+ but this concept is not in the Python core.
+ Hopefully it will one day, and in the meantime I don't
+ want to lose this info...
+*/
+#define PyErr_SetFromWindowsErrWithFunction(rc, fnname) \
+ PyErr_SetFromWindowsErr(rc)
+
+/* Forward declares */
+
+/* Doc strings */
+PyDoc_STRVAR(module_doc,
+"This module provides access to the Windows registry API.\n"
+"\n"
+"Functions:\n"
+"\n"
+"CloseKey() - Closes a registry key.\n"
+"ConnectRegistry() - Establishes a connection to a predefined registry handle\n"
+" on another computer.\n"
+"CreateKey() - Creates the specified key, or opens it if it already exists.\n"
+"DeleteKey() - Deletes the specified key.\n"
+"DeleteValue() - Removes a named value from the specified registry key.\n"
+"EnumKey() - Enumerates subkeys of the specified open registry key.\n"
+"EnumValue() - Enumerates values of the specified open registry key.\n"
+"ExpandEnvironmentStrings() - Expand the env strings in a REG_EXPAND_SZ string.\n"
+"FlushKey() - Writes all the attributes of the specified key to the registry.\n"
+"LoadKey() - Creates a subkey under HKEY_USER or HKEY_LOCAL_MACHINE and stores\n"
+" registration information from a specified file into that subkey.\n"
+"OpenKey() - Alias for <om win32api.RegOpenKeyEx>\n"
+"OpenKeyEx() - Opens the specified key.\n"
+"QueryValue() - Retrieves the value associated with the unnamed value for a\n"
+" specified key in the registry.\n"
+"QueryValueEx() - Retrieves the type and data for a specified value name\n"
+" associated with an open registry key.\n"
+"QueryInfoKey() - Returns information about the specified key.\n"
+"SaveKey() - Saves the specified key, and all its subkeys a file.\n"
+"SetValue() - Associates a value with a specified key.\n"
+"SetValueEx() - Stores data in the value field of an open registry key.\n"
+"\n"
+"Special objects:\n"
+"\n"
+"HKEYType -- type object for HKEY objects\n"
+"error -- exception raised for Win32 errors\n"
+"\n"
+"Integer constants:\n"
+"Many constants are defined - see the documentation for each function\n"
+"to see what constants are used, and where.");
+
+
+PyDoc_STRVAR(CloseKey_doc,
+"CloseKey(hkey) - Closes a previously opened registry key.\n"
+"\n"
+"The hkey argument specifies a previously opened key.\n"
+"\n"
+"Note that if the key is not closed using this method, it will be\n"
+"closed when the hkey object is destroyed by Python.");
+
+PyDoc_STRVAR(ConnectRegistry_doc,
+"key = ConnectRegistry(computer_name, key) - "
+"Establishes a connection to a predefined registry handle on another computer.\n"
+"\n"
+"computer_name is the name of the remote computer, of the form \\\\computername.\n"
+" If None, the local computer is used.\n"
+"key is the predefined handle to connect to.\n"
+"\n"
+"The return value is the handle of the opened key.\n"
+"If the function fails, a WindowsError exception is raised.");
+
+PyDoc_STRVAR(CreateKey_doc,
+"key = CreateKey(key, sub_key) - Creates or opens the specified key.\n"
+"\n"
+"key is an already open key, or one of the predefined HKEY_* constants\n"
+"sub_key is a string that names the key this method opens or creates.\n"
+" If key is one of the predefined keys, sub_key may be None. In that case,\n"
+" the handle returned is the same key handle passed in to the function.\n"
+"\n"
+"If the key already exists, this function opens the existing key\n"
+"\n"
+"The return value is the handle of the opened key.\n"
+"If the function fails, an exception is raised.");
+
+PyDoc_STRVAR(CreateKeyEx_doc,
+"key = CreateKeyEx(key, sub_key, res, sam) - Creates or opens the specified key.\n"
+"\n"
+"key is an already open key, or one of the predefined HKEY_* constants\n"
+"sub_key is a string that names the key this method opens or creates.\n"
+"res is a reserved integer, and must be zero. Default is zero.\n"
+"sam is an integer that specifies an access mask that describes the desired\n"
+" If key is one of the predefined keys, sub_key may be None. In that case,\n"
+" the handle returned is the same key handle passed in to the function.\n"
+"\n"
+"If the key already exists, this function opens the existing key\n"
+"\n"
+"The return value is the handle of the opened key.\n"
+"If the function fails, an exception is raised.");
+
+PyDoc_STRVAR(DeleteKey_doc,
+"DeleteKey(key, sub_key) - Deletes the specified key.\n"
+"\n"
+"key is an already open key, or any one of the predefined HKEY_* constants.\n"
+"sub_key is a string that must be a subkey of the key identified by the key parameter.\n"
+" This value must not be None, and the key may not have subkeys.\n"
+"\n"
+"This method can not delete keys with subkeys.\n"
+"\n"
+"If the method succeeds, the entire key, including all of its values,\n"
+"is removed. If the method fails, a WindowsError exception is raised.");
+
+PyDoc_STRVAR(DeleteKeyEx_doc,
+"DeleteKeyEx(key, sub_key, sam, res) - Deletes the specified key.\n"
+"\n"
+"key is an already open key, or any one of the predefined HKEY_* constants.\n"
+"sub_key is a string that must be a subkey of the key identified by the key parameter.\n"
+"res is a reserved integer, and must be zero. Default is zero.\n"
+"sam is an integer that specifies an access mask that describes the desired\n"
+" This value must not be None, and the key may not have subkeys.\n"
+"\n"
+"This method can not delete keys with subkeys.\n"
+"\n"
+"If the method succeeds, the entire key, including all of its values,\n"
+"is removed. If the method fails, a WindowsError exception is raised.\n"
+"On unsupported Windows versions, NotImplementedError is raised.");
+
+PyDoc_STRVAR(DeleteValue_doc,
+"DeleteValue(key, value) - Removes a named value from a registry key.\n"
+"\n"
+"key is an already open key, or any one of the predefined HKEY_* constants.\n"
+"value is a string that identifies the value to remove.");
+
+PyDoc_STRVAR(EnumKey_doc,
+"string = EnumKey(key, index) - Enumerates subkeys of an open registry key.\n"
+"\n"
+"key is an already open key, or any one of the predefined HKEY_* constants.\n"
+"index is an integer that identifies the index of the key to retrieve.\n"
+"\n"
+"The function retrieves the name of one subkey each time it is called.\n"
+"It is typically called repeatedly until a WindowsError exception is\n"
+"raised, indicating no more values are available.");
+
+PyDoc_STRVAR(EnumValue_doc,
+"tuple = EnumValue(key, index) - Enumerates values of an open registry key.\n"
+"key is an already open key, or any one of the predefined HKEY_* constants.\n"
+"index is an integer that identifies the index of the value to retrieve.\n"
+"\n"
+"The function retrieves the name of one subkey each time it is called.\n"
+"It is typically called repeatedly, until a WindowsError exception\n"
+"is raised, indicating no more values.\n"
+"\n"
+"The result is a tuple of 3 items:\n"
+"value_name is a string that identifies the value.\n"
+"value_data is an object that holds the value data, and whose type depends\n"
+" on the underlying registry type.\n"
+"data_type is an integer that identifies the type of the value data.");
+
+PyDoc_STRVAR(ExpandEnvironmentStrings_doc,
+"string = ExpandEnvironmentStrings(string) - Expand environment vars.\n");
+
+PyDoc_STRVAR(FlushKey_doc,
+"FlushKey(key) - Writes all the attributes of a key to the registry.\n"
+"\n"
+"key is an already open key, or any one of the predefined HKEY_* constants.\n"
+"\n"
+"It is not necessary to call RegFlushKey to change a key.\n"
+"Registry changes are flushed to disk by the registry using its lazy flusher.\n"
+"Registry changes are also flushed to disk at system shutdown.\n"
+"Unlike CloseKey(), the FlushKey() method returns only when all the data has\n"
+"been written to the registry.\n"
+"An application should only call FlushKey() if it requires absolute certainty that registry changes are on disk.\n"
+"If you don't know whether a FlushKey() call is required, it probably isn't.");
+
+PyDoc_STRVAR(LoadKey_doc,
+"LoadKey(key, sub_key, file_name) - Creates a subkey under the specified key\n"
+"and stores registration information from a specified file into that subkey.\n"
+"\n"
+"key is an already open key, or any one of the predefined HKEY_* constants.\n"
+"sub_key is a string that identifies the sub_key to load\n"
+"file_name is the name of the file to load registry data from.\n"
+" This file must have been created with the SaveKey() function.\n"
+" Under the file allocation table (FAT) file system, the filename may not\n"
+"have an extension.\n"
+"\n"
+"A call to LoadKey() fails if the calling process does not have the\n"
+"SE_RESTORE_PRIVILEGE privilege.\n"
+"\n"
+"If key is a handle returned by ConnectRegistry(), then the path specified\n"
+"in fileName is relative to the remote computer.\n"
+"\n"
+"The docs imply key must be in the HKEY_USER or HKEY_LOCAL_MACHINE tree");
+
+PyDoc_STRVAR(OpenKey_doc,
+"key = OpenKey(key, sub_key, res = 0, sam = KEY_READ) - Opens the specified key.\n"
+"\n"
+"key is an already open key, or any one of the predefined HKEY_* constants.\n"
+"sub_key is a string that identifies the sub_key to open\n"
+"res is a reserved integer, and must be zero. Default is zero.\n"
+"sam is an integer that specifies an access mask that describes the desired\n"
+" security access for the key. Default is KEY_READ\n"
+"\n"
+"The result is a new handle to the specified key\n"
+"If the function fails, a WindowsError exception is raised.");
+
+PyDoc_STRVAR(OpenKeyEx_doc, "See OpenKey()");
+
+PyDoc_STRVAR(QueryInfoKey_doc,
+"tuple = QueryInfoKey(key) - Returns information about a key.\n"
+"\n"
+"key is an already open key, or any one of the predefined HKEY_* constants.\n"
+"\n"
+"The result is a tuple of 3 items:"
+"An integer that identifies the number of sub keys this key has.\n"
+"An integer that identifies the number of values this key has.\n"
+"A long integer that identifies when the key was last modified (if available)\n"
+" as 100's of nanoseconds since Jan 1, 1600.");
+
+PyDoc_STRVAR(QueryValue_doc,
+"string = QueryValue(key, sub_key) - retrieves the unnamed value for a key.\n"
+"\n"
+"key is an already open key, or any one of the predefined HKEY_* constants.\n"
+"sub_key is a string that holds the name of the subkey with which the value\n"
+" is associated. If this parameter is None or empty, the function retrieves\n"
+" the value set by the SetValue() method for the key identified by key."
+"\n"
+"Values in the registry have name, type, and data components. This method\n"
+"retrieves the data for a key's first value that has a NULL name.\n"
+"But the underlying API call doesn't return the type, Lame Lame Lame, DONT USE THIS!!!");
+
+PyDoc_STRVAR(QueryValueEx_doc,
+"value,type_id = QueryValueEx(key, value_name) - Retrieves the type and data for a specified value name associated with an open registry key.\n"
+"\n"
+"key is an already open key, or any one of the predefined HKEY_* constants.\n"
+"value_name is a string indicating the value to query");
+
+PyDoc_STRVAR(SaveKey_doc,
+"SaveKey(key, file_name) - Saves the specified key, and all its subkeys to the specified file.\n"
+"\n"
+"key is an already open key, or any one of the predefined HKEY_* constants.\n"
+"file_name is the name of the file to save registry data to.\n"
+" This file cannot already exist. If this filename includes an extension,\n"
+" it cannot be used on file allocation table (FAT) file systems by the\n"
+" LoadKey(), ReplaceKey() or RestoreKey() methods.\n"
+"\n"
+"If key represents a key on a remote computer, the path described by\n"
+"file_name is relative to the remote computer.\n"
+"The caller of this method must possess the SeBackupPrivilege security privilege.\n"
+"This function passes NULL for security_attributes to the API.");
+
+PyDoc_STRVAR(SetValue_doc,
+"SetValue(key, sub_key, type, value) - Associates a value with a specified key.\n"
+"\n"
+"key is an already open key, or any one of the predefined HKEY_* constants.\n"
+"sub_key is a string that names the subkey with which the value is associated.\n"
+"type is an integer that specifies the type of the data. Currently this\n"
+" must be REG_SZ, meaning only strings are supported.\n"
+"value is a string that specifies the new value.\n"
+"\n"
+"If the key specified by the sub_key parameter does not exist, the SetValue\n"
+"function creates it.\n"
+"\n"
+"Value lengths are limited by available memory. Long values (more than\n"
+"2048 bytes) should be stored as files with the filenames stored in \n"
+"the configuration registry. This helps the registry perform efficiently.\n"
+"\n"
+"The key identified by the key parameter must have been opened with\n"
+"KEY_SET_VALUE access.");
+
+PyDoc_STRVAR(SetValueEx_doc,
+"SetValueEx(key, value_name, reserved, type, value) - Stores data in the value field of an open registry key.\n"
+"\n"
+"key is an already open key, or any one of the predefined HKEY_* constants.\n"
+"value_name is a string containing the name of the value to set, or None\n"
+"type is an integer that specifies the type of the data. This should be one of:\n"
+" REG_BINARY -- Binary data in any form.\n"
+" REG_DWORD -- A 32-bit number.\n"
+" REG_DWORD_LITTLE_ENDIAN -- A 32-bit number in little-endian format.\n"
+" REG_DWORD_BIG_ENDIAN -- A 32-bit number in big-endian format.\n"
+" REG_EXPAND_SZ -- A null-terminated string that contains unexpanded references\n"
+" to environment variables (for example, %PATH%).\n"
+" REG_LINK -- A Unicode symbolic link.\n"
+" REG_MULTI_SZ -- A sequence of null-terminated strings, terminated by\n"
+" two null characters. Note that Python handles this\n"
+" termination automatically.\n"
+" REG_NONE -- No defined value type.\n"
+" REG_RESOURCE_LIST -- A device-driver resource list.\n"
+" REG_SZ -- A null-terminated string.\n"
+"reserved can be anything - zero is always passed to the API.\n"
+"value is a string that specifies the new value.\n"
+"\n"
+"This method can also set additional value and type information for the\n"
+"specified key. The key identified by the key parameter must have been\n"
+"opened with KEY_SET_VALUE access.\n"
+"\n"
+"To open the key, use the CreateKeyEx() or OpenKeyEx() methods.\n"
+"\n"
+"Value lengths are limited by available memory. Long values (more than\n"
+"2048 bytes) should be stored as files with the filenames stored in \n"
+"the configuration registry. This helps the registry perform efficiently.");
+
+PyDoc_STRVAR(DisableReflectionKey_doc,
+"Disables registry reflection for 32-bit processes running on a 64-bit\n"
+"Operating System. Will generally raise NotImplementedError if executed on\n"
+"a 32-bit Operating System.\n"
+"If the key is not on the reflection list, the function succeeds but has no effect.\n"
+"Disabling reflection for a key does not affect reflection of any subkeys.");
+
+PyDoc_STRVAR(EnableReflectionKey_doc,
+"Restores registry reflection for the specified disabled key.\n"
+"Will generally raise NotImplementedError if executed on a 32-bit Operating System.\n"
+"Restoring reflection for a key does not affect reflection of any subkeys.");
+
+PyDoc_STRVAR(QueryReflectionKey_doc,
+"bool = QueryReflectionKey(hkey) - Determines the reflection state for the specified key.\n"
+"Will generally raise NotImplementedError if executed on a 32-bit Operating System.\n");
+
+/* PyHKEY docstrings */
+PyDoc_STRVAR(PyHKEY_doc,
+"PyHKEY Object - A Python object, representing a win32 registry key.\n"
+"\n"
+"This object wraps a Windows HKEY object, automatically closing it when\n"
+"the object is destroyed. To guarantee cleanup, you can call either\n"
+"the Close() method on the PyHKEY, or the CloseKey() method.\n"
+"\n"
+"All functions which accept a handle object also accept an integer - \n"
+"however, use of the handle object is encouraged.\n"
+"\n"
+"Functions:\n"
+"Close() - Closes the underlying handle.\n"
+"Detach() - Returns the integer Win32 handle, detaching it from the object\n"
+"\n"
+"Properties:\n"
+"handle - The integer Win32 handle.\n"
+"\n"
+"Operations:\n"
+"__nonzero__ - Handles with an open object return true, otherwise false.\n"
+"__int__ - Converting a handle to an integer returns the Win32 handle.\n"
+"__cmp__ - Handle objects are compared using the handle value.");
+
+
+PyDoc_STRVAR(PyHKEY_Close_doc,
+"key.Close() - Closes the underlying Windows handle.\n"
+"\n"
+"If the handle is already closed, no error is raised.");
+
+PyDoc_STRVAR(PyHKEY_Detach_doc,
+"int = key.Detach() - Detaches the Windows handle from the handle object.\n"
+"\n"
+"The result is the value of the handle before it is detached. If the\n"
+"handle is already detached, this will return zero.\n"
+"\n"
+"After calling this function, the handle is effectively invalidated,\n"
+"but the handle is not closed. You would call this function when you\n"
+"need the underlying win32 handle to exist beyond the lifetime of the\n"
+"handle object.\n"
+"On 64 bit windows, the result of this function is a long integer");
+
+
+/************************************************************************
+
+ The PyHKEY object definition
+
+************************************************************************/
+typedef struct {
+ PyObject_VAR_HEAD
+ HKEY hkey;
+} PyHKEYObject;
+
+#define PyHKEY_Check(op) ((op)->ob_type == &PyHKEY_Type)
+
+static char *failMsg = "bad operand type";
+
+static PyObject *
+PyHKEY_unaryFailureFunc(PyObject *ob)
+{
+ PyErr_SetString(PyExc_TypeError, failMsg);
+ return NULL;
+}
+static PyObject *
+PyHKEY_binaryFailureFunc(PyObject *ob1, PyObject *ob2)
+{
+ PyErr_SetString(PyExc_TypeError, failMsg);
+ return NULL;
+}
+static PyObject *
+PyHKEY_ternaryFailureFunc(PyObject *ob1, PyObject *ob2, PyObject *ob3)
+{
+ PyErr_SetString(PyExc_TypeError, failMsg);
+ return NULL;
+}
+
+static void
+PyHKEY_deallocFunc(PyObject *ob)
+{
+ /* Can not call PyHKEY_Close, as the ob->tp_type
+ has already been cleared, thus causing the type
+ check to fail!
+ */
+ PyHKEYObject *obkey = (PyHKEYObject *)ob;
+ if (obkey->hkey)
+ RegCloseKey((HKEY)obkey->hkey);
+ PyObject_DEL(ob);
+}
+
+static int
+PyHKEY_nonzeroFunc(PyObject *ob)
+{
+ return ((PyHKEYObject *)ob)->hkey != 0;
+}
+
+static PyObject *
+PyHKEY_intFunc(PyObject *ob)
+{
+ PyHKEYObject *pyhkey = (PyHKEYObject *)ob;
+ return PyLong_FromVoidPtr(pyhkey->hkey);
+}
+
+static int
+PyHKEY_printFunc(PyObject *ob, FILE *fp, int flags)
+{
+ PyHKEYObject *pyhkey = (PyHKEYObject *)ob;
+ fprintf(fp, "<PyHKEY at %p (%p)>",
+ ob, pyhkey->hkey);
+ return 0;
+}
+
+static PyObject *
+PyHKEY_strFunc(PyObject *ob)
+{
+ PyHKEYObject *pyhkey = (PyHKEYObject *)ob;
+ return PyString_FromFormat("<PyHKEY:%p>", pyhkey->hkey);
+}
+
+static int
+PyHKEY_compareFunc(PyObject *ob1, PyObject *ob2)
+{
+ PyHKEYObject *pyhkey1 = (PyHKEYObject *)ob1;
+ PyHKEYObject *pyhkey2 = (PyHKEYObject *)ob2;
+ return pyhkey1 == pyhkey2 ? 0 :
+ (pyhkey1 < pyhkey2 ? -1 : 1);
+}
+
+static long
+PyHKEY_hashFunc(PyObject *ob)
+{
+ /* Just use the address.
+ XXX - should we use the handle value?
+ */
+ return _Py_HashPointer(ob);
+}
+
+
+static PyNumberMethods PyHKEY_NumberMethods =
+{
+ PyHKEY_binaryFailureFunc, /* nb_add */
+ PyHKEY_binaryFailureFunc, /* nb_subtract */
+ PyHKEY_binaryFailureFunc, /* nb_multiply */
+ PyHKEY_binaryFailureFunc, /* nb_divide */
+ PyHKEY_binaryFailureFunc, /* nb_remainder */
+ PyHKEY_binaryFailureFunc, /* nb_divmod */
+ PyHKEY_ternaryFailureFunc, /* nb_power */
+ PyHKEY_unaryFailureFunc, /* nb_negative */
+ PyHKEY_unaryFailureFunc, /* nb_positive */
+ PyHKEY_unaryFailureFunc, /* nb_absolute */
+ PyHKEY_nonzeroFunc, /* nb_nonzero */
+ PyHKEY_unaryFailureFunc, /* nb_invert */
+ PyHKEY_binaryFailureFunc, /* nb_lshift */
+ PyHKEY_binaryFailureFunc, /* nb_rshift */
+ PyHKEY_binaryFailureFunc, /* nb_and */
+ PyHKEY_binaryFailureFunc, /* nb_xor */
+ PyHKEY_binaryFailureFunc, /* nb_or */
+ 0, /* nb_coerce (allowed to be zero) */
+ PyHKEY_intFunc, /* nb_int */
+ PyHKEY_unaryFailureFunc, /* nb_long */
+ PyHKEY_unaryFailureFunc, /* nb_float */
+ PyHKEY_unaryFailureFunc, /* nb_oct */
+ PyHKEY_unaryFailureFunc, /* nb_hex */
+};
+
+static PyObject *PyHKEY_CloseMethod(PyObject *self, PyObject *args);
+static PyObject *PyHKEY_DetachMethod(PyObject *self, PyObject *args);
+static PyObject *PyHKEY_Enter(PyObject *self);
+static PyObject *PyHKEY_Exit(PyObject *self, PyObject *args);
+
+static struct PyMethodDef PyHKEY_methods[] = {
+ {"Close", PyHKEY_CloseMethod, METH_VARARGS, PyHKEY_Close_doc},
+ {"Detach", PyHKEY_DetachMethod, METH_VARARGS, PyHKEY_Detach_doc},
+ {"__enter__", (PyCFunction)PyHKEY_Enter, METH_NOARGS, NULL},
+ {"__exit__", PyHKEY_Exit, METH_VARARGS, NULL},
+ {NULL}
+};
+
+static PyMemberDef PyHKEY_memberlist[] = {
+ {"handle", T_PYSSIZET, offsetof(PyHKEYObject, hkey), READONLY},
+ {NULL} /* Sentinel */
+};
+
+/* The type itself */
+PyTypeObject PyHKEY_Type =
+{
+ PyVarObject_HEAD_INIT(0, 0) /* fill in type at module init */
+ "PyHKEY",
+ sizeof(PyHKEYObject),
+ 0,
+ PyHKEY_deallocFunc, /* tp_dealloc */
+ PyHKEY_printFunc, /* tp_print */
+ 0, /* tp_getattr */
+ 0, /* tp_setattr */
+ PyHKEY_compareFunc, /* tp_compare */
+ 0, /* tp_repr */
+ &PyHKEY_NumberMethods, /* tp_as_number */
+ 0, /* tp_as_sequence */
+ 0, /* tp_as_mapping */
+ PyHKEY_hashFunc, /* tp_hash */
+ 0, /* tp_call */
+ PyHKEY_strFunc, /* tp_str */
+ 0, /* tp_getattro */
+ 0, /* tp_setattro */
+ 0, /* tp_as_buffer */
+ Py_TPFLAGS_DEFAULT, /* tp_flags */
+ PyHKEY_doc, /* tp_doc */
+ 0, /* tp_traverse */
+ 0, /* tp_clear */
+ 0, /* tp_richcompare */
+ 0, /* tp_weaklistoffset */
+ 0, /* tp_iter */
+ 0, /* tp_iternext */
+ PyHKEY_methods, /* tp_methods */
+ PyHKEY_memberlist, /* tp_members */
+};
+
+/************************************************************************
+
+ The PyHKEY object methods
+
+************************************************************************/
+static PyObject *
+PyHKEY_CloseMethod(PyObject *self, PyObject *args)
+{
+ if (!PyArg_ParseTuple(args, ":Close"))
+ return NULL;
+ if (!PyHKEY_Close(self))
+ return NULL;
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+static PyObject *
+PyHKEY_DetachMethod(PyObject *self, PyObject *args)
+{
+ void* ret;
+ PyHKEYObject *pThis = (PyHKEYObject *)self;
+ if (!PyArg_ParseTuple(args, ":Detach"))
+ return NULL;
+ ret = (void*)pThis->hkey;
+ pThis->hkey = 0;
+ return PyLong_FromVoidPtr(ret);
+}
+
+static PyObject *
+PyHKEY_Enter(PyObject *self)
+{
+ Py_XINCREF(self);
+ return self;
+}
+
+static PyObject *
+PyHKEY_Exit(PyObject *self, PyObject *args)
+{
+ if (!PyHKEY_Close(self))
+ return NULL;
+ Py_RETURN_NONE;
+}
+
+
+/************************************************************************
+ The public PyHKEY API (well, not public yet :-)
+************************************************************************/
+PyObject *
+PyHKEY_New(HKEY hInit)
+{
+ PyHKEYObject *key = PyObject_NEW(PyHKEYObject, &PyHKEY_Type);
+ if (key)
+ key->hkey = hInit;
+ return (PyObject *)key;
+}
+
+BOOL
+PyHKEY_Close(PyObject *ob_handle)
+{
+ LONG rc;
+ PyHKEYObject *key;
+
+ if (!PyHKEY_Check(ob_handle)) {
+ PyErr_SetString(PyExc_TypeError, "bad operand type");
+ return FALSE;
+ }
+ key = (PyHKEYObject *)ob_handle;
+ rc = key->hkey ? RegCloseKey((HKEY)key->hkey) : ERROR_SUCCESS;
+ key->hkey = 0;
+ if (rc != ERROR_SUCCESS)
+ PyErr_SetFromWindowsErrWithFunction(rc, "RegCloseKey");
+ return rc == ERROR_SUCCESS;
+}
+
+BOOL
+PyHKEY_AsHKEY(PyObject *ob, HKEY *pHANDLE, BOOL bNoneOK)
+{
+ if (ob == Py_None) {
+ if (!bNoneOK) {
+ PyErr_SetString(
+ PyExc_TypeError,
+ "None is not a valid HKEY in this context");
+ return FALSE;
+ }
+ *pHANDLE = (HKEY)0;
+ }
+ else if (PyHKEY_Check(ob)) {
+ PyHKEYObject *pH = (PyHKEYObject *)ob;
+ *pHANDLE = pH->hkey;
+ }
+ else if (_PyAnyInt_Check(ob)) {
+ /* We also support integers */
+ PyErr_Clear();
+ *pHANDLE = (HKEY)PyLong_AsVoidPtr(ob);
+ if (PyErr_Occurred())
+ return FALSE;
+ }
+ else {
+ PyErr_SetString(
+ PyExc_TypeError,
+ "The object is not a PyHKEY object");
+ return FALSE;
+ }
+ return TRUE;
+}
+
+PyObject *
+PyHKEY_FromHKEY(HKEY h)
+{
+ PyHKEYObject *op;
+
+ /* Inline PyObject_New */
+ op = (PyHKEYObject *) PyObject_MALLOC(sizeof(PyHKEYObject));
+ if (op == NULL)
+ return PyErr_NoMemory();
+ PyObject_INIT(op, &PyHKEY_Type);
+ op->hkey = h;
+ return (PyObject *)op;
+}
+
+
+/************************************************************************
+ The module methods
+************************************************************************/
+BOOL
+PyWinObject_CloseHKEY(PyObject *obHandle)
+{
+ BOOL ok;
+ if (PyHKEY_Check(obHandle)) {
+ ok = PyHKEY_Close(obHandle);
+ }
+#if SIZEOF_LONG >= SIZEOF_HKEY
+ else if (PyInt_Check(obHandle)) {
+ long rc = RegCloseKey((HKEY)PyInt_AsLong(obHandle));
+ ok = (rc == ERROR_SUCCESS);
+ if (!ok)
+ PyErr_SetFromWindowsErrWithFunction(rc, "RegCloseKey");
+ }
+#else
+ else if (PyLong_Check(obHandle)) {
+ long rc = RegCloseKey((HKEY)PyLong_AsVoidPtr(obHandle));
+ ok = (rc == ERROR_SUCCESS);
+ if (!ok)
+ PyErr_SetFromWindowsErrWithFunction(rc, "RegCloseKey");
+ }
+#endif
+ else {
+ PyErr_SetString(
+ PyExc_TypeError,
+ "A handle must be a HKEY object or an integer");
+ return FALSE;
+ }
+ return ok;
+}
+
+
+/*
+ Private Helper functions for the registry interfaces
+
+** Note that fixupMultiSZ and countString have both had changes
+** made to support "incorrect strings". The registry specification
+** calls for strings to be terminated with 2 null bytes. It seems
+** some commercial packages install strings which don't conform,
+** causing this code to fail - however, "regedit" etc still work
+** with these strings (ie only we don't!).
+*/
+static void
+fixupMultiSZ(char **str, char *data, int len)
+{
+ char *P;
+ int i;
+ char *Q;
+
+ Q = data + len;
+ for (P = data, i = 0; P < Q && *P != '\0'; P++, i++) {
+ str[i] = P;
+ for (; P < Q && *P != '\0'; P++)
+ ;
+ }
+}
+
+static int
+countStrings(char *data, int len)
+{
+ int strings;
+ char *P;
+ char *Q = data + len;
+
+ for (P = data, strings = 0; P < Q && *P != '\0'; P++, strings++)
+ for (; P < Q && *P != '\0'; P++)
+ ;
+ return strings;
+}
+
+/* Convert PyObject into Registry data.
+ Allocates space as needed. */
+static BOOL
+Py2Reg(PyObject *value, DWORD typ, BYTE **retDataBuf, DWORD *retDataSize)
+{
+ Py_ssize_t i,j;
+ switch (typ) {
+ case REG_DWORD:
+ if (value != Py_None && !_PyAnyInt_Check(value))
+ return FALSE;
+ *retDataBuf = (BYTE *)PyMem_NEW(DWORD, 1);
+ if (*retDataBuf==NULL){
+ PyErr_NoMemory();
+ return FALSE;
+ }
+ *retDataSize = sizeof(DWORD);
+ if (value == Py_None) {
+ DWORD zero = 0;
+ memcpy(*retDataBuf, &zero, sizeof(DWORD));
+ }
+ else {
+ DWORD d = PyLong_AsUnsignedLong(value);
+ memcpy(*retDataBuf, &d, sizeof(DWORD));
+ }
+ break;
+ case REG_SZ:
+ case REG_EXPAND_SZ:
+ {
+ int need_decref = 0;
+ if (value == Py_None)
+ *retDataSize = 1;
+ else {
+ if (PyUnicode_Check(value)) {
+ value = PyUnicode_AsEncodedString(
+ value,
+ "mbcs",
+ NULL);
+ if (value==NULL)
+ return FALSE;
+ need_decref = 1;
+ }
+ if (!PyString_Check(value))
+ return FALSE;
+ *retDataSize = 1 + strlen(
+ PyString_AS_STRING(
+ (PyStringObject *)value));
+ }
+ *retDataBuf = (BYTE *)PyMem_NEW(DWORD, *retDataSize);
+ if (*retDataBuf==NULL){
+ PyErr_NoMemory();
+ return FALSE;
+ }
+ if (value == Py_None)
+ strcpy((char *)*retDataBuf, "");
+ else
+ strcpy((char *)*retDataBuf,
+ PyString_AS_STRING(
+ (PyStringObject *)value));
+ if (need_decref)
+ Py_DECREF(value);
+ break;
+ }
+ case REG_MULTI_SZ:
+ {
+ DWORD size = 0;
+ char *P;
+ PyObject **obs = NULL;
+
+ if (value == Py_None)
+ i = 0;
+ else {
+ if (!PyList_Check(value))
+ return FALSE;
+ i = PyList_Size(value);
+ }
+ obs = malloc(sizeof(PyObject *) * i);
+ memset(obs, 0, sizeof(PyObject *) * i);
+ for (j = 0; j < i; j++)
+ {
+ PyObject *t;
+ t = PyList_GET_ITEM(
+ (PyListObject *)value,j);
+ if (PyString_Check(t)) {
+ obs[j] = t;
+ Py_INCREF(t);
+ } else if (PyUnicode_Check(t)) {
+ obs[j] = PyUnicode_AsEncodedString(
+ t,
+ "mbcs",
+ NULL);
+ if (obs[j]==NULL)
+ goto reg_multi_fail;
+ } else
+ goto reg_multi_fail;
+ size += 1 + strlen(
+ PyString_AS_STRING(
+ (PyStringObject *)obs[j]));
+ }
+
+ *retDataSize = size + 1;
+ *retDataBuf = (BYTE *)PyMem_NEW(char,
+ *retDataSize);
+ if (*retDataBuf==NULL){
+ PyErr_NoMemory();
+ goto reg_multi_fail;
+ }
+ P = (char *)*retDataBuf;
+
+ for (j = 0; j < i; j++)
+ {
+ PyObject *t;
+ t = obs[j];
+ strcpy(P,
+ PyString_AS_STRING(
+ (PyStringObject *)t));
+ P += 1 + strlen(
+ PyString_AS_STRING(
+ (PyStringObject *)t));
+ Py_DECREF(obs[j]);
+ }
+ /* And doubly-terminate the list... */
+ *P = '\0';
+ free(obs);
+ break;
+ reg_multi_fail:
+ if (obs) {
+ for (j = 0; j < i; j++)
+ Py_XDECREF(obs[j]);
+
+ free(obs);
+ }
+ return FALSE;
+ }
+ case REG_BINARY:
+ /* ALSO handle ALL unknown data types here. Even if we can't
+ support it natively, we should handle the bits. */
+ default:
+ if (value == Py_None) {
+ *retDataSize = 0;
+ *retDataBuf = NULL;
+ }
+ else {
+ void *src_buf;
+ PyBufferProcs *pb = value->ob_type->tp_as_buffer;
+ if (pb == NULL || pb->bf_getreadbuffer == NULL) {
+ PyErr_Format(PyExc_TypeError,
+ "Objects of type '%s' can not "
+ "be used as binary registry values",
+ value->ob_type->tp_name);
+ return FALSE;
+ }
+ *retDataSize = (*pb->bf_getreadbuffer)(value, 0, &src_buf);
+ if (*retDataSize < 0) {
+ return FALSE;
+ }
+ *retDataBuf = (BYTE *)PyMem_NEW(char, *retDataSize);
+ if (*retDataBuf == NULL){
+ PyErr_NoMemory();
+ return FALSE;
+ }
+ memcpy(*retDataBuf, src_buf, *retDataSize);
+ }
+ break;
+ }
+ return TRUE;
+}
+
+/* Convert Registry data into PyObject*/
+static PyObject *
+Reg2Py(char *retDataBuf, DWORD retDataSize, DWORD typ)
+{
+ PyObject *obData;
+
+ switch (typ) {
+ case REG_DWORD:
+ if (retDataSize == 0)
+ obData = Py_BuildValue("k", 0);
+ else
+ obData = Py_BuildValue("k",
+ *(int *)retDataBuf);
+ break;
+ case REG_SZ:
+ case REG_EXPAND_SZ:
+ /* retDataBuf may or may not have a trailing NULL in
+ the buffer. */
+ if (retDataSize && retDataBuf[retDataSize-1] == '\0')
+ --retDataSize;
+ if (retDataSize ==0)
+ retDataBuf = "";
+ obData = PyUnicode_DecodeMBCS(retDataBuf,
+ retDataSize,
+ NULL);
+ break;
+ case REG_MULTI_SZ:
+ if (retDataSize == 0)
+ obData = PyList_New(0);
+ else
+ {
+ int index = 0;
+ int s = countStrings(retDataBuf, retDataSize);
+ char **str = (char **)malloc(sizeof(char *)*s);
+ if (str == NULL)
+ return PyErr_NoMemory();
+
+ fixupMultiSZ(str, retDataBuf, retDataSize);
+ obData = PyList_New(s);
+ if (obData == NULL) {
+ free(str);
+ return NULL;
+ }
+ for (index = 0; index < s; index++)
+ {
+ size_t len = _mbstrlen(str[index]);
+ if (len > INT_MAX) {
+ PyErr_SetString(PyExc_OverflowError,
+ "registry string is too long for a Python string");
+ Py_DECREF(obData);
+ free(str);
+ return NULL;
+ }
+ PyList_SetItem(obData,
+ index,
+ PyUnicode_DecodeMBCS(
+ (const char *)str[index],
+ (int)len,
+ NULL)
+ );
+ }
+ free(str);
+
+ break;
+ }
+ case REG_BINARY:
+ /* ALSO handle ALL unknown data types here. Even if we can't
+ support it natively, we should handle the bits. */
+ default:
+ if (retDataSize == 0) {
+ Py_INCREF(Py_None);
+ obData = Py_None;
+ }
+ else
+ obData = Py_BuildValue("s#",
+ (char *)retDataBuf,
+ retDataSize);
+ break;
+ }
+ if (obData == NULL)
+ return NULL;
+ else
+ return obData;
+}
+
+/* The Python methods */
+
+static PyObject *
+PyCloseKey(PyObject *self, PyObject *args)
+{
+ PyObject *obKey;
+ if (!PyArg_ParseTuple(args, "O:CloseKey", &obKey))
+ return NULL;
+ if (!PyHKEY_Close(obKey))
+ return NULL;
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+static PyObject *
+PyConnectRegistry(PyObject *self, PyObject *args)
+{
+ HKEY hKey;
+ PyObject *obKey;
+ char *szCompName = NULL;
+ HKEY retKey;
+ long rc;
+ if (!PyArg_ParseTuple(args, "zO:ConnectRegistry", &szCompName, &obKey))
+ return NULL;
+ if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE))
+ return NULL;
+ Py_BEGIN_ALLOW_THREADS
+ rc = RegConnectRegistry(szCompName, hKey, &retKey);
+ Py_END_ALLOW_THREADS
+ if (rc != ERROR_SUCCESS)
+ return PyErr_SetFromWindowsErrWithFunction(rc,
+ "ConnectRegistry");
+ return PyHKEY_FromHKEY(retKey);
+}
+
+static PyObject *
+PyCreateKey(PyObject *self, PyObject *args)
+{
+ HKEY hKey;
+ PyObject *obKey;
+ char *subKey;
+ HKEY retKey;
+ long rc;
+ if (!PyArg_ParseTuple(args, "Oz:CreateKey", &obKey, &subKey))
+ return NULL;
+ if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE))
+ return NULL;
+ rc = RegCreateKey(hKey, subKey, &retKey);
+ if (rc != ERROR_SUCCESS)
+ return PyErr_SetFromWindowsErrWithFunction(rc, "CreateKey");
+ return PyHKEY_FromHKEY(retKey);
+}
+
+static PyObject *
+PyCreateKeyEx(PyObject *self, PyObject *args)
+{
+ HKEY hKey;
+ PyObject *obKey;
+ char *subKey;
+ HKEY retKey;
+ int res = 0;
+ REGSAM sam = KEY_WRITE;
+ long rc;
+ if (!PyArg_ParseTuple(args, "Oz|ii:CreateKeyEx", &obKey, &subKey,
+ &res, &sam))
+ return NULL;
+ if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE))
+ return NULL;
+
+ rc = RegCreateKeyEx(hKey, subKey, res, NULL, (DWORD)NULL,
+ sam, NULL, &retKey, NULL);
+ if (rc != ERROR_SUCCESS)
+ return PyErr_SetFromWindowsErrWithFunction(rc, "CreateKeyEx");
+ return PyHKEY_FromHKEY(retKey);
+}
+
+static PyObject *
+PyDeleteKey(PyObject *self, PyObject *args)
+{
+ HKEY hKey;
+ PyObject *obKey;
+ char *subKey;
+ long rc;
+ if (!PyArg_ParseTuple(args, "Os:DeleteKey", &obKey, &subKey))
+ return NULL;
+ if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE))
+ return NULL;
+ rc = RegDeleteKey(hKey, subKey );
+ if (rc != ERROR_SUCCESS)
+ return PyErr_SetFromWindowsErrWithFunction(rc, "RegDeleteKey");
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+static PyObject *
+PyDeleteKeyEx(PyObject *self, PyObject *args)
+{
+ HKEY hKey;
+ PyObject *obKey;
+ HMODULE hMod;
+ typedef LONG (WINAPI *RDKEFunc)(HKEY, const char*, REGSAM, int);
+ RDKEFunc pfn = NULL;
+ char *subKey;
+ long rc;
+ int res = 0;
+ REGSAM sam = KEY_WOW64_64KEY;
+
+ if (!PyArg_ParseTuple(args, "Os|ii:DeleteKeyEx",
+ &obKey, &subKey, &sam, &res))
+ return NULL;
+ if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE))
+ return NULL;
+
+ /* Only available on 64bit platforms, so we must load it
+ dynamically. */
+ hMod = GetModuleHandle("advapi32.dll");
+ if (hMod)
+ pfn = (RDKEFunc)GetProcAddress(hMod,
+ "RegDeleteKeyExA");
+ if (!pfn) {
+ PyErr_SetString(PyExc_NotImplementedError,
+ "not implemented on this platform");
+ return NULL;
+ }
+ Py_BEGIN_ALLOW_THREADS
+ rc = (*pfn)(hKey, subKey, sam, res);
+ Py_END_ALLOW_THREADS
+
+ if (rc != ERROR_SUCCESS)
+ return PyErr_SetFromWindowsErrWithFunction(rc, "RegDeleteKeyEx");
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+static PyObject *
+PyDeleteValue(PyObject *self, PyObject *args)
+{
+ HKEY hKey;
+ PyObject *obKey;
+ char *subKey;
+ long rc;
+ if (!PyArg_ParseTuple(args, "Oz:DeleteValue", &obKey, &subKey))
+ return NULL;
+ if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE))
+ return NULL;
+ Py_BEGIN_ALLOW_THREADS
+ rc = RegDeleteValue(hKey, subKey);
+ Py_END_ALLOW_THREADS
+ if (rc !=ERROR_SUCCESS)
+ return PyErr_SetFromWindowsErrWithFunction(rc,
+ "RegDeleteValue");
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+static PyObject *
+PyEnumKey(PyObject *self, PyObject *args)
+{
+ HKEY hKey;
+ PyObject *obKey;
+ int index;
+ long rc;
+ PyObject *retStr;
+
+ /* The Windows docs claim that the max key name length is 255
+ * characters, plus a terminating nul character. However,
+ * empirical testing demonstrates that it is possible to
+ * create a 256 character key that is missing the terminating
+ * nul. RegEnumKeyEx requires a 257 character buffer to
+ * retrieve such a key name. */
+ char tmpbuf[257];
+ DWORD len = sizeof(tmpbuf); /* includes NULL terminator */
+
+ if (!PyArg_ParseTuple(args, "Oi:EnumKey", &obKey, &index))
+ return NULL;
+ if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE))
+ return NULL;
+
+ Py_BEGIN_ALLOW_THREADS
+ rc = RegEnumKeyEx(hKey, index, tmpbuf, &len, NULL, NULL, NULL, NULL);
+ Py_END_ALLOW_THREADS
+ if (rc != ERROR_SUCCESS)
+ return PyErr_SetFromWindowsErrWithFunction(rc, "RegEnumKeyEx");
+
+ retStr = PyString_FromStringAndSize(tmpbuf, len);
+ return retStr; /* can be NULL */
+}
+
+static PyObject *
+PyEnumValue(PyObject *self, PyObject *args)
+{
+ HKEY hKey;
+ PyObject *obKey;
+ int index;
+ long rc;
+ char *retValueBuf;
+ char *retDataBuf;
+ char *tmpBuf;
+ DWORD retValueSize, bufValueSize;
+ DWORD retDataSize, bufDataSize;
+ DWORD typ;
+ PyObject *obData;
+ PyObject *retVal;
+
+ if (!PyArg_ParseTuple(args, "Oi:EnumValue", &obKey, &index))
+ return NULL;
+ if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE))
+ return NULL;
+
+ if ((rc = RegQueryInfoKey(hKey, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL,
+ &retValueSize, &retDataSize, NULL, NULL))
+ != ERROR_SUCCESS)
+ return PyErr_SetFromWindowsErrWithFunction(rc,
+ "RegQueryInfoKey");
+ ++retValueSize; /* include null terminators */
+ ++retDataSize;
+ bufDataSize = retDataSize;
+ bufValueSize = retValueSize;
+ retValueBuf = (char *)PyMem_Malloc(retValueSize);
+ if (retValueBuf == NULL)
+ return PyErr_NoMemory();
+ retDataBuf = (char *)PyMem_Malloc(retDataSize);
+ if (retDataBuf == NULL) {
+ PyMem_Free(retValueBuf);
+ return PyErr_NoMemory();
+ }
+
+ while (1) {
+ Py_BEGIN_ALLOW_THREADS
+ rc = RegEnumValue(hKey,
+ index,
+ retValueBuf,
+ &retValueSize,
+ NULL,
+ &typ,
+ (BYTE *)retDataBuf,
+ &retDataSize);
+ Py_END_ALLOW_THREADS
+
+ if (rc != ERROR_MORE_DATA)
+ break;
+
+ bufDataSize *= 2;
+ tmpBuf = (char *)PyMem_Realloc(retDataBuf, bufDataSize);
+ if (tmpBuf == NULL) {
+ PyErr_NoMemory();
+ retVal = NULL;
+ goto fail;
+ }
+ retDataBuf = tmpBuf;
+ retDataSize = bufDataSize;
+ retValueSize = bufValueSize;
+ }
+
+ if (rc != ERROR_SUCCESS) {
+ retVal = PyErr_SetFromWindowsErrWithFunction(rc,
+ "PyRegEnumValue");
+ goto fail;
+ }
+ obData = Reg2Py(retDataBuf, retDataSize, typ);
+ if (obData == NULL) {
+ retVal = NULL;
+ goto fail;
+ }
+ retVal = Py_BuildValue("sOi", retValueBuf, obData, typ);
+ Py_DECREF(obData);
+ fail:
+ PyMem_Free(retValueBuf);
+ PyMem_Free(retDataBuf);
+ return retVal;
+}
+
+static PyObject *
+PyExpandEnvironmentStrings(PyObject *self, PyObject *args)
+{
+ Py_UNICODE *retValue = NULL;
+ Py_UNICODE *src;
+ DWORD retValueSize;
+ DWORD rc;
+ PyObject *o;
+
+ if (!PyArg_ParseTuple(args, "u:ExpandEnvironmentStrings", &src))
+ return NULL;
+
+ retValueSize = ExpandEnvironmentStringsW(src, retValue, 0);
+ if (retValueSize == 0) {
+ return PyErr_SetFromWindowsErrWithFunction(retValueSize,
+ "ExpandEnvironmentStrings");
+ }
+ retValue = (Py_UNICODE *)PyMem_Malloc(retValueSize * sizeof(Py_UNICODE));
+ if (retValue == NULL) {
+ return PyErr_NoMemory();
+ }
+
+ rc = ExpandEnvironmentStringsW(src, retValue, retValueSize);
+ if (rc == 0) {
+ PyMem_Free(retValue);
+ return PyErr_SetFromWindowsErrWithFunction(retValueSize,
+ "ExpandEnvironmentStrings");
+ }
+ o = PyUnicode_FromUnicode(retValue, wcslen(retValue));
+ PyMem_Free(retValue);
+ return o;
+}
+
+static PyObject *
+PyFlushKey(PyObject *self, PyObject *args)
+{
+ HKEY hKey;
+ PyObject *obKey;
+ long rc;
+ if (!PyArg_ParseTuple(args, "O:FlushKey", &obKey))
+ return NULL;
+ if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE))
+ return NULL;
+ Py_BEGIN_ALLOW_THREADS
+ rc = RegFlushKey(hKey);
+ Py_END_ALLOW_THREADS
+ if (rc != ERROR_SUCCESS)
+ return PyErr_SetFromWindowsErrWithFunction(rc, "RegFlushKey");
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+static PyObject *
+PyLoadKey(PyObject *self, PyObject *args)
+{
+ HKEY hKey;
+ PyObject *obKey;
+ char *subKey;
+ char *fileName;
+
+ long rc;
+ if (!PyArg_ParseTuple(args, "Oss:LoadKey", &obKey, &subKey, &fileName))
+ return NULL;
+ if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE))
+ return NULL;
+ Py_BEGIN_ALLOW_THREADS
+ rc = RegLoadKey(hKey, subKey, fileName );
+ Py_END_ALLOW_THREADS
+ if (rc != ERROR_SUCCESS)
+ return PyErr_SetFromWindowsErrWithFunction(rc, "RegLoadKey");
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+static PyObject *
+PyOpenKey(PyObject *self, PyObject *args)
+{
+ HKEY hKey;
+ PyObject *obKey;
+
+ char *subKey;
+ int res = 0;
+ HKEY retKey;
+ long rc;
+ REGSAM sam = KEY_READ;
+ if (!PyArg_ParseTuple(args, "Oz|ii:OpenKey", &obKey, &subKey,
+ &res, &sam))
+ return NULL;
+ if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE))
+ return NULL;
+
+ Py_BEGIN_ALLOW_THREADS
+ rc = RegOpenKeyEx(hKey, subKey, res, sam, &retKey);
+ Py_END_ALLOW_THREADS
+ if (rc != ERROR_SUCCESS)
+ return PyErr_SetFromWindowsErrWithFunction(rc, "RegOpenKeyEx");
+ return PyHKEY_FromHKEY(retKey);
+}
+
+
+static PyObject *
+PyQueryInfoKey(PyObject *self, PyObject *args)
+{
+ HKEY hKey;
+ PyObject *obKey;
+ long rc;
+ DWORD nSubKeys, nValues;
+ FILETIME ft;
+ LARGE_INTEGER li;
+ PyObject *l;
+ PyObject *ret;
+ if (!PyArg_ParseTuple(args, "O:QueryInfoKey", &obKey))
+ return NULL;
+ if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE))
+ return NULL;
+ if ((rc = RegQueryInfoKey(hKey, NULL, NULL, 0, &nSubKeys, NULL, NULL,
+ &nValues, NULL, NULL, NULL, &ft))
+ != ERROR_SUCCESS)
+ return PyErr_SetFromWindowsErrWithFunction(rc, "RegQueryInfoKey");
+ li.LowPart = ft.dwLowDateTime;
+ li.HighPart = ft.dwHighDateTime;
+ l = PyLong_FromLongLong(li.QuadPart);
+ if (l == NULL)
+ return NULL;
+ ret = Py_BuildValue("iiO", nSubKeys, nValues, l);
+ Py_DECREF(l);
+ return ret;
+}
+
+static PyObject *
+PyQueryValue(PyObject *self, PyObject *args)
+{
+ HKEY hKey;
+ PyObject *obKey;
+ char *subKey;
+ long rc;
+ PyObject *retStr;
+ char *retBuf;
+ DWORD bufSize = 0;
+ DWORD retSize = 0;
+ char *tmp;
+
+ if (!PyArg_ParseTuple(args, "Oz:QueryValue", &obKey, &subKey))
+ return NULL;
+
+ if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE))
+ return NULL;
+
+ rc = RegQueryValue(hKey, subKey, NULL, &retSize);
+ if (rc == ERROR_MORE_DATA)
+ retSize = 256;
+ else if (rc != ERROR_SUCCESS)
+ return PyErr_SetFromWindowsErrWithFunction(rc,
+ "RegQueryValue");
+
+ bufSize = retSize;
+ retBuf = (char *) PyMem_Malloc(bufSize);
+ if (retBuf == NULL)
+ return PyErr_NoMemory();
+
+ while (1) {
+ retSize = bufSize;
+ rc = RegQueryValue(hKey, subKey, retBuf, &retSize);
+ if (rc != ERROR_MORE_DATA)
+ break;
+
+ bufSize *= 2;
+ tmp = (char *) PyMem_Realloc(retBuf, bufSize);
+ if (tmp == NULL) {
+ PyMem_Free(retBuf);
+ return PyErr_NoMemory();
+ }
+ retBuf = tmp;
+ }
+
+ if (rc != ERROR_SUCCESS) {
+ PyMem_Free(retBuf);
+ return PyErr_SetFromWindowsErrWithFunction(rc,
+ "RegQueryValue");
+ }
+
+ if (retBuf[retSize-1] == '\x00')
+ retSize--;
+ retStr = PyString_FromStringAndSize(retBuf, retSize);
+ if (retStr == NULL) {
+ PyMem_Free(retBuf);
+ return NULL;
+ }
+ return retStr;
+}
+
+static PyObject *
+PyQueryValueEx(PyObject *self, PyObject *args)
+{
+ HKEY hKey;
+ PyObject *obKey;
+ char *valueName;
+
+ long rc;
+ char *retBuf, *tmp;
+ DWORD bufSize = 0, retSize;
+ DWORD typ;
+ PyObject *obData;
+ PyObject *result;
+
+ if (!PyArg_ParseTuple(args, "Oz:QueryValueEx", &obKey, &valueName))
+ return NULL;
+
+ if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE))
+ return NULL;
+
+ rc = RegQueryValueEx(hKey, valueName, NULL, NULL, NULL, &bufSize);
+ if (rc == ERROR_MORE_DATA)
+ bufSize = 256;
+ else if (rc != ERROR_SUCCESS)
+ return PyErr_SetFromWindowsErrWithFunction(rc,
+ "RegQueryValueEx");
+ retBuf = (char *)PyMem_Malloc(bufSize);
+ if (retBuf == NULL)
+ return PyErr_NoMemory();
+
+ while (1) {
+ retSize = bufSize;
+ rc = RegQueryValueEx(hKey, valueName, NULL, &typ,
+ (BYTE *)retBuf, &retSize);
+ if (rc != ERROR_MORE_DATA)
+ break;
+
+ bufSize *= 2;
+ tmp = (char *) PyMem_Realloc(retBuf, bufSize);
+ if (tmp == NULL) {
+ PyMem_Free(retBuf);
+ return PyErr_NoMemory();
+ }
+ retBuf = tmp;
+ }
+
+ if (rc != ERROR_SUCCESS) {
+ PyMem_Free(retBuf);
+ return PyErr_SetFromWindowsErrWithFunction(rc,
+ "RegQueryValueEx");
+ }
+ obData = Reg2Py(retBuf, bufSize, typ);
+ PyMem_Free((void *)retBuf);
+ if (obData == NULL)
+ return NULL;
+ result = Py_BuildValue("Oi", obData, typ);
+ Py_DECREF(obData);
+ return result;
+}
+
+
+static PyObject *
+PySaveKey(PyObject *self, PyObject *args)
+{
+ HKEY hKey;
+ PyObject *obKey;
+ char *fileName;
+ LPSECURITY_ATTRIBUTES pSA = NULL;
+
+ long rc;
+ if (!PyArg_ParseTuple(args, "Os:SaveKey", &obKey, &fileName))
+ return NULL;
+ if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE))
+ return NULL;
+/* One day we may get security into the core?
+ if (!PyWinObject_AsSECURITY_ATTRIBUTES(obSA, &pSA, TRUE))
+ return NULL;
+*/
+ Py_BEGIN_ALLOW_THREADS
+ rc = RegSaveKey(hKey, fileName, pSA );
+ Py_END_ALLOW_THREADS
+ if (rc != ERROR_SUCCESS)
+ return PyErr_SetFromWindowsErrWithFunction(rc, "RegSaveKey");
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+static PyObject *
+PySetValue(PyObject *self, PyObject *args)
+{
+ HKEY hKey;
+ PyObject *obKey;
+ char *subKey;
+ char *str;
+ DWORD typ;
+ DWORD len;
+ long rc;
+ PyObject *obStrVal;
+ PyObject *obSubKey;
+ if (!PyArg_ParseTuple(args, "OOiO:SetValue",
+ &obKey,
+ &obSubKey,
+ &typ,
+ &obStrVal))
+ return NULL;
+ if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE))
+ return NULL;
+ if (typ != REG_SZ) {
+ PyErr_SetString(PyExc_TypeError,
+ "Type must be _winreg.REG_SZ");
+ return NULL;
+ }
+ /* XXX - need Unicode support */
+ str = PyString_AsString(obStrVal);
+ if (str == NULL)
+ return NULL;
+ len = PyString_Size(obStrVal);
+ if (obSubKey == Py_None)
+ subKey = NULL;
+ else {
+ subKey = PyString_AsString(obSubKey);
+ if (subKey == NULL)
+ return NULL;
+ }
+ Py_BEGIN_ALLOW_THREADS
+ rc = RegSetValue(hKey, subKey, REG_SZ, str, len+1);
+ Py_END_ALLOW_THREADS
+ if (rc != ERROR_SUCCESS)
+ return PyErr_SetFromWindowsErrWithFunction(rc, "RegSetValue");
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+static PyObject *
+PySetValueEx(PyObject *self, PyObject *args)
+{
+ HKEY hKey;
+ PyObject *obKey;
+ char *valueName;
+ PyObject *obRes;
+ PyObject *value;
+ BYTE *data;
+ DWORD len;
+ DWORD typ;
+
+ LONG rc;
+
+ if (!PyArg_ParseTuple(args, "OzOiO:SetValueEx",
+ &obKey,
+ &valueName,
+ &obRes,
+ &typ,
+ &value))
+ return NULL;
+ if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE))
+ return NULL;
+ if (!Py2Reg(value, typ, &data, &len))
+ {
+ if (!PyErr_Occurred())
+ PyErr_SetString(PyExc_ValueError,
+ "Could not convert the data to the specified type.");
+ return NULL;
+ }
+ Py_BEGIN_ALLOW_THREADS
+ rc = RegSetValueEx(hKey, valueName, 0, typ, data, len);
+ Py_END_ALLOW_THREADS
+ PyMem_DEL(data);
+ if (rc != ERROR_SUCCESS)
+ return PyErr_SetFromWindowsErrWithFunction(rc,
+ "RegSetValueEx");
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+static PyObject *
+PyDisableReflectionKey(PyObject *self, PyObject *args)
+{
+ HKEY hKey;
+ PyObject *obKey;
+ HMODULE hMod;
+ typedef LONG (WINAPI *RDRKFunc)(HKEY);
+ RDRKFunc pfn = NULL;
+ LONG rc;
+
+ if (!PyArg_ParseTuple(args, "O:DisableReflectionKey", &obKey))
+ return NULL;
+ if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE))
+ return NULL;
+
+ /* Only available on 64bit platforms, so we must load it
+ dynamically. */
+ hMod = GetModuleHandle("advapi32.dll");
+ if (hMod)
+ pfn = (RDRKFunc)GetProcAddress(hMod,
+ "RegDisableReflectionKey");
+ if (!pfn) {
+ PyErr_SetString(PyExc_NotImplementedError,
+ "not implemented on this platform");
+ return NULL;
+ }
+ Py_BEGIN_ALLOW_THREADS
+ rc = (*pfn)(hKey);
+ Py_END_ALLOW_THREADS
+ if (rc != ERROR_SUCCESS)
+ return PyErr_SetFromWindowsErrWithFunction(rc,
+ "RegDisableReflectionKey");
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+static PyObject *
+PyEnableReflectionKey(PyObject *self, PyObject *args)
+{
+ HKEY hKey;
+ PyObject *obKey;
+ HMODULE hMod;
+ typedef LONG (WINAPI *RERKFunc)(HKEY);
+ RERKFunc pfn = NULL;
+ LONG rc;
+
+ if (!PyArg_ParseTuple(args, "O:EnableReflectionKey", &obKey))
+ return NULL;
+ if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE))
+ return NULL;
+
+ /* Only available on 64bit platforms, so we must load it
+ dynamically. */
+ hMod = GetModuleHandle("advapi32.dll");
+ if (hMod)
+ pfn = (RERKFunc)GetProcAddress(hMod,
+ "RegEnableReflectionKey");
+ if (!pfn) {
+ PyErr_SetString(PyExc_NotImplementedError,
+ "not implemented on this platform");
+ return NULL;
+ }
+ Py_BEGIN_ALLOW_THREADS
+ rc = (*pfn)(hKey);
+ Py_END_ALLOW_THREADS
+ if (rc != ERROR_SUCCESS)
+ return PyErr_SetFromWindowsErrWithFunction(rc,
+ "RegEnableReflectionKey");
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+static PyObject *
+PyQueryReflectionKey(PyObject *self, PyObject *args)
+{
+ HKEY hKey;
+ PyObject *obKey;
+ HMODULE hMod;
+ typedef LONG (WINAPI *RQRKFunc)(HKEY, BOOL *);
+ RQRKFunc pfn = NULL;
+ BOOL result;
+ LONG rc;
+
+ if (!PyArg_ParseTuple(args, "O:QueryReflectionKey", &obKey))
+ return NULL;
+ if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE))
+ return NULL;
+
+ /* Only available on 64bit platforms, so we must load it
+ dynamically. */
+ hMod = GetModuleHandle("advapi32.dll");
+ if (hMod)
+ pfn = (RQRKFunc)GetProcAddress(hMod,
+ "RegQueryReflectionKey");
+ if (!pfn) {
+ PyErr_SetString(PyExc_NotImplementedError,
+ "not implemented on this platform");
+ return NULL;
+ }
+ Py_BEGIN_ALLOW_THREADS
+ rc = (*pfn)(hKey, &result);
+ Py_END_ALLOW_THREADS
+ if (rc != ERROR_SUCCESS)
+ return PyErr_SetFromWindowsErrWithFunction(rc,
+ "RegQueryReflectionKey");
+ return PyBool_FromLong(result);
+}
+
+static struct PyMethodDef winreg_methods[] = {
+ {"CloseKey", PyCloseKey, METH_VARARGS, CloseKey_doc},
+ {"ConnectRegistry", PyConnectRegistry, METH_VARARGS, ConnectRegistry_doc},
+ {"CreateKey", PyCreateKey, METH_VARARGS, CreateKey_doc},
+ {"CreateKeyEx", PyCreateKeyEx, METH_VARARGS, CreateKeyEx_doc},
+ {"DeleteKey", PyDeleteKey, METH_VARARGS, DeleteKey_doc},
+ {"DeleteKeyEx", PyDeleteKeyEx, METH_VARARGS, DeleteKeyEx_doc},
+ {"DeleteValue", PyDeleteValue, METH_VARARGS, DeleteValue_doc},
+ {"DisableReflectionKey", PyDisableReflectionKey, METH_VARARGS, DisableReflectionKey_doc},
+ {"EnableReflectionKey", PyEnableReflectionKey, METH_VARARGS, EnableReflectionKey_doc},
+ {"EnumKey", PyEnumKey, METH_VARARGS, EnumKey_doc},
+ {"EnumValue", PyEnumValue, METH_VARARGS, EnumValue_doc},
+ {"ExpandEnvironmentStrings", PyExpandEnvironmentStrings, METH_VARARGS,
+ ExpandEnvironmentStrings_doc },
+ {"FlushKey", PyFlushKey, METH_VARARGS, FlushKey_doc},
+ {"LoadKey", PyLoadKey, METH_VARARGS, LoadKey_doc},
+ {"OpenKey", PyOpenKey, METH_VARARGS, OpenKey_doc},
+ {"OpenKeyEx", PyOpenKey, METH_VARARGS, OpenKeyEx_doc},
+ {"QueryValue", PyQueryValue, METH_VARARGS, QueryValue_doc},
+ {"QueryValueEx", PyQueryValueEx, METH_VARARGS, QueryValueEx_doc},
+ {"QueryInfoKey", PyQueryInfoKey, METH_VARARGS, QueryInfoKey_doc},
+ {"QueryReflectionKey",PyQueryReflectionKey,METH_VARARGS, QueryReflectionKey_doc},
+ {"SaveKey", PySaveKey, METH_VARARGS, SaveKey_doc},
+ {"SetValue", PySetValue, METH_VARARGS, SetValue_doc},
+ {"SetValueEx", PySetValueEx, METH_VARARGS, SetValueEx_doc},
+ NULL,
+};
+
+static void
+insint(PyObject * d, char * name, long value)
+{
+ PyObject *v = PyInt_FromLong(value);
+ if (!v || PyDict_SetItemString(d, name, v))
+ PyErr_Clear();
+ Py_XDECREF(v);
+}
+
+#define ADD_INT(val) insint(d, #val, val)
+
+static void
+inskey(PyObject * d, char * name, HKEY key)
+{
+ PyObject *v = PyLong_FromVoidPtr(key);
+ if (!v || PyDict_SetItemString(d, name, v))
+ PyErr_Clear();
+ Py_XDECREF(v);
+}
+
+#define ADD_KEY(val) inskey(d, #val, val)
+
+PyMODINIT_FUNC init_winreg(void)
+{
+ PyObject *m, *d;
+ m = Py_InitModule3("_winreg", winreg_methods, module_doc);
+ if (m == NULL)
+ return;
+ d = PyModule_GetDict(m);
+ if (PyType_Ready(&PyHKEY_Type) < 0)
+ return;
+ PyHKEY_Type.tp_doc = PyHKEY_doc;
+ Py_INCREF(&PyHKEY_Type);
+ if (PyDict_SetItemString(d, "HKEYType",
+ (PyObject *)&PyHKEY_Type) != 0)
+ return;
+ Py_INCREF(PyExc_WindowsError);
+ if (PyDict_SetItemString(d, "error",
+ PyExc_WindowsError) != 0)
+ return;
+
+ /* Add the relevant constants */
+ ADD_KEY(HKEY_CLASSES_ROOT);
+ ADD_KEY(HKEY_CURRENT_USER);
+ ADD_KEY(HKEY_LOCAL_MACHINE);
+ ADD_KEY(HKEY_USERS);
+ ADD_KEY(HKEY_PERFORMANCE_DATA);
+#ifdef HKEY_CURRENT_CONFIG
+ ADD_KEY(HKEY_CURRENT_CONFIG);
+#endif
+#ifdef HKEY_DYN_DATA
+ ADD_KEY(HKEY_DYN_DATA);
+#endif
+ ADD_INT(KEY_QUERY_VALUE);
+ ADD_INT(KEY_SET_VALUE);
+ ADD_INT(KEY_CREATE_SUB_KEY);
+ ADD_INT(KEY_ENUMERATE_SUB_KEYS);
+ ADD_INT(KEY_NOTIFY);
+ ADD_INT(KEY_CREATE_LINK);
+ ADD_INT(KEY_READ);
+ ADD_INT(KEY_WRITE);
+ ADD_INT(KEY_EXECUTE);
+ ADD_INT(KEY_ALL_ACCESS);
+#ifdef KEY_WOW64_64KEY
+ ADD_INT(KEY_WOW64_64KEY);
+#endif
+#ifdef KEY_WOW64_32KEY
+ ADD_INT(KEY_WOW64_32KEY);
+#endif
+ ADD_INT(REG_OPTION_RESERVED);
+ ADD_INT(REG_OPTION_NON_VOLATILE);
+ ADD_INT(REG_OPTION_VOLATILE);
+ ADD_INT(REG_OPTION_CREATE_LINK);
+ ADD_INT(REG_OPTION_BACKUP_RESTORE);
+ ADD_INT(REG_OPTION_OPEN_LINK);
+ ADD_INT(REG_LEGAL_OPTION);
+ ADD_INT(REG_CREATED_NEW_KEY);
+ ADD_INT(REG_OPENED_EXISTING_KEY);
+ ADD_INT(REG_WHOLE_HIVE_VOLATILE);
+ ADD_INT(REG_REFRESH_HIVE);
+ ADD_INT(REG_NO_LAZY_FLUSH);
+ ADD_INT(REG_NOTIFY_CHANGE_NAME);
+ ADD_INT(REG_NOTIFY_CHANGE_ATTRIBUTES);
+ ADD_INT(REG_NOTIFY_CHANGE_LAST_SET);
+ ADD_INT(REG_NOTIFY_CHANGE_SECURITY);
+ ADD_INT(REG_LEGAL_CHANGE_FILTER);
+ ADD_INT(REG_NONE);
+ ADD_INT(REG_SZ);
+ ADD_INT(REG_EXPAND_SZ);
+ ADD_INT(REG_BINARY);
+ ADD_INT(REG_DWORD);
+ ADD_INT(REG_DWORD_LITTLE_ENDIAN);
+ ADD_INT(REG_DWORD_BIG_ENDIAN);
+ ADD_INT(REG_LINK);
+ ADD_INT(REG_MULTI_SZ);
+ ADD_INT(REG_RESOURCE_LIST);
+ ADD_INT(REG_FULL_RESOURCE_DESCRIPTOR);
+ ADD_INT(REG_RESOURCE_REQUIREMENTS_LIST);
+}
+
diff --git a/PC/bdist_wininst/archive.h b/PC/bdist_wininst/archive.h
index 50ff15c..31a7805 100644
--- a/PC/bdist_wininst/archive.h
+++ b/PC/bdist_wininst/archive.h
@@ -1,9 +1,10 @@
/*
- IMPORTANT NOTE: IF THIS FILE IS CHANGED, PCBUILD\BDIST_WININST.VCXPROJ MUST
- BE REBUILT AS WELL.
+ IMPORTANT NOTE: IF THIS FILE IS CHANGED, WININST-6.EXE MUST BE RECOMPILED
+ WITH THE MSVC6 WININST.DSW WORKSPACE FILE MANUALLY, AND WININST-7.1.EXE MUST
+ BE RECOMPILED WITH THE MSVC 2003.NET WININST-7.1.VCPROJ FILE MANUALLY.
- IF CHANGES TO THIS FILE ARE CHECKED IN, THE RECOMPILED BINARIES MUST BE
- CHECKED IN AS WELL!
+ IF CHANGES TO THIS FILE ARE CHECKED INTO PYTHON CVS, THE RECOMPILED BINARIES
+ MUST BE CHECKED IN AS WELL!
*/
#pragma pack(1)
diff --git a/PC/bdist_wininst/bdist_wininst.vcxproj b/PC/bdist_wininst/bdist_wininst.vcxproj
index d2f1bb7..2ab474e 100644
--- a/PC/bdist_wininst/bdist_wininst.vcxproj
+++ b/PC/bdist_wininst/bdist_wininst.vcxproj
@@ -1,10 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|ARM">
- <Configuration>Debug</Configuration>
- <Platform>ARM</Platform>
- </ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
@@ -13,10 +9,6 @@
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
- <ProjectConfiguration Include="PGInstrument|ARM">
- <Configuration>PGInstrument</Configuration>
- <Platform>ARM</Platform>
- </ProjectConfiguration>
<ProjectConfiguration Include="PGInstrument|Win32">
<Configuration>PGInstrument</Configuration>
<Platform>Win32</Platform>
@@ -25,10 +17,6 @@
<Configuration>PGInstrument</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
- <ProjectConfiguration Include="PGUpdate|ARM">
- <Configuration>PGUpdate</Configuration>
- <Platform>ARM</Platform>
- </ProjectConfiguration>
<ProjectConfiguration Include="PGUpdate|Win32">
<Configuration>PGUpdate</Configuration>
<Platform>Win32</Platform>
@@ -37,10 +25,6 @@
<Configuration>PGUpdate</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
- <ProjectConfiguration Include="Release|ARM">
- <Configuration>Release</Configuration>
- <Platform>ARM</Platform>
- </ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
@@ -53,9 +37,10 @@
<PropertyGroup Label="Globals">
<ProjectGuid>{EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}</ProjectGuid>
<RootNamespace>wininst</RootNamespace>
+ <MakeVersionInfoBeforeTarget>ClCompile</MakeVersionInfoBeforeTarget>
<SupportPGO>false</SupportPGO>
</PropertyGroup>
- <Import Project="..\..\PCbuild\python.props" />
+ <Import Project="..\..\PCBuild\python.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
@@ -67,17 +52,13 @@
</ImportGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\PCbuild\pyproject.props" />
+ <Import Project="..\..\PCBuild\pyproject.props" />
</ImportGroup>
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir>$(PySourcePath)lib\distutils\command\</OutDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>wininst-$(VisualStudioVersion)</TargetName>
- <TargetName Condition="$(PlatformToolset) == 'v140'">wininst-14.0</TargetName>
- <TargetName Condition="$(PlatformToolset) == 'v120'">wininst-12.0</TargetName>
- <TargetName Condition="$(PlatformToolset) == 'v110'">wininst-11.0</TargetName>
- <TargetName Condition="$(PlatformToolset) == 'v100'">wininst-10.0</TargetName>
<TargetName Condition="$(Platform) == 'x64'">$(TargetName)-amd64</TargetName>
<TargetExt>.exe</TargetExt>
</PropertyGroup>
@@ -89,8 +70,6 @@
<Optimization>MinSpace</Optimization>
<AdditionalIncludeDirectories>$(PySourcePath)Modules\zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary Condition="'$(Configuration)'=='Debug'">MultiThreadedDebug</RuntimeLibrary>
- <RuntimeLibrary Condition="'$(Configuration)'=='Release'">MultiThreaded</RuntimeLibrary>
</ClCompile>
<ResourceCompile>
<AdditionalIncludeDirectories>$(PySourcePath)PC\bdist_wininst;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
diff --git a/PC/bdist_wininst/build.bat b/PC/bdist_wininst/build.bat
deleted file mode 100644
index 3ce46cf..0000000
--- a/PC/bdist_wininst/build.bat
+++ /dev/null
@@ -1,19 +0,0 @@
-@echo off
-setlocal
-
-set D=%~dp0
-set PCBUILD=%~dp0..\..\PCbuild\
-
-
-echo Building Lib\distutils\command\wininst-xx.0.exe
-
-call "%PCBUILD%find_msbuild.bat" %MSBUILD%
-if ERRORLEVEL 1 (echo Cannot locate MSBuild.exe on PATH or as MSBUILD variable & exit /b 2)
-
-%MSBUILD% "%D%bdist_wininst.vcxproj" "/p:SolutionDir=%PCBUILD%\" /p:Configuration=Release /p:Platform=Win32
-if errorlevel 1 goto :eof
-
-
-echo Building Lib\distutils\command\wininst-xx.0-amd64.exe
-
-%MSBUILD% "%D%bdist_wininst.vcxproj" "/p:SolutionDir=%PCBUILD%\" /p:Configuration=Release /p:Platform=x64
diff --git a/PC/bdist_wininst/extract.c b/PC/bdist_wininst/extract.c
index 0249d9f..c900f23 100644
--- a/PC/bdist_wininst/extract.c
+++ b/PC/bdist_wininst/extract.c
@@ -1,9 +1,10 @@
/*
- IMPORTANT NOTE: IF THIS FILE IS CHANGED, PCBUILD\BDIST_WININST.VCXPROJ MUST
- BE REBUILT AS WELL.
+ IMPORTANT NOTE: IF THIS FILE IS CHANGED, WININST-6.EXE MUST BE RECOMPILED
+ WITH THE MSVC6 WININST.DSW WORKSPACE FILE MANUALLY, AND WININST-7.1.EXE MUST
+ BE RECOMPILED WITH THE MSVC 2003.NET WININST-7.1.VCPROJ FILE MANUALLY.
- IF CHANGES TO THIS FILE ARE CHECKED IN, THE RECOMPILED BINARIES MUST BE
- CHECKED IN AS WELL!
+ IF CHANGES TO THIS FILE ARE CHECKED INTO PYTHON CVS, THE RECOMPILED BINARIES
+ MUST BE CHECKED IN AS WELL!
*/
#include <windows.h>
@@ -126,7 +127,7 @@ char *map_new_file(DWORD flags, char *filename,
CloseHandle(hFile);
- if (hFileMapping == NULL) {
+ if (hFileMapping == INVALID_HANDLE_VALUE) {
if (notify)
notify(SYSTEM_ERROR,
"CreateFileMapping (%s)", filename);
diff --git a/PC/bdist_wininst/install.c b/PC/bdist_wininst/install.c
index 5d77542..e3b52a8 100644
--- a/PC/bdist_wininst/install.c
+++ b/PC/bdist_wininst/install.c
@@ -1,9 +1,10 @@
/*
- IMPORTANT NOTE: IF THIS FILE IS CHANGED, PCBUILD\BDIST_WININST.VCXPROJ MUST
- BE REBUILT AS WELL.
+ IMPORTANT NOTE: IF THIS FILE IS CHANGED, WININST-6.EXE MUST BE RECOMPILED
+ WITH THE MSVC6 WININST.DSW WORKSPACE FILE MANUALLY, AND WININST-7.1.EXE MUST
+ BE RECOMPILED WITH THE MSVC 2003.NET WININST-7.1.VCPROJ FILE MANUALLY.
- IF CHANGES TO THIS FILE ARE CHECKED IN, THE RECOMPILED BINARIES MUST BE
- CHECKED IN AS WELL!
+ IF CHANGES TO THIS FILE ARE CHECKED INTO PYTHON CVS, THE RECOMPILED BINARIES
+ MUST BE CHECKED IN AS WELL!
*/
/*
@@ -113,7 +114,6 @@
FILE *logfile;
char modulename[MAX_PATH];
-wchar_t wmodulename[MAX_PATH];
HWND hwndMain;
HWND hDialog;
@@ -153,13 +153,6 @@ char *failure_reason = NULL;
HANDLE hBitmap;
char *bitmap_bytes;
-static const char *REGISTRY_SUFFIX_6432 =
-#ifdef _WIN64
- "";
-#else
- "-32";
-#endif
-
#define WM_NUMFILES WM_USER+1
/* wParam: 0, lParam: total number of files */
@@ -306,27 +299,6 @@ static int do_compile_files(int (__cdecl * PyRun_SimpleString)(char *),
typedef void PyObject;
-// Convert a "char *" string to "whcar_t *", or NULL on error.
-// Result string must be free'd
-wchar_t *widen_string(char *src)
-{
- wchar_t *result;
- DWORD dest_cch;
- int src_len = strlen(src) + 1; // include NULL term in all ops
- /* use MultiByteToWideChar() to see how much we need. */
- /* NOTE: this will include the null-term in the length */
- dest_cch = MultiByteToWideChar(CP_ACP, 0, src, src_len, NULL, 0);
- // alloc the buffer
- result = (wchar_t *)malloc(dest_cch * sizeof(wchar_t));
- if (result==NULL)
- return NULL;
- /* do the conversion */
- if (0==MultiByteToWideChar(CP_ACP, 0, src, src_len, result, dest_cch)) {
- free(result);
- return NULL;
- }
- return result;
-}
/*
* Returns number of files which failed to compile,
@@ -335,7 +307,7 @@ wchar_t *widen_string(char *src)
static int compile_filelist(HINSTANCE hPython, BOOL optimize_flag)
{
DECLPROC(hPython, void, Py_Initialize, (void));
- DECLPROC(hPython, void, Py_SetProgramName, (wchar_t *));
+ DECLPROC(hPython, void, Py_SetProgramName, (char *));
DECLPROC(hPython, void, Py_Finalize, (void));
DECLPROC(hPython, int, PyRun_SimpleString, (char *));
DECLPROC(hPython, PyObject *, PySys_GetObject, (char *));
@@ -354,7 +326,7 @@ static int compile_filelist(HINSTANCE hPython, BOOL optimize_flag)
return -1;
*Py_OptimizeFlag = optimize_flag ? 1 : 0;
- Py_SetProgramName(wmodulename);
+ Py_SetProgramName(modulename);
Py_Initialize();
errors += do_compile_files(PyRun_SimpleString, optimize_flag);
@@ -631,18 +603,19 @@ static PyObject *PyMessageBox(PyObject *self, PyObject *args)
return g_Py_BuildValue("i", rc);
}
-static PyObject *GetRootHKey(PyObject *self, PyObject *Py_UNUSED(ignored))
+static PyObject *GetRootHKey(PyObject *self)
{
return g_PyLong_FromVoidPtr(hkey_root);
}
#define METH_VARARGS 0x0001
#define METH_NOARGS 0x0004
+typedef PyObject *(*PyCFunction)(PyObject *, PyObject *);
PyMethodDef meth[] = {
{"create_shortcut", CreateShortcut, METH_VARARGS, NULL},
{"get_special_folder_path", GetSpecialFolderPath, METH_VARARGS, NULL},
- {"get_root_hkey", GetRootHKey, METH_NOARGS, NULL},
+ {"get_root_hkey", (PyCFunction)GetRootHKey, METH_NOARGS, NULL},
{"file_created", FileCreated, METH_VARARGS, NULL},
{"directory_created", DirectoryCreated, METH_VARARGS, NULL},
{"message_box", PyMessageBox, METH_VARARGS, NULL},
@@ -663,8 +636,8 @@ static HINSTANCE LoadPythonDll(char *fname)
if (h)
return h;
wsprintf(subkey_name,
- "SOFTWARE\\Python\\PythonCore\\%d.%d%s\\InstallPath",
- py_major, py_minor, REGISTRY_SUFFIX_6432);
+ "SOFTWARE\\Python\\PythonCore\\%d.%d\\InstallPath",
+ py_major, py_minor);
if (ERROR_SUCCESS != RegQueryValue(HKEY_CURRENT_USER, subkey_name,
fullpath, &size) &&
ERROR_SUCCESS != RegQueryValue(HKEY_LOCAL_MACHINE, subkey_name,
@@ -672,9 +645,7 @@ static HINSTANCE LoadPythonDll(char *fname)
return NULL;
strcat(fullpath, "\\");
strcat(fullpath, fname);
- // We use LOAD_WITH_ALTERED_SEARCH_PATH to ensure any dependent DLLs
- // next to the Python DLL (eg, the CRT DLL) are also loaded.
- return LoadLibraryEx(fullpath, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
+ return LoadLibrary(fullpath);
}
static int prepare_script_environment(HINSTANCE hPython)
@@ -694,7 +665,7 @@ static int prepare_script_environment(HINSTANCE hPython)
if (!Py_BuildValue || !PyArg_ParseTuple || !PyErr_Format)
return 1;
- mod = PyImport_ImportModule("builtins");
+ mod = PyImport_ImportModule("__builtin__");
if (mod) {
int i;
g_PyExc_ValueError = PyObject_GetAttrString(mod, "ValueError");
@@ -717,7 +688,7 @@ static int prepare_script_environment(HINSTANCE hPython)
* 1 if the Python-dll does not export the functions we need
* 2 if no install-script is specified in pathname
* 3 if the install-script file could not be opened
- * the return value of PyRun_SimpleString() or Py_FinalizeEx() otherwise,
+ * the return value of PyRun_SimpleString() otherwise,
* which is 0 if everything is ok, -1 if an exception had occurred
* in the install-script.
*/
@@ -725,12 +696,11 @@ static int prepare_script_environment(HINSTANCE hPython)
static int
do_run_installscript(HINSTANCE hPython, char *pathname, int argc, char **argv)
{
- int fh, result, i;
- static wchar_t *wargv[256];
+ int fh, result;
DECLPROC(hPython, void, Py_Initialize, (void));
- DECLPROC(hPython, int, PySys_SetArgv, (int, wchar_t **));
+ DECLPROC(hPython, int, PySys_SetArgv, (int, char **));
DECLPROC(hPython, int, PyRun_SimpleString, (char *));
- DECLPROC(hPython, int, Py_FinalizeEx, (void));
+ DECLPROC(hPython, void, Py_Finalize, (void));
DECLPROC(hPython, PyObject *, Py_BuildValue, (char *, ...));
DECLPROC(hPython, PyObject *, PyCFunction_New,
(PyMethodDef *, PyObject *));
@@ -738,7 +708,7 @@ do_run_installscript(HINSTANCE hPython, char *pathname, int argc, char **argv)
DECLPROC(hPython, PyObject *, PyErr_Format, (PyObject *, char *));
if (!Py_Initialize || !PySys_SetArgv
- || !PyRun_SimpleString || !Py_FinalizeEx)
+ || !PyRun_SimpleString || !Py_Finalize)
return 1;
if (!Py_BuildValue || !PyArg_ParseTuple || !PyErr_Format)
@@ -750,7 +720,7 @@ do_run_installscript(HINSTANCE hPython, char *pathname, int argc, char **argv)
if (pathname == NULL || pathname[0] == '\0')
return 2;
- fh = open(pathname, _O_RDONLY | O_NOINHERIT);
+ fh = open(pathname, _O_RDONLY);
if (-1 == fh) {
fprintf(stderr, "Could not open postinstall-script %s\n",
pathname);
@@ -762,16 +732,7 @@ do_run_installscript(HINSTANCE hPython, char *pathname, int argc, char **argv)
Py_Initialize();
prepare_script_environment(hPython);
- // widen the argv array for py3k.
- memset(wargv, 0, sizeof(wargv));
- for (i=0;i<argc;i++)
- wargv[i] = argv[i] ? widen_string(argv[i]) : NULL;
- PySys_SetArgv(argc, wargv);
- // free the strings we just widened.
- for (i=0;i<argc;i++)
- if (wargv[i])
- free(wargv[i]);
-
+ PySys_SetArgv(argc, argv);
result = 3;
{
struct _stat statbuf;
@@ -785,9 +746,7 @@ do_run_installscript(HINSTANCE hPython, char *pathname, int argc, char **argv)
}
}
}
- if (Py_FinalizeEx() < 0) {
- result = -1;
- }
+ Py_Finalize();
close(fh);
return result;
@@ -848,24 +807,22 @@ static int do_run_simple_script(HINSTANCE hPython, char *script)
{
int rc;
DECLPROC(hPython, void, Py_Initialize, (void));
- DECLPROC(hPython, void, Py_SetProgramName, (wchar_t *));
- DECLPROC(hPython, int, Py_FinalizeEx, (void));
+ DECLPROC(hPython, void, Py_SetProgramName, (char *));
+ DECLPROC(hPython, void, Py_Finalize, (void));
DECLPROC(hPython, int, PyRun_SimpleString, (char *));
DECLPROC(hPython, void, PyErr_Print, (void));
- if (!Py_Initialize || !Py_SetProgramName || !Py_FinalizeEx ||
+ if (!Py_Initialize || !Py_SetProgramName || !Py_Finalize ||
!PyRun_SimpleString || !PyErr_Print)
return -1;
- Py_SetProgramName(wmodulename);
+ Py_SetProgramName(modulename);
Py_Initialize();
prepare_script_environment(hPython);
rc = PyRun_SimpleString(script);
if (rc)
PyErr_Print();
- if (Py_FinalizeEx() < 0) {
- rc = -1;
- }
+ Py_Finalize();
return rc;
}
@@ -1031,7 +988,7 @@ static char *MapExistingFile(char *pathname, DWORD *psize)
NULL, PAGE_READONLY, 0, 0, NULL);
CloseHandle(hFile);
- if (hFileMapping == NULL)
+ if (hFileMapping == INVALID_HANDLE_VALUE)
return NULL;
data = MapViewOfFile(hFileMapping,
@@ -1228,7 +1185,7 @@ static void CenterWindow(HWND hwnd)
#include <prsht.h>
-INT_PTR CALLBACK
+BOOL CALLBACK
IntroDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
LPNMHDR lpnm;
@@ -1577,7 +1534,7 @@ SCHEME *GetScheme(int major, int minor)
return old_scheme;
}
-INT_PTR CALLBACK
+BOOL CALLBACK
SelectPythonDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
LPNMHDR lpnm;
@@ -1614,7 +1571,7 @@ SelectPythonDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
if (count == 0) {
char Buffer[4096];
- const char *msg;
+ char *msg;
if (target_version && target_version[0]) {
wsprintf(Buffer,
"Python version %s required, which was not found"
@@ -1879,7 +1836,7 @@ static void CloseLogfile(void)
fclose(logfile);
}
-INT_PTR CALLBACK
+BOOL CALLBACK
InstallFilesDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
LPNMHDR lpnm;
@@ -2034,7 +1991,7 @@ InstallFilesDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
}
-INT_PTR CALLBACK
+BOOL CALLBACK
FinishedDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
LPNMHDR lpnm;
@@ -2179,7 +2136,7 @@ BOOL MyIsUserAnAdmin()
// to leave the library loaded)
if (0 == (shell32=LoadLibrary("shell32.dll")))
return FALSE;
- if (NULL == (pfnIsUserAnAdmin=(PFNIsUserAnAdmin)GetProcAddress(shell32, "IsUserAnAdmin")))
+ if (0 == (pfnIsUserAnAdmin=(PFNIsUserAnAdmin)GetProcAddress(shell32, "IsUserAnAdmin")))
return FALSE;
return (*pfnIsUserAnAdmin)();
}
@@ -2210,6 +2167,23 @@ BOOL NeedAutoUAC()
return TRUE;
}
+// Returns TRUE if the platform supports UAC.
+BOOL PlatformSupportsUAC()
+{
+ // Note that win2k does seem to support ShellExecute with 'runas',
+ // but does *not* support IsUserAnAdmin - so we just pretend things
+ // only work on XP and later.
+ BOOL bIsWindowsXPorLater;
+ OSVERSIONINFO winverinfo;
+ winverinfo.dwOSVersionInfoSize = sizeof(winverinfo);
+ if (!GetVersionEx(&winverinfo))
+ return FALSE; // something bad has gone wrong
+ bIsWindowsXPorLater =
+ ( (winverinfo.dwMajorVersion > 5) ||
+ ( (winverinfo.dwMajorVersion == 5) && (winverinfo.dwMinorVersion >= 1) ));
+ return bIsWindowsXPorLater;
+}
+
// Spawn ourself as an elevated application. On failure, a message is
// displayed to the user - but this app will always terminate, even
// on error.
@@ -2263,11 +2237,9 @@ int DoInstall(void)
GetPrivateProfileString("Setup", "user_access_control", "",
user_access_control, sizeof(user_access_control), ini_file);
- strcat(target_version, REGISTRY_SUFFIX_6432);
-
// See if we need to do the Vista UAC magic.
if (strcmp(user_access_control, "force")==0) {
- if (!MyIsUserAnAdmin()) {
+ if (PlatformSupportsUAC() && !MyIsUserAnAdmin()) {
SpawnUAC();
return 0;
}
@@ -2275,7 +2247,7 @@ int DoInstall(void)
} else if (strcmp(user_access_control, "auto")==0) {
// Check if it looks like we need UAC control, based
// on how Python itself was installed.
- if (!MyIsUserAnAdmin() && NeedAutoUAC()) {
+ if (PlatformSupportsUAC() && !MyIsUserAnAdmin() && NeedAutoUAC()) {
SpawnUAC();
return 0;
}
@@ -2541,7 +2513,7 @@ int DoUninstall(int argc, char **argv)
if (!lines)
return SystemError(0, "Out of memory");
- /* Read the whole logfile, reallocating the buffer */
+ /* Read the whole logfile, realloacting the buffer */
while (fgets(buffer, sizeof(buffer), logfile)) {
int len = strlen(buffer);
/* remove trailing white space */
@@ -2657,7 +2629,6 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst,
char *basename;
GetModuleFileName(NULL, modulename, sizeof(modulename));
- GetModuleFileNameW(NULL, wmodulename, sizeof(wmodulename)/sizeof(wmodulename[0]));
/* Map the executable file to memory */
arc_data = MapExistingFile(modulename, &arc_size);
diff --git a/PC/bdist_wininst/install.rc b/PC/bdist_wininst/install.rc
index dfa2ffc..d018b48 100644
--- a/PC/bdist_wininst/install.rc
+++ b/PC/bdist_wininst/install.rc
@@ -1,20 +1,97 @@
/*
- IMPORTANT NOTE: IF THIS FILE IS CHANGED, PCBUILD\BDIST_WININST.VCXPROJ MUST
- BE REBUILT AS WELL.
+ IMPORTANT NOTE: IF THIS FILE IS CHANGED, WININST-6.EXE MUST BE RECOMPILED
+ WITH THE MSVC6 WININST.DSW WORKSPACE FILE MANUALLY, AND WININST-7.1.EXE MUST
+ BE RECOMPILED WITH THE MSVC 2003.NET WININST-7.1.VCPROJ FILE MANUALLY.
- IF CHANGES TO THIS FILE ARE CHECKED IN, THE RECOMPILED BINARIES MUST BE
- CHECKED IN AS WELL!
+ IF CHANGES TO THIS FILE ARE CHECKED INTO PYTHON CVS, THE RECOMPILED BINARIES
+ MUST BE CHECKED IN AS WELL!
*/
-#include <winres.h>
+//Microsoft Developer Studio generated resource script.
+//
#include "resource.h"
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// Neutral resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU)
+#ifdef _WIN32
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
IDB_BITMAP BITMAP DISCARDABLE "PythonPowered.bmp"
+#endif // Neutral resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////////
+// German (Germany) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)
+#ifdef _WIN32
+LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "#include ""afxres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+#endif // German (Germany) resources
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
IDD_INTRO DIALOGEX 0, 0, 379, 178
STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Setup"
@@ -75,3 +152,78 @@ BEGIN
EDITTEXT IDC_INFO,125,40,247,131,ES_MULTILINE | ES_READONLY |
WS_VSCROLL | WS_HSCROLL | NOT WS_TABSTOP
END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO DISCARDABLE
+BEGIN
+ IDD_INTRO, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 372
+ VERTGUIDE, 125
+ VERTGUIDE, 372
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 171
+ HORZGUIDE, 8
+ HORZGUIDE, 31
+ END
+
+ IDD_SELECTPYTHON, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 372
+ VERTGUIDE, 125
+ VERTGUIDE, 372
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 171
+ HORZGUIDE, 8
+ HORZGUIDE, 41
+ END
+
+ IDD_INSTALLFILES, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 372
+ VERTGUIDE, 125
+ VERTGUIDE, 371
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 171
+ HORZGUIDE, 8
+ HORZGUIDE, 41
+ END
+
+ IDD_FINISHED, DIALOG
+ BEGIN
+ LEFTMARGIN, 6
+ RIGHTMARGIN, 372
+ VERTGUIDE, 125
+ VERTGUIDE, 372
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 171
+ HORZGUIDE, 8
+ HORZGUIDE, 41
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+#endif // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/PC/bdist_wininst/resource.h b/PC/bdist_wininst/resource.h
index 86aeabb..35ba3c2 100644
--- a/PC/bdist_wininst/resource.h
+++ b/PC/bdist_wininst/resource.h
@@ -1,11 +1,16 @@
/*
- IMPORTANT NOTE: IF THIS FILE IS CHANGED, PCBUILD\BDIST_WININST.VCXPROJ MUST
- BE REBUILT AS WELL.
+ IMPORTANT NOTE: IF THIS FILE IS CHANGED, WININST-6.EXE MUST BE RECOMPILED
+ WITH THE MSVC6 WININST.DSW WORKSPACE FILE MANUALLY, AND WININST-7.1.EXE MUST
+ BE RECOMPILED WITH THE MSVC 2003.NET WININST-7.1.VCPROJ FILE MANUALLY.
- IF CHANGES TO THIS FILE ARE CHECKED IN, THE RECOMPILED BINARIES MUST BE
- CHECKED IN AS WELL!
+ IF CHANGES TO THIS FILE ARE CHECKED INTO PYTHON CVS, THE RECOMPILED BINARIES
+ MUST BE CHECKED IN AS WELL!
*/
+//{{NO_DEPENDENCIES}}
+// Microsoft Developer Studio generated include file.
+// Used by install.rc
+//
#define IDD_DIALOG1 101
#define IDB_BITMAP1 103
#define IDD_INTRO 107
@@ -29,3 +34,14 @@
#define IDC_BUILD_INFO 1024
#define IDC_BITMAP 1025
#define IDC_OTHERPYTHON 1026
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 112
+#define _APS_NEXT_COMMAND_VALUE 40001
+#define _APS_NEXT_CONTROL_VALUE 1028
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
diff --git a/PC/bdist_wininst/wininst-7.1.sln b/PC/bdist_wininst/wininst-7.1.sln
new file mode 100644
index 0000000..ff5250c
--- /dev/null
+++ b/PC/bdist_wininst/wininst-7.1.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wininst", "wininst-7.1.vcproj", "{EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ Debug = Debug
+ Release = Release
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Debug.ActiveCfg = Debug|Win32
+ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Debug.Build.0 = Debug|Win32
+ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Release.ActiveCfg = Release|Win32
+ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Release.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/PC/bdist_wininst/wininst-7.1.vcproj b/PC/bdist_wininst/wininst-7.1.vcproj
new file mode 100644
index 0000000..1ce2bf1
--- /dev/null
+++ b/PC/bdist_wininst/wininst-7.1.vcproj
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="wininst"
+ ProjectGUID="{EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}"
+ RootNamespace="wininst"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\..\..\lib\distutils\command"
+ IntermediateDirectory=".\temp-release"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="1"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\..\zlib-1.2.3"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\temp-release/wininst.pch"
+ AssemblerListingLocation=".\temp-release/"
+ ObjectFile=".\temp-release/"
+ ProgramDataBaseFileName=".\temp-release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="..\..\..\zlib-1.2.3\zlib.lib imagehlp.lib comctl32.lib"
+ OutputFile="..\..\lib\distutils\command/wininst-7.1.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ IgnoreDefaultLibraryNames="LIBC"
+ ProgramDatabaseFile=".\..\..\lib\distutils\command/wininst-6.pdb"
+ SubSystem="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\..\..\lib\distutils\command/wininst.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1031"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\temp-debug"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\Include,..\..\..\zlib-1.2.1"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\temp-debug/wininst.pch"
+ AssemblerListingLocation=".\temp-debug/"
+ ObjectFile=".\temp-debug/"
+ ProgramDataBaseFileName=".\temp-debug/"
+ BrowseInformation="1"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="1"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="..\..\..\zlib-1.2.1\zlib.lib imagehlp.lib comctl32.lib"
+ OutputFile="..\..\lib\distutils\command/wininst-7.1_d.exe"
+ LinkIncremental="2"
+ SuppressStartupBanner="TRUE"
+ IgnoreDefaultLibraryNames="LIBC"
+ GenerateDebugInformation="TRUE"
+ SubSystem="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\./wininst.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1031"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
+ <File
+ RelativePath="extract.c">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="1"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ BrowseInformation="1"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="install.c">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="1"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ BrowseInformation="1"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="install.rc">
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl">
+ <File
+ RelativePath="archive.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
+ <File
+ RelativePath="PythonPowered.bmp">
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/bdist_wininst/wininst-8.sln b/PC/bdist_wininst/wininst-8.sln
new file mode 100644
index 0000000..1dec8a2
--- /dev/null
+++ b/PC/bdist_wininst/wininst-8.sln
@@ -0,0 +1,19 @@
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wininst", "wininst-8.vcproj", "{EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Debug|Win32.Build.0 = Debug|Win32
+ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Release|Win32.ActiveCfg = Release|Win32
+ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/PC/bdist_wininst/wininst-8.vcproj b/PC/bdist_wininst/wininst-8.vcproj
new file mode 100644
index 0000000..69b86a3
--- /dev/null
+++ b/PC/bdist_wininst/wininst-8.vcproj
@@ -0,0 +1,320 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="wininst"
+ ProjectGUID="{EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}"
+ RootNamespace="wininst"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\..\..\lib\distutils\command"
+ IntermediateDirectory=".\temp-release"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName=".\..\..\lib\distutils\command/wininst.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="1"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\Include,..\..\Modules\zlib"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile=".\temp-release/wininst.pch"
+ AssemblerListingLocation=".\temp-release/"
+ ObjectFile=".\temp-release/"
+ ProgramDataBaseFileName=".\temp-release/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1031"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="imagehlp.lib comctl32.lib"
+ OutputFile="..\..\lib\distutils\command/wininst-8.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ IgnoreDefaultLibraryNames="LIBC"
+ ProgramDatabaseFile=".\..\..\lib\distutils\command/wininst-6.pdb"
+ SubSystem="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\."
+ IntermediateDirectory=".\temp-debug"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName=".\./wininst.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\Include,..\..\Modules\zlib"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile=".\temp-debug/wininst.pch"
+ AssemblerListingLocation=".\temp-debug/"
+ ObjectFile=".\temp-debug/"
+ ProgramDataBaseFileName=".\temp-debug/"
+ BrowseInformation="1"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="1"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1031"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="imagehlp.lib comctl32.lib"
+ OutputFile="..\..\lib\distutils\command/wininst-8_d.exe"
+ LinkIncremental="2"
+ SuppressStartupBanner="true"
+ IgnoreDefaultLibraryNames="LIBC"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+ >
+ <File
+ RelativePath="extract.c"
+ >
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="1"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="install.c"
+ >
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="1"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="install.rc"
+ >
+ </File>
+ <Filter
+ Name="zlib"
+ >
+ <File
+ RelativePath="..\..\Modules\zlib\adler32.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\crc32.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inffast.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inflate.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\inftrees.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\zlib\zutil.c"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl"
+ >
+ <File
+ RelativePath="archive.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+ >
+ <File
+ RelativePath="PythonPowered.bmp"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/bdist_wininst/wininst.dsp b/PC/bdist_wininst/wininst.dsp
new file mode 100644
index 0000000..6985569
--- /dev/null
+++ b/PC/bdist_wininst/wininst.dsp
@@ -0,0 +1,123 @@
+# Microsoft Developer Studio Project File - Name="wininst" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Application" 0x0101
+
+CFG=wininst - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "wininst.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "wininst.mak" CFG="wininst - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "wininst - Win32 Release" (based on "Win32 (x86) Application")
+!MESSAGE "wininst - Win32 Debug" (based on "Win32 (x86) Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "wininst - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\lib\distutils\command"
+# PROP Intermediate_Dir "temp-release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /O1 /I "..\..\Include" /I "..\..\..\zlib-1.2.3" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x407 /d "NDEBUG"
+# ADD RSC /l 0x407 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
+# ADD LINK32 ..\..\..\zlib-1.2.3\zlib.lib imagehlp.lib comdlg32.lib ole32.lib comctl32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"LIBC" /out:"..\..\lib\distutils\command/wininst-6.0.exe"
+
+!ELSEIF "$(CFG)" == "wininst - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "temp-debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MD /W3 /Z7 /Od /I "..\..\Include" /I "..\..\..\zlib-1.2.1" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /FR /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x407 /d "_DEBUG"
+# ADD RSC /l 0x407 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 ..\..\..\zlib-1.2.3\zlib.lib imagehlp.lib comdlg32.lib ole32.lib comctl32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /pdb:none /debug /machine:I386 /nodefaultlib:"LIBC" /out:"..\..\lib\distutils\command/wininst-6.0_d.exe"
+
+!ENDIF
+
+# Begin Target
+
+# Name "wininst - Win32 Release"
+# Name "wininst - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\extract.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\install.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\install.rc
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\archive.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=.\PythonPowered.bmp
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/PC/bdist_wininst/wininst.dsw b/PC/bdist_wininst/wininst.dsw
new file mode 100644
index 0000000..fbc66aa
--- /dev/null
+++ b/PC/bdist_wininst/wininst.dsw
@@ -0,0 +1,29 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "wininst"=.\wininst.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/PC/classicAppCompat.can.xml b/PC/classicAppCompat.can.xml
deleted file mode 100644
index f00475c..0000000
--- a/PC/classicAppCompat.can.xml
+++ /dev/null
@@ -1 +0,0 @@
-<CustomCapabilityDescriptor xmlns="http://schemas.microsoft.com/appx/2016/sccd" xmlns:s="http://schemas.microsoft.com/appx/2016/sccd"><CustomCapabilities><CustomCapability Name="Microsoft.classicAppCompat_8wekyb3d8bbwe"></CustomCapability></CustomCapabilities><AuthorizedEntities><AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0" CertificateSignatureHash="0000000000000000000000000000000000000000000000000000000000000000"></AuthorizedEntity><AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0" CertificateSignatureHash="0000000000000000000000000000000000000000000000000000000000000000"></AuthorizedEntity><AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0" CertificateSignatureHash="0000000000000000000000000000000000000000000000000000000000000000"></AuthorizedEntity><AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0" CertificateSignatureHash="0000000000000000000000000000000000000000000000000000000000000000"></AuthorizedEntity><AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0" CertificateSignatureHash="0000000000000000000000000000000000000000000000000000000000000000"></AuthorizedEntity><AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0" CertificateSignatureHash="0000000000000000000000000000000000000000000000000000000000000000"></AuthorizedEntity><AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0" CertificateSignatureHash="0000000000000000000000000000000000000000000000000000000000000000"></AuthorizedEntity><AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.14_qbz5n2kfra8p0" CertificateSignatureHash="0000000000000000000000000000000000000000000000000000000000000000"></AuthorizedEntity><AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.15_qbz5n2kfra8p0" CertificateSignatureHash="0000000000000000000000000000000000000000000000000000000000000000"></AuthorizedEntity><AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0" CertificateSignatureHash="279cd652c4e252bfbe5217ac722205d7729ba409148cfa9e6d9e5b1cb94eaff1"></AuthorizedEntity><AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0" CertificateSignatureHash="279cd652c4e252bfbe5217ac722205d7729ba409148cfa9e6d9e5b1cb94eaff1"></AuthorizedEntity><AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0" CertificateSignatureHash="279cd652c4e252bfbe5217ac722205d7729ba409148cfa9e6d9e5b1cb94eaff1"></AuthorizedEntity><AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0" CertificateSignatureHash="279cd652c4e252bfbe5217ac722205d7729ba409148cfa9e6d9e5b1cb94eaff1"></AuthorizedEntity><AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0" CertificateSignatureHash="279cd652c4e252bfbe5217ac722205d7729ba409148cfa9e6d9e5b1cb94eaff1"></AuthorizedEntity><AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0" CertificateSignatureHash="279cd652c4e252bfbe5217ac722205d7729ba409148cfa9e6d9e5b1cb94eaff1"></AuthorizedEntity><AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0" CertificateSignatureHash="279cd652c4e252bfbe5217ac722205d7729ba409148cfa9e6d9e5b1cb94eaff1"></AuthorizedEntity><AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.14_qbz5n2kfra8p0" CertificateSignatureHash="279cd652c4e252bfbe5217ac722205d7729ba409148cfa9e6d9e5b1cb94eaff1"></AuthorizedEntity><AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.15_qbz5n2kfra8p0" CertificateSignatureHash="279cd652c4e252bfbe5217ac722205d7729ba409148cfa9e6d9e5b1cb94eaff1"></AuthorizedEntity></AuthorizedEntities></CustomCapabilityDescriptor> \ No newline at end of file
diff --git a/PC/classicAppCompat.cat b/PC/classicAppCompat.cat
deleted file mode 100644
index 3d21359..0000000
--- a/PC/classicAppCompat.cat
+++ /dev/null
Binary files differ
diff --git a/PC/classicAppCompat.sccd b/PC/classicAppCompat.sccd
deleted file mode 100644
index 9764898..0000000
--- a/PC/classicAppCompat.sccd
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<CustomCapabilityDescriptor xmlns="http://schemas.microsoft.com/appx/2016/sccd" xmlns:s="http://schemas.microsoft.com/appx/2016/sccd">
- <CustomCapabilities>
- <CustomCapability Name="Microsoft.classicAppCompat_8wekyb3d8bbwe"/>
- </CustomCapabilities>
- <AuthorizedEntities>
- <!--PFN for store installation-->
- <AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0" CertificateSignatureHash="0000000000000000000000000000000000000000000000000000000000000000"/>
- <AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0" CertificateSignatureHash="0000000000000000000000000000000000000000000000000000000000000000"/>
- <AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0" CertificateSignatureHash="0000000000000000000000000000000000000000000000000000000000000000"/>
- <AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0" CertificateSignatureHash="0000000000000000000000000000000000000000000000000000000000000000"/>
- <AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0" CertificateSignatureHash="0000000000000000000000000000000000000000000000000000000000000000"/>
- <AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0" CertificateSignatureHash="0000000000000000000000000000000000000000000000000000000000000000"/>
- <AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0" CertificateSignatureHash="0000000000000000000000000000000000000000000000000000000000000000"/>
- <AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.14_qbz5n2kfra8p0" CertificateSignatureHash="0000000000000000000000000000000000000000000000000000000000000000"/>
- <AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.15_qbz5n2kfra8p0" CertificateSignatureHash="0000000000000000000000000000000000000000000000000000000000000000"/>
- <AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0" CertificateSignatureHash="279cd652c4e252bfbe5217ac722205d7729ba409148cfa9e6d9e5b1cb94eaff1"/>
- <AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0" CertificateSignatureHash="279cd652c4e252bfbe5217ac722205d7729ba409148cfa9e6d9e5b1cb94eaff1"/>
- <AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0" CertificateSignatureHash="279cd652c4e252bfbe5217ac722205d7729ba409148cfa9e6d9e5b1cb94eaff1"/>
- <AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0" CertificateSignatureHash="279cd652c4e252bfbe5217ac722205d7729ba409148cfa9e6d9e5b1cb94eaff1"/>
- <AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0" CertificateSignatureHash="279cd652c4e252bfbe5217ac722205d7729ba409148cfa9e6d9e5b1cb94eaff1"/>
- <AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0" CertificateSignatureHash="279cd652c4e252bfbe5217ac722205d7729ba409148cfa9e6d9e5b1cb94eaff1"/>
- <AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0" CertificateSignatureHash="279cd652c4e252bfbe5217ac722205d7729ba409148cfa9e6d9e5b1cb94eaff1"/>
- <AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.14_qbz5n2kfra8p0" CertificateSignatureHash="279cd652c4e252bfbe5217ac722205d7729ba409148cfa9e6d9e5b1cb94eaff1"/>
- <AuthorizedEntity AppPackageFamilyName="PythonSoftwareFoundation.Python.3.15_qbz5n2kfra8p0" CertificateSignatureHash="279cd652c4e252bfbe5217ac722205d7729ba409148cfa9e6d9e5b1cb94eaff1"/>
- </AuthorizedEntities>
- <!--Once signed, this file can no longer be modified-->
- <Catalog>MIIq5AYJKoZIhvcNAQcCoIIq1TCCKtECAQExDzANBglghkgBZQMEAgEFADCCARAGCSsGAQQBgjcKAaCCAQEwgf4wDAYKKwYBBAGCNwwBAQQQaM+L42jwBUGvBczrtolMmhcNMTgxMTMwMDA1OTAzWjAOBgorBgEEAYI3DAEDBQAwgbwwKgQUWKcU3R38DGPlKK33XGIwKtVL1r4xEjAQBgorBgEEAYI3DAIDMQKCADCBjQQg3K+KBOQX7HfxjRNZC9cx8gIPkEhPRO1nJFRdWQrVEJ4xaTAQBgorBgEEAYI3DAIDMQKCADBVBgorBgEEAYI3AgEEMUcwRTAQBgorBgEEAYI3AgEZogKAADAxMA0GCWCGSAFlAwQCAQUABCDcr4oE5Bfsd/GNE1kL1zHyAg+QSE9E7WckVF1ZCtUQnqCCFFAwggZSMIIEOqADAgECAhMzAAMu49KhfNamygpWAAIAAy7jMA0GCSqGSIb3DQEBCwUAMIGMMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMQ0wCwYDVQQLEwRNT1BSMScwJQYDVQQDEx5NaWNyb3NvZnQgTWFya2V0cGxhY2UgQ0EgRyAwMTMwHhcNMTgxMTMwMDA1NTA1WhcNMTgxMjAzMDA1NTA1WjB0MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNyb3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCwpcimfAx3HEpba1GLL/gDaRVddHE5PXTRmwlgaz8kt6/rq5rlrPFnCnbIc5818v0xJIznastbmrq26xyCEHyMLBKnyneTKE36I7+TGjcY0D7ow+o2vY7LDKMCTGlh31fx1Tvrl+5xTbWX5jdLU/3MB5faeOGh+0Knzwx1KDoXWgPtfXnD8I5jxJieoWoCwCjKTJgBOklLy9nbOalxf0h+xQRy2p5fj+PxAwQPgHWft36AF7/IMbt9FcXMtg4xdpnTYz4OV3dFOPz4m3M8HwVgNMv89W/1Ozc7uOyZt0Ij1baT6r2L3IjYg5ftzpGqaDOFcWlyDFSdhMR6BIKW8xEpAgMBAAGjggHCMIIBvjAYBgNVHSUBAf8EDjAMBgorBgEEAYI3TBwBMB0GA1UdDgQWBBRdpGYiCytx83FYzPSl+o97YzpxGzAPBgNVHREECDAGggRNT1BSMB8GA1UdIwQYMBaAFEnYB1RFhpclHtZZcRLDcpt0OE3oMGIGA1UdHwRbMFkwV6BVoFOGUWh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyME1hcmtldHBsYWNlJTIwQ0ElMjBHJTIwMDEzKDIpLmNybDBvBggrBgEFBQcBAQRjMGEwXwYIKwYBBQUHMAKGU2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0JTIwTWFya2V0cGxhY2UlMjBDQSUyMEclMjAwMTMoMikuY3J0MAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgXgMDwGCSsGAQQBgjcVBwQvMC0GJSsGAQQBgjcVCIOS9kTqrxCDkY0wgqzgLIKinDE0g+6NOIaE7wACAWQCARYwIAYJKwYBBAGCNxUKAQH/BBAwDjAMBgorBgEEAYI3TBwBMA0GCSqGSIb3DQEBCwUAA4ICAQB3Dk3rXH52CDq/z1fwqn9xI5WGjGmu6oAE4HSc3sNdFrSVMMGm4gTlYGWSZ0wJUUf16mVr/rdXhxuR3MZn+m4Bhdl8KQqYjYbIvCUVj0o9nZ+yT6foeY8bKnB+K5h6rol+mjDj5IfcutC4x2Kx5RrtDtRTSoKA63iZ74DYngPpBGBBgaS2c/QzgqPRAMMRqy2KBDP0miCnpR3F4YlzHGyOZwyHhESjYd9kwF47+msuHS04JZpnGHIvBppKN9XQzH3WezNnnX3lz4AyAUMsMFuARqEnacUhrAHL9n5zMv9CzxDYN1r1/aDh/788RuGuZM+E3NtmbxJJ7j6T5/VtXNBRgKtIq8d2+11j6qvKLigOTxSC25/A70BZBEvllLFnvc1vA2LrC9drwt1KpSmWie1nvpilw7o+gHMOG9utUxGha2VuVizuVNGCywTRRjvmGS1QqTfaun1URVrLfnDINXuTgN1Vwp0J5IGpJ3D8yj01NDQ/RworE+3W/R531NBYova9QRhU/igEw/Aa/q8wjZ4Pzxr9oBIo0Ta3Tv6qIggaWXw0U9+F0J7SCqIhn0d0ATO+E1Qs/SxZIAICLwmqzoLYUAh8q153esBs4uesueqgt5ueyHK8V3WjMS4wxEyVN5ZMET3hFtEshsZC31tLDdjq750U4SgQVmoYSm3F3ZOKQDCCBtcwggS/oAMCAQICCmESRKIAAAAAAAIwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAyMDExMB4XDTExMDMyODIxMDkzOVoXDTMxMDMyODIxMTkzOVowfTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEnMCUGA1UEAxMeTWljcm9zb2Z0IE1hcmtldFBsYWNlIFBDQSAyMDExMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAubUaSwGYVsE3MAnPfvmozUhAB3qxBABgJRW1vDp4+tVinXxD32f7k1K89JQ6zDOgS/iDgULC+yFK1K/1Qjac/0M7P6c8v5LSjnWGlERLa/qY32j46S7SLQcit3g2jgoTTO03eUG+9yHZUTGV/FJdRYB8uXhrznJBa+Y+yGwiQKF+m6XFeBH/KORoKFx+dmMoy9EWJ/m/o9IiUj2kzm9C691+vZ/I2w0Bj93W9SPPkV2PCNHlzgfIAoeajWpHmi38Wi3xZHonkzAVBHxPsCBppOoNsWvmAfUM7eBthkSPvFruekyDCPNEYhfGqgqtqLkoBebXLZCOVybF7wTQaLvse60//3P003icRcCoQYgY4NAqrF7j80o5U7DkeXxcB0xvengsaKgiAaV1DKkRbpe98wCqr1AASvm5rAJUYMU+mXmOieV2EelY2jGrenWe9FQpNXYV1NoWBh0WKoFxttoWYAnF705bIWtSZsz08ZfK6WLX4GXNLcPBlgCzfTm1sdKYASWdBbH2haaNhPapFhQQBJHKwnVW2iXErImhuPi45W3MVTZ5D9ASshZx69cLYY6xAdIa+89Kf/uRrsGOVZfahDuDw+NI183iAyzC8z/QRt2P32LYxP0xrCdqVh+DJo2i4NoE8Uk1usCdbVRuBMBQl/AwpOTq7IMvHGElf65CqzUCAwEAAaOCAUswggFHMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBQPU8s/FmEl/mCJHdO5fOiQrbOU0TAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBRyLToCMZBDuRQFTuHqp8cx0SOJNDBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFfMDNfMjIuY3JsMF4GCCsGAQUFBwEBBFIwUDBOBggrBgEFBQcwAoZCaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFfMDNfMjIuY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQCjuZmM8ZVNDgp9wHsL4RY8KJ8nLinvxFTphNGCrxaLknkYG5pmMhVlX+UB/tSiW8W13W60nggz9u5xwMx7v/1t/Tgm6g2brVyOKI5A7u6/2SIJwkJKFw953K0YIKVT28w9zl8dSJnmRnyR0G86ncWbF6CLQ6A6lBQ9o2mTGVqDr4m35WKAnc6YxUUM1y74mbzFFZr63VHsCcOp3pXWnUqAY1rb6Q6NX1b3clncKqLFm0EjKHcQ56grTbwuuB7pMdh/IFCJR01MQzQbDtpEisbOeZUi43YVAAHKqI1EO9bRwg3frCjwAbml9MmI4utMW94gWFgvrMxIX+n42RBDIjf3Ot3jkT6gt3XeTTmO9bptgblZimhERdkFRUFpVtkocJeLoGuuzP93uH/Yp032wzRH+XmMgujfZv+vnfllJqxdowoQLx55FxLLeTeYfwi/xMSjZO2gNven3U/3KeSCd1kUOFS3AOrwZ0UNOXJeW5JQC6Vfd1BavFZ6FAta1fMLu3WFvNB+FqeHUaU3ya7rmtxJnzk29DeSqXgGNmVSywBS4NajI5jJIKAA6UhNJlsg8CHYwUOKf5ej8OoQCkbadUxXygAfxCfW2YBbujtI+PoyejRFxWUjYFWO5LeTI62UMyqfOEiqugoYjNxmQZla2s4YHVuqIC34R85FQlg9pKQBsDCCBxswggUDoAMCAQICEzMAAABCs21EHGjyqKYAAAAAAEIwDQYJKoZIhvcNAQELBQAwfTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEnMCUGA1UEAxMeTWljcm9zb2Z0IE1hcmtldFBsYWNlIFBDQSAyMDExMB4XDTE4MDQyMDE2NDI0NFoXDTIxMDQyMDE2NDI0NFowgYwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xDTALBgNVBAsTBE1PUFIxJzAlBgNVBAMTHk1pY3Jvc29mdCBNYXJrZXRwbGFjZSBDQSBHIDAxMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAOZ2KM9Pq1YCOiqWOivmHjUtkMgznTMP/Mr2YfzZeIIJySg1F4WxFZc4jagGHHNof9NRT+GGnktWsXkZuH1DzQEG4Ps1ln8+4vhbDglqu5ymDnd6RmsyoD+8xfc8bBIvE5o6R+ES4/GVD5TqNsOrWbwETaIZVbmTulJLoTS1WSsSjowmbc+sHqZiY8BNJNThUEmXSjuHqkQKKshuiFWYEqOTitp71mBLyH1wN7/jThRzGpolOeFusRNJdb8sEqvNzEN9Qh+Kp6ndzrnjE+t8ixXW3lShyyOOZqQMwsQn9q9T0v7Q69GuojBTFBOHKwigcCHr4xahuN+ZYMk0xGg+sm3Uj7I9mrWTSTiIRMZNIWq3sFg4+rFg48NYfRlXUpONmL7vXq6v1pIU99d2MXQ6uUrnUr1/n5ZiHGCeFcvWwqO8BYHdcTlrSOkayfFp7W9oCk9QO4Xy0h9cQRedRo2kvdTHxIuJS70Hdv6oePPF2ZFaLucUzzwsR4/XMAVKY8Vsm950omsSSOImsMtzavUdQM+wZFxvHTRqVDkF3quPdME0bCZOWB4hQJmd+o2clw+1mpwPu0/M92nA9FJg7MGPxkFaYW7g26jSqUJZ9AcX+Xa5TSIeqMZt3cRVjMTx0T/v73Sv8TpalqIQ5Fde1+hFK07sOAm3TwgzvlVJnbYgp0/rAgMBAAGjggGCMIIBfjASBgkrBgEEAYI3FQEEBQIDAgACMCMGCSsGAQQBgjcVAgQWBBSbJnDhuc3nQXuKuACsPflEbwjbozAdBgNVHQ4EFgQUSdgHVEWGlyUe1llxEsNym3Q4TegwEQYDVR0gBAowCDAGBgRVHSAAMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB8GA1UdIwQYMBaAFA9Tyz8WYSX+YIkd07l86JCts5TRMFcGA1UdHwRQME4wTKBKoEiGRmh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY01hclBDQTIwMTFfMjAxMS0wMy0yOC5jcmwwWwYIKwYBBQUHAQEETzBNMEsGCCsGAQUFBzAChj9odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY01hclBDQTIwMTFfMjAxMS0wMy0yOC5jcnQwDQYJKoZIhvcNAQELBQADggIBAIa2oa6kvuIHCNfz7anlL0W9tOCt8gQNkxOGRK3yliQIelNQahDJojyEFlHQ2BcHL5oZit3WeSDoYddhojx6YzJIWwfGwtVqgc0JFDKJJ2ZXRYMRsuy01Hn25xob+zRMS6VmV1axQn6uwOSMcgYmzoroh6edjPKu7qXcpt6LmhF2qFvLySA7wBCwfI/rR5/PX6I7a07Av7PpbY6/+2ujd8m1H3hwMrb4Hq3z6gcq62zJ3nDXUbC0Bp6Jt2kV9f0rEFpDK9oxE2qrGBUf8c3O2XirHOgAjRyWjWWtVms+MP8qBIA1NSLrBmToEWVP3sEkQZWMkoZWo4rYEJZpX7UIgdDc9zYNakgTCJqPhqn8AE1sgSSnpqAdMkkP41rTlFCv2ig2QVzDerjGfEv+uPDnlAT0kucbBJxHHvUC4aqUxaTSa0sy2bZ6NWFx8/u0gW8JahzxYvvvZL8SfwaA9P4ETb8pH1jw+6N/LfM2zJrNKhf5hjKa0VDOXUpkYq60OqVVnWJ6oJaSIWNkZKfzPnl/UHA8Bh4qfVrhc9H5PExPhhB9WVTsjf4r+OOVuolJldThcWQqljiPjk5rultr63G5xLyFpxNi4BCrcNQBJFB5wKgOWOyjQTVWTmh2ESaeqZ2aWBjftFHlxJ/qYc7WOGJV0+cHGkB/dvFxmKnv6tuWexiMMYIVUTCCFU0CAQEwgaQwgYwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xDTALBgNVBAsTBE1PUFIxJzAlBgNVBAMTHk1pY3Jvc29mdCBNYXJrZXRwbGFjZSBDQSBHIDAxMwITMwADLuPSoXzWpsoKVgACAAMu4zANBglghkgBZQMEAgEFAKCBlTAYBgkqhkiG9w0BCQMxCwYJKwYBBAGCNwoBMC8GCSqGSIb3DQEJBDEiBCAS0d3bw2YOODvKFr0S4e3BDnaDcZXUKeBO77yvkWzVojBIBgorBgEEAYI3AgEMMTowOKAegBwATQBpAGMAcgBvAHMAbwBmAHQAIABDAG8AcgBwoRaAFGh0dHA6Ly9NaWNyb3NvZnQuY29tMA0GCSqGSIb3DQEBAQUABIIBABoap3Y+2k+zFz2cCmkc8xxHnpIygLsUSRMXeXdjPVcYx3o5cPLIixnL6p8+LIrlIagPg23mzTEmnjZaO4aaexk+3XojlHj22w/bEigEDnKyWt5bHeS0UNHJbxEFYRfd84IP1+mSH4c4+GuU9p3LsAMh6wN03MYrGmczUOnlP6YlxHNQbQxnV0sl14yOE5ni9oT4y+l+SllvbV3/Jhwpov68aoP/2MazqxR4QyGfSxhCPJ4UuDHU7IrpnTxGBTL1/oUU8ED0FxyDoH/Sc5OhTLInFqbZaVzm5Mpr12wYUBL4nE5h0Kf6BCKdgM8a+Ti3wMUsBoC79ff3jE9U/xwSneOhghLlMIIS4QYKKwYBBAGCNwMDATGCEtEwghLNBgkqhkiG9w0BBwKgghK+MIISugIBAzEPMA0GCWCGSAFlAwQCAQUAMIIBUQYLKoZIhvcNAQkQAQSgggFABIIBPDCCATgCAQEGCisGAQQBhFkKAwEwMTANBglghkgBZQMEAgEFAAQghPy22lwuCYESw8jYhb4F9ZDPJ1LPgSSZgJDkyXYzVt4CBlv98KtAoBgTMjAxODExMzAwMTA1MTkuMTM4WjAEgAIB9KCB0KSBzTCByjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJhdGlvbnMgTGltaXRlZDEmMCQGA1UECxMdVGhhbGVzIFRTUyBFU046RDA4Mi00QkZELUVFQkExJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1wIHNlcnZpY2Wggg48MIIE8TCCA9mgAwIBAgITMwAAAOIYOHtm6erB2AAAAAAA4jANBgkqhkiG9w0BAQsFADB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDAeFw0xODA4MjMyMDI3MDNaFw0xOTExMjMyMDI3MDNaMIHKMQswCQYDVQQGEwJVUzELMAkGA1UECBMCV0ExEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0IElyZWxhbmQgT3BlcmF0aW9ucyBMaW1pdGVkMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjpEMDgyLTRCRkQtRUVCQTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgc2VydmljZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKirA72FF3NCLW5mfLO/D0EZ5Ycs00oiMSissXLB6WF9GNdP78QzFwAypxW/+qZSczqaHbDH8hlbxkzf3DiYgAdpQjnGkLujwKtWSaP29/lVf7jFqHy9v6eH+LdOi0LvtrPRW34MyCvpxZyOW4H1h3PkxCBL5Ra21sDqgcVL1me0osw8QTURXmI4LyeLdTH3CcI2AgNDXTjsFBf3QsO+JYyAOYWrTcLnywVN6DrigmgrDJk5w+wR4VrHfl2T9PRZbZ+UDt13wwyB9d6IURuzV8lHsAVfF8t9S0aGVPmkQ3c2waOhHpsp6VEM+T5D2Ph8xJX1r82z67WRlmGcOP2NWC0CAwEAAaOCARswggEXMB0GA1UdDgQWBBSJPpD6BsP2p+crDJL232voEtLxezAfBgNVHSMEGDAWgBTVYzpcijGQ80N7fEYbxTNoWoVtVTBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNUaW1TdGFQQ0FfMjAxMC0wNy0wMS5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1RpbVN0YVBDQV8yMDEwLTA3LTAxLmNydDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMIMA0GCSqGSIb3DQEBCwUAA4IBAQARQHu7ISeBuJSHKuDRI04704cH0B7BYzeEIrD15awviMRcYIfIOHpvGzZOWQgP2Hm0Rr7kvTUu1VrSSaQ7i1gPWdhqMmw5WBnSS5bxeMhhx9UsASeE84vUu82NeZapGSjH38YAb4WT+TtiTkcoI59rA+CTCq108ttIxVfZcr3id76OETIH0HvhlnxOOWjwGy4ul6Za5RoTLG/oo2rrGmVi3FwrNWGezYLBODuEsjzG36lCRtBKC2ZAHfbOz5wtkUHbqh79mUKocjP4r3qxf5TN87yf6g1uTx+J8pdnAi5iHt+ZtangWqnVTE8PoIREWhBVlGFfQdkELUx2Or90aAqWMIIGcTCCBFmgAwIBAgIKYQmBKgAAAAAAAjANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMTAwNzAxMjEzNjU1WhcNMjUwNzAxMjE0NjU1WjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKkdDbx3EYo6IOz8E5f1+n9plGt0VBDVpQoAgoX77XxoSyxfxcPlYcJ2tz5mK1vwFVMnBDEfQRsalR3OCROOfGEwWbEwRA/xYIiEVEMM1024OAizQt2TrNZzMFcmgqNFDdDq9UeBzb8kYDJYYEbyWEeGMoQedGFnkV+BVLHPk0ySwcSmXdFhE24oxhr5hoC732H8RsEnHSRnEnIaIYqvS2SJUGKxXf13Hz3wV3WsvYpCTUBR0Q+cBj5nf/VmwAOWRH7v0Ev9buWayrGo8noqCjHw2k4GkbaICDXoeByw6ZnNPOcvRLqn9NxkvaQBwSAJk3jN/LzAyURdXhacAQVPIk0CAwEAAaOCAeYwggHiMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBTVYzpcijGQ80N7fEYbxTNoWoVtVTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTV9lbLj+iiXGJo0T2UkFvXzpoYxDBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNydDCBoAYDVR0gAQH/BIGVMIGSMIGPBgkrBgEEAYI3LgMwgYEwPQYIKwYBBQUHAgEWMWh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9QS0kvZG9jcy9DUFMvZGVmYXVsdC5odG0wQAYIKwYBBQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AUABvAGwAaQBjAHkAXwBTAHQAYQB0AGUAbQBlAG4AdAAuIB0wDQYJKoZIhvcNAQELBQADggIBAAfmiFEN4sbgmD+BcQM9naOhIW+z66bM9TG+zwXiqf76V20ZMLPCxWbJat/15/B4vceoniXj+bzta1RXCCtRgkQS+7lTjMz0YBKKdsxAQEGb3FwX/1z5Xhc1mCRWS3TvQhDIr79/xn/yN31aPxzymXlKkVIArzgPF/UveYFl2am1a+THzvbKegBvSzBEJCI8z+0DpZaPWSm8tv0E4XCfMkon/VWvL/625Y4zu2JfmttXQOnxzplmkIz/amJ/3cVKC5Em4jnsGUpxY517IW3DnKOiPPp/fZZqkHimbdLhnPkd/DjYlPTGpQqWhqS9nhquBEKDuLWAmyI4ILUl5WTs9/S/fmNZJQ96LjlXdqJxqgaKD4kWumGnEcua2A5HmoDF0M2n0O99g/DhO3EJ3110mCIIYdqwUB5vvfHhAN/nMQekkzr3ZUd46PioSKv33nJ+YWtvd6mBy6cJrDm77MbL2IK0cs0d9LiFAR6A+xuJKlQ5slvayA1VmXqHczsI5pgt6o3gMy4SKfXAL1QnIffIrE7aKLixqduWsqdCosnPGUFN4Ib5KpqjEWYw07t0MkvfY3v1mYovG8chr1m1rtxEPJdQcdeh0sVV42neV8HR3jDA/czmTfsNv11P6Z0eGTgvvM9YBS7vDaBQNdrvCScc1bN+NR4Iuto229Nfj950iEkSoYICzjCCAjcCAQEwgfihgdCkgc0wgcoxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJXQTEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMS0wKwYDVQQLEyRNaWNyb3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQxJjAkBgNVBAsTHVRoYWxlcyBUU1MgRVNOOkQwODItNEJGRC1FRUJBMSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBzZXJ2aWNloiMKAQEwBwYFKw4DAhoDFQByQCUheEOevaI9Zc/3QGrkX42iC6CBgzCBgKR+MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwMA0GCSqGSIb3DQEBBQUAAgUA36ppYDAiGA8yMDE4MTEyOTIxMzQyNFoYDzIwMTgxMTMwMjEzNDI0WjB3MD0GCisGAQQBhFkKBAExLzAtMAoCBQDfqmlgAgEAMAoCAQACAitfAgH/MAcCAQACAhGtMAoCBQDfq7rgAgEAMDYGCisGAQQBhFkKBAIxKDAmMAwGCisGAQQBhFkKAwKgCjAIAgEAAgMHoSChCjAIAgEAAgMBhqAwDQYJKoZIhvcNAQEFBQADgYEAbAXXPR9wy4NA0892GGqetaZF+pNClpGcfEpSuHABaZ4Gzr1nY1nmrhexTtr/U6omHALRWzkQwthk0cy+mnEHXyOZGmoEEpgrLgK3AAP5NbK/XbtHQRyZJQyhZScFbOyQycoE8QQalSVOhWxk/bbBMQaQiYVMIexNd/T0KgaDDUMxggMNMIIDCQIBATCBkzB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMAITMwAAAOIYOHtm6erB2AAAAAAA4jANBglghkgBZQMEAgEFAKCCAUowGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMC8GCSqGSIb3DQEJBDEiBCCr9IiSbx6s8MLdxldRG49+4h6CbicW8hWXAicI3jNmhDCB+gYLKoZIhvcNAQkQAi8xgeowgecwgeQwgb0EIN8BpJSmQCGubWwVa4tW+aMveoHMX/nDnVN8fiDOMsrLMIGYMIGApH4wfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTACEzMAAADiGDh7ZunqwdgAAAAAAOIwIgQgTkOfRvGEZNbr5/hgWclsL4/Q7SOZihE/U0lz2wEMIGcwDQYJKoZIhvcNAQELBQAEggEATlxnCfTzFfTMDvK085zlYPVCroKYW6gKFYnbAhNmrNzcxqALKmIYXpFU7B6HH/vYzkUfCyXpf5tsyEWu0oTySOjyAZ9+2vdaG8nEgjOp0L737lcitgusIjpWtta3Ik0b+mzffnvyjrgTSuKDDni3mxGfvJU77k1Ctempma4H2FJso6Bur0PRH99vIYDu4lHigOSLbeyjR5CiDciBwEVUSA0FxhoFNX1yfpxz3sukOvkaoTduREIjH5LxUjNI1ZTMK/ZkeETI8IPRpWVzAc8q7CujErHKo4sdKej/O2cfUTUHplFLVCGGExpJUCg5FH5jVUUFt75ad8503sdGplggVQ==</Catalog></CustomCapabilityDescriptor>
diff --git a/PC/clinic/_testconsole.c.h b/PC/clinic/_testconsole.c.h
deleted file mode 100644
index cf5e4ee..0000000
--- a/PC/clinic/_testconsole.c.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*[clinic input]
-preserve
-[clinic start generated code]*/
-
-#if defined(MS_WINDOWS)
-
-PyDoc_STRVAR(_testconsole_write_input__doc__,
-"write_input($module, /, file, s)\n"
-"--\n"
-"\n"
-"Writes UTF-16-LE encoded bytes to the console as if typed by a user.");
-
-#define _TESTCONSOLE_WRITE_INPUT_METHODDEF \
- {"write_input", (PyCFunction)(void(*)(void))_testconsole_write_input, METH_FASTCALL|METH_KEYWORDS, _testconsole_write_input__doc__},
-
-static PyObject *
-_testconsole_write_input_impl(PyObject *module, PyObject *file,
- PyBytesObject *s);
-
-static PyObject *
-_testconsole_write_input(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
-{
- PyObject *return_value = NULL;
- static const char * const _keywords[] = {"file", "s", NULL};
- static _PyArg_Parser _parser = {NULL, _keywords, "write_input", 0};
- PyObject *argsbuf[2];
- PyObject *file;
- PyBytesObject *s;
-
- args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 2, 0, argsbuf);
- if (!args) {
- goto exit;
- }
- file = args[0];
- if (!PyBytes_Check(args[1])) {
- _PyArg_BadArgument("write_input", "argument 's'", "bytes", args[1]);
- goto exit;
- }
- s = (PyBytesObject *)args[1];
- return_value = _testconsole_write_input_impl(module, file, s);
-
-exit:
- return return_value;
-}
-
-#endif /* defined(MS_WINDOWS) */
-
-#if defined(MS_WINDOWS)
-
-PyDoc_STRVAR(_testconsole_read_output__doc__,
-"read_output($module, /, file)\n"
-"--\n"
-"\n"
-"Reads a str from the console as written to stdout.");
-
-#define _TESTCONSOLE_READ_OUTPUT_METHODDEF \
- {"read_output", (PyCFunction)(void(*)(void))_testconsole_read_output, METH_FASTCALL|METH_KEYWORDS, _testconsole_read_output__doc__},
-
-static PyObject *
-_testconsole_read_output_impl(PyObject *module, PyObject *file);
-
-static PyObject *
-_testconsole_read_output(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
-{
- PyObject *return_value = NULL;
- static const char * const _keywords[] = {"file", NULL};
- static _PyArg_Parser _parser = {NULL, _keywords, "read_output", 0};
- PyObject *argsbuf[1];
- PyObject *file;
-
- args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
- if (!args) {
- goto exit;
- }
- file = args[0];
- return_value = _testconsole_read_output_impl(module, file);
-
-exit:
- return return_value;
-}
-
-#endif /* defined(MS_WINDOWS) */
-
-#ifndef _TESTCONSOLE_WRITE_INPUT_METHODDEF
- #define _TESTCONSOLE_WRITE_INPUT_METHODDEF
-#endif /* !defined(_TESTCONSOLE_WRITE_INPUT_METHODDEF) */
-
-#ifndef _TESTCONSOLE_READ_OUTPUT_METHODDEF
- #define _TESTCONSOLE_READ_OUTPUT_METHODDEF
-#endif /* !defined(_TESTCONSOLE_READ_OUTPUT_METHODDEF) */
-/*[clinic end generated code: output=dd8b093a91b62753 input=a9049054013a1b77]*/
diff --git a/PC/clinic/msvcrtmodule.c.h b/PC/clinic/msvcrtmodule.c.h
deleted file mode 100644
index 180c3e5..0000000
--- a/PC/clinic/msvcrtmodule.c.h
+++ /dev/null
@@ -1,682 +0,0 @@
-/*[clinic input]
-preserve
-[clinic start generated code]*/
-
-PyDoc_STRVAR(msvcrt_heapmin__doc__,
-"heapmin($module, /)\n"
-"--\n"
-"\n"
-"Minimize the malloc() heap.\n"
-"\n"
-"Force the malloc() heap to clean itself up and return unused blocks\n"
-"to the operating system. On failure, this raises OSError.");
-
-#define MSVCRT_HEAPMIN_METHODDEF \
- {"heapmin", (PyCFunction)msvcrt_heapmin, METH_NOARGS, msvcrt_heapmin__doc__},
-
-static PyObject *
-msvcrt_heapmin_impl(PyObject *module);
-
-static PyObject *
-msvcrt_heapmin(PyObject *module, PyObject *Py_UNUSED(ignored))
-{
- return msvcrt_heapmin_impl(module);
-}
-
-PyDoc_STRVAR(msvcrt_locking__doc__,
-"locking($module, fd, mode, nbytes, /)\n"
-"--\n"
-"\n"
-"Lock part of a file based on file descriptor fd from the C runtime.\n"
-"\n"
-"Raises OSError on failure. The locked region of the file extends from\n"
-"the current file position for nbytes bytes, and may continue beyond\n"
-"the end of the file. mode must be one of the LK_* constants listed\n"
-"below. Multiple regions in a file may be locked at the same time, but\n"
-"may not overlap. Adjacent regions are not merged; they must be unlocked\n"
-"individually.");
-
-#define MSVCRT_LOCKING_METHODDEF \
- {"locking", (PyCFunction)(void(*)(void))msvcrt_locking, METH_FASTCALL, msvcrt_locking__doc__},
-
-static PyObject *
-msvcrt_locking_impl(PyObject *module, int fd, int mode, long nbytes);
-
-static PyObject *
-msvcrt_locking(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
-{
- PyObject *return_value = NULL;
- int fd;
- int mode;
- long nbytes;
-
- if (!_PyArg_CheckPositional("locking", nargs, 3, 3)) {
- goto exit;
- }
- if (PyFloat_Check(args[0])) {
- PyErr_SetString(PyExc_TypeError,
- "integer argument expected, got float" );
- goto exit;
- }
- fd = _PyLong_AsInt(args[0]);
- if (fd == -1 && PyErr_Occurred()) {
- goto exit;
- }
- if (PyFloat_Check(args[1])) {
- PyErr_SetString(PyExc_TypeError,
- "integer argument expected, got float" );
- goto exit;
- }
- mode = _PyLong_AsInt(args[1]);
- if (mode == -1 && PyErr_Occurred()) {
- goto exit;
- }
- if (PyFloat_Check(args[2])) {
- PyErr_SetString(PyExc_TypeError,
- "integer argument expected, got float" );
- goto exit;
- }
- nbytes = PyLong_AsLong(args[2]);
- if (nbytes == -1 && PyErr_Occurred()) {
- goto exit;
- }
- return_value = msvcrt_locking_impl(module, fd, mode, nbytes);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(msvcrt_setmode__doc__,
-"setmode($module, fd, mode, /)\n"
-"--\n"
-"\n"
-"Set the line-end translation mode for the file descriptor fd.\n"
-"\n"
-"To set it to text mode, flags should be os.O_TEXT; for binary, it\n"
-"should be os.O_BINARY.\n"
-"\n"
-"Return value is the previous mode.");
-
-#define MSVCRT_SETMODE_METHODDEF \
- {"setmode", (PyCFunction)(void(*)(void))msvcrt_setmode, METH_FASTCALL, msvcrt_setmode__doc__},
-
-static long
-msvcrt_setmode_impl(PyObject *module, int fd, int flags);
-
-static PyObject *
-msvcrt_setmode(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
-{
- PyObject *return_value = NULL;
- int fd;
- int flags;
- long _return_value;
-
- if (!_PyArg_CheckPositional("setmode", nargs, 2, 2)) {
- goto exit;
- }
- if (PyFloat_Check(args[0])) {
- PyErr_SetString(PyExc_TypeError,
- "integer argument expected, got float" );
- goto exit;
- }
- fd = _PyLong_AsInt(args[0]);
- if (fd == -1 && PyErr_Occurred()) {
- goto exit;
- }
- if (PyFloat_Check(args[1])) {
- PyErr_SetString(PyExc_TypeError,
- "integer argument expected, got float" );
- goto exit;
- }
- flags = _PyLong_AsInt(args[1]);
- if (flags == -1 && PyErr_Occurred()) {
- goto exit;
- }
- _return_value = msvcrt_setmode_impl(module, fd, flags);
- if ((_return_value == -1) && PyErr_Occurred()) {
- goto exit;
- }
- return_value = PyLong_FromLong(_return_value);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(msvcrt_open_osfhandle__doc__,
-"open_osfhandle($module, handle, flags, /)\n"
-"--\n"
-"\n"
-"Create a C runtime file descriptor from the file handle handle.\n"
-"\n"
-"The flags parameter should be a bitwise OR of os.O_APPEND, os.O_RDONLY,\n"
-"and os.O_TEXT. The returned file descriptor may be used as a parameter\n"
-"to os.fdopen() to create a file object.");
-
-#define MSVCRT_OPEN_OSFHANDLE_METHODDEF \
- {"open_osfhandle", (PyCFunction)(void(*)(void))msvcrt_open_osfhandle, METH_FASTCALL, msvcrt_open_osfhandle__doc__},
-
-static long
-msvcrt_open_osfhandle_impl(PyObject *module, void *handle, int flags);
-
-static PyObject *
-msvcrt_open_osfhandle(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
-{
- PyObject *return_value = NULL;
- void *handle;
- int flags;
- long _return_value;
-
- if (!_PyArg_ParseStack(args, nargs, ""_Py_PARSE_UINTPTR"i:open_osfhandle",
- &handle, &flags)) {
- goto exit;
- }
- _return_value = msvcrt_open_osfhandle_impl(module, handle, flags);
- if ((_return_value == -1) && PyErr_Occurred()) {
- goto exit;
- }
- return_value = PyLong_FromLong(_return_value);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(msvcrt_get_osfhandle__doc__,
-"get_osfhandle($module, fd, /)\n"
-"--\n"
-"\n"
-"Return the file handle for the file descriptor fd.\n"
-"\n"
-"Raises OSError if fd is not recognized.");
-
-#define MSVCRT_GET_OSFHANDLE_METHODDEF \
- {"get_osfhandle", (PyCFunction)msvcrt_get_osfhandle, METH_O, msvcrt_get_osfhandle__doc__},
-
-static void *
-msvcrt_get_osfhandle_impl(PyObject *module, int fd);
-
-static PyObject *
-msvcrt_get_osfhandle(PyObject *module, PyObject *arg)
-{
- PyObject *return_value = NULL;
- int fd;
- void *_return_value;
-
- if (PyFloat_Check(arg)) {
- PyErr_SetString(PyExc_TypeError,
- "integer argument expected, got float" );
- goto exit;
- }
- fd = _PyLong_AsInt(arg);
- if (fd == -1 && PyErr_Occurred()) {
- goto exit;
- }
- _return_value = msvcrt_get_osfhandle_impl(module, fd);
- if ((_return_value == NULL || _return_value == INVALID_HANDLE_VALUE) && PyErr_Occurred()) {
- goto exit;
- }
- return_value = PyLong_FromVoidPtr(_return_value);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(msvcrt_kbhit__doc__,
-"kbhit($module, /)\n"
-"--\n"
-"\n"
-"Return true if a keypress is waiting to be read.");
-
-#define MSVCRT_KBHIT_METHODDEF \
- {"kbhit", (PyCFunction)msvcrt_kbhit, METH_NOARGS, msvcrt_kbhit__doc__},
-
-static long
-msvcrt_kbhit_impl(PyObject *module);
-
-static PyObject *
-msvcrt_kbhit(PyObject *module, PyObject *Py_UNUSED(ignored))
-{
- PyObject *return_value = NULL;
- long _return_value;
-
- _return_value = msvcrt_kbhit_impl(module);
- if ((_return_value == -1) && PyErr_Occurred()) {
- goto exit;
- }
- return_value = PyLong_FromLong(_return_value);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(msvcrt_getch__doc__,
-"getch($module, /)\n"
-"--\n"
-"\n"
-"Read a keypress and return the resulting character as a byte string.\n"
-"\n"
-"Nothing is echoed to the console. This call will block if a keypress is\n"
-"not already available, but will not wait for Enter to be pressed. If the\n"
-"pressed key was a special function key, this will return \'\\000\' or\n"
-"\'\\xe0\'; the next call will return the keycode. The Control-C keypress\n"
-"cannot be read with this function.");
-
-#define MSVCRT_GETCH_METHODDEF \
- {"getch", (PyCFunction)msvcrt_getch, METH_NOARGS, msvcrt_getch__doc__},
-
-static int
-msvcrt_getch_impl(PyObject *module);
-
-static PyObject *
-msvcrt_getch(PyObject *module, PyObject *Py_UNUSED(ignored))
-{
- PyObject *return_value = NULL;
- char s[1];
-
- s[0] = msvcrt_getch_impl(module);
- return_value = PyBytes_FromStringAndSize(s, 1);
-
- return return_value;
-}
-
-PyDoc_STRVAR(msvcrt_getwch__doc__,
-"getwch($module, /)\n"
-"--\n"
-"\n"
-"Wide char variant of getch(), returning a Unicode value.");
-
-#define MSVCRT_GETWCH_METHODDEF \
- {"getwch", (PyCFunction)msvcrt_getwch, METH_NOARGS, msvcrt_getwch__doc__},
-
-static wchar_t
-msvcrt_getwch_impl(PyObject *module);
-
-static PyObject *
-msvcrt_getwch(PyObject *module, PyObject *Py_UNUSED(ignored))
-{
- PyObject *return_value = NULL;
- wchar_t _return_value;
-
- _return_value = msvcrt_getwch_impl(module);
- return_value = PyUnicode_FromOrdinal(_return_value);
-
- return return_value;
-}
-
-PyDoc_STRVAR(msvcrt_getche__doc__,
-"getche($module, /)\n"
-"--\n"
-"\n"
-"Similar to getch(), but the keypress will be echoed if possible.");
-
-#define MSVCRT_GETCHE_METHODDEF \
- {"getche", (PyCFunction)msvcrt_getche, METH_NOARGS, msvcrt_getche__doc__},
-
-static int
-msvcrt_getche_impl(PyObject *module);
-
-static PyObject *
-msvcrt_getche(PyObject *module, PyObject *Py_UNUSED(ignored))
-{
- PyObject *return_value = NULL;
- char s[1];
-
- s[0] = msvcrt_getche_impl(module);
- return_value = PyBytes_FromStringAndSize(s, 1);
-
- return return_value;
-}
-
-PyDoc_STRVAR(msvcrt_getwche__doc__,
-"getwche($module, /)\n"
-"--\n"
-"\n"
-"Wide char variant of getche(), returning a Unicode value.");
-
-#define MSVCRT_GETWCHE_METHODDEF \
- {"getwche", (PyCFunction)msvcrt_getwche, METH_NOARGS, msvcrt_getwche__doc__},
-
-static wchar_t
-msvcrt_getwche_impl(PyObject *module);
-
-static PyObject *
-msvcrt_getwche(PyObject *module, PyObject *Py_UNUSED(ignored))
-{
- PyObject *return_value = NULL;
- wchar_t _return_value;
-
- _return_value = msvcrt_getwche_impl(module);
- return_value = PyUnicode_FromOrdinal(_return_value);
-
- return return_value;
-}
-
-PyDoc_STRVAR(msvcrt_putch__doc__,
-"putch($module, char, /)\n"
-"--\n"
-"\n"
-"Print the byte string char to the console without buffering.");
-
-#define MSVCRT_PUTCH_METHODDEF \
- {"putch", (PyCFunction)msvcrt_putch, METH_O, msvcrt_putch__doc__},
-
-static PyObject *
-msvcrt_putch_impl(PyObject *module, char char_value);
-
-static PyObject *
-msvcrt_putch(PyObject *module, PyObject *arg)
-{
- PyObject *return_value = NULL;
- char char_value;
-
- if (PyBytes_Check(arg) && PyBytes_GET_SIZE(arg) == 1) {
- char_value = PyBytes_AS_STRING(arg)[0];
- }
- else if (PyByteArray_Check(arg) && PyByteArray_GET_SIZE(arg) == 1) {
- char_value = PyByteArray_AS_STRING(arg)[0];
- }
- else {
- _PyArg_BadArgument("putch", "argument", "a byte string of length 1", arg);
- goto exit;
- }
- return_value = msvcrt_putch_impl(module, char_value);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(msvcrt_putwch__doc__,
-"putwch($module, unicode_char, /)\n"
-"--\n"
-"\n"
-"Wide char variant of putch(), accepting a Unicode value.");
-
-#define MSVCRT_PUTWCH_METHODDEF \
- {"putwch", (PyCFunction)msvcrt_putwch, METH_O, msvcrt_putwch__doc__},
-
-static PyObject *
-msvcrt_putwch_impl(PyObject *module, int unicode_char);
-
-static PyObject *
-msvcrt_putwch(PyObject *module, PyObject *arg)
-{
- PyObject *return_value = NULL;
- int unicode_char;
-
- if (!PyUnicode_Check(arg)) {
- _PyArg_BadArgument("putwch", "argument", "a unicode character", arg);
- goto exit;
- }
- if (PyUnicode_READY(arg)) {
- goto exit;
- }
- if (PyUnicode_GET_LENGTH(arg) != 1) {
- _PyArg_BadArgument("putwch", "argument", "a unicode character", arg);
- goto exit;
- }
- unicode_char = PyUnicode_READ_CHAR(arg, 0);
- return_value = msvcrt_putwch_impl(module, unicode_char);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(msvcrt_ungetch__doc__,
-"ungetch($module, char, /)\n"
-"--\n"
-"\n"
-"Opposite of getch.\n"
-"\n"
-"Cause the byte string char to be \"pushed back\" into the\n"
-"console buffer; it will be the next character read by\n"
-"getch() or getche().");
-
-#define MSVCRT_UNGETCH_METHODDEF \
- {"ungetch", (PyCFunction)msvcrt_ungetch, METH_O, msvcrt_ungetch__doc__},
-
-static PyObject *
-msvcrt_ungetch_impl(PyObject *module, char char_value);
-
-static PyObject *
-msvcrt_ungetch(PyObject *module, PyObject *arg)
-{
- PyObject *return_value = NULL;
- char char_value;
-
- if (PyBytes_Check(arg) && PyBytes_GET_SIZE(arg) == 1) {
- char_value = PyBytes_AS_STRING(arg)[0];
- }
- else if (PyByteArray_Check(arg) && PyByteArray_GET_SIZE(arg) == 1) {
- char_value = PyByteArray_AS_STRING(arg)[0];
- }
- else {
- _PyArg_BadArgument("ungetch", "argument", "a byte string of length 1", arg);
- goto exit;
- }
- return_value = msvcrt_ungetch_impl(module, char_value);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(msvcrt_ungetwch__doc__,
-"ungetwch($module, unicode_char, /)\n"
-"--\n"
-"\n"
-"Wide char variant of ungetch(), accepting a Unicode value.");
-
-#define MSVCRT_UNGETWCH_METHODDEF \
- {"ungetwch", (PyCFunction)msvcrt_ungetwch, METH_O, msvcrt_ungetwch__doc__},
-
-static PyObject *
-msvcrt_ungetwch_impl(PyObject *module, int unicode_char);
-
-static PyObject *
-msvcrt_ungetwch(PyObject *module, PyObject *arg)
-{
- PyObject *return_value = NULL;
- int unicode_char;
-
- if (!PyUnicode_Check(arg)) {
- _PyArg_BadArgument("ungetwch", "argument", "a unicode character", arg);
- goto exit;
- }
- if (PyUnicode_READY(arg)) {
- goto exit;
- }
- if (PyUnicode_GET_LENGTH(arg) != 1) {
- _PyArg_BadArgument("ungetwch", "argument", "a unicode character", arg);
- goto exit;
- }
- unicode_char = PyUnicode_READ_CHAR(arg, 0);
- return_value = msvcrt_ungetwch_impl(module, unicode_char);
-
-exit:
- return return_value;
-}
-
-#if defined(_DEBUG)
-
-PyDoc_STRVAR(msvcrt_CrtSetReportFile__doc__,
-"CrtSetReportFile($module, type, file, /)\n"
-"--\n"
-"\n"
-"Wrapper around _CrtSetReportFile.\n"
-"\n"
-"Only available on Debug builds.");
-
-#define MSVCRT_CRTSETREPORTFILE_METHODDEF \
- {"CrtSetReportFile", (PyCFunction)(void(*)(void))msvcrt_CrtSetReportFile, METH_FASTCALL, msvcrt_CrtSetReportFile__doc__},
-
-static void *
-msvcrt_CrtSetReportFile_impl(PyObject *module, int type, void *file);
-
-static PyObject *
-msvcrt_CrtSetReportFile(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
-{
- PyObject *return_value = NULL;
- int type;
- void *file;
- void *_return_value;
-
- if (!_PyArg_ParseStack(args, nargs, "i"_Py_PARSE_UINTPTR":CrtSetReportFile",
- &type, &file)) {
- goto exit;
- }
- _return_value = msvcrt_CrtSetReportFile_impl(module, type, file);
- if ((_return_value == NULL || _return_value == INVALID_HANDLE_VALUE) && PyErr_Occurred()) {
- goto exit;
- }
- return_value = PyLong_FromVoidPtr(_return_value);
-
-exit:
- return return_value;
-}
-
-#endif /* defined(_DEBUG) */
-
-#if defined(_DEBUG)
-
-PyDoc_STRVAR(msvcrt_CrtSetReportMode__doc__,
-"CrtSetReportMode($module, type, mode, /)\n"
-"--\n"
-"\n"
-"Wrapper around _CrtSetReportMode.\n"
-"\n"
-"Only available on Debug builds.");
-
-#define MSVCRT_CRTSETREPORTMODE_METHODDEF \
- {"CrtSetReportMode", (PyCFunction)(void(*)(void))msvcrt_CrtSetReportMode, METH_FASTCALL, msvcrt_CrtSetReportMode__doc__},
-
-static long
-msvcrt_CrtSetReportMode_impl(PyObject *module, int type, int mode);
-
-static PyObject *
-msvcrt_CrtSetReportMode(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
-{
- PyObject *return_value = NULL;
- int type;
- int mode;
- long _return_value;
-
- if (!_PyArg_CheckPositional("CrtSetReportMode", nargs, 2, 2)) {
- goto exit;
- }
- if (PyFloat_Check(args[0])) {
- PyErr_SetString(PyExc_TypeError,
- "integer argument expected, got float" );
- goto exit;
- }
- type = _PyLong_AsInt(args[0]);
- if (type == -1 && PyErr_Occurred()) {
- goto exit;
- }
- if (PyFloat_Check(args[1])) {
- PyErr_SetString(PyExc_TypeError,
- "integer argument expected, got float" );
- goto exit;
- }
- mode = _PyLong_AsInt(args[1]);
- if (mode == -1 && PyErr_Occurred()) {
- goto exit;
- }
- _return_value = msvcrt_CrtSetReportMode_impl(module, type, mode);
- if ((_return_value == -1) && PyErr_Occurred()) {
- goto exit;
- }
- return_value = PyLong_FromLong(_return_value);
-
-exit:
- return return_value;
-}
-
-#endif /* defined(_DEBUG) */
-
-#if defined(_DEBUG)
-
-PyDoc_STRVAR(msvcrt_set_error_mode__doc__,
-"set_error_mode($module, mode, /)\n"
-"--\n"
-"\n"
-"Wrapper around _set_error_mode.\n"
-"\n"
-"Only available on Debug builds.");
-
-#define MSVCRT_SET_ERROR_MODE_METHODDEF \
- {"set_error_mode", (PyCFunction)msvcrt_set_error_mode, METH_O, msvcrt_set_error_mode__doc__},
-
-static long
-msvcrt_set_error_mode_impl(PyObject *module, int mode);
-
-static PyObject *
-msvcrt_set_error_mode(PyObject *module, PyObject *arg)
-{
- PyObject *return_value = NULL;
- int mode;
- long _return_value;
-
- if (PyFloat_Check(arg)) {
- PyErr_SetString(PyExc_TypeError,
- "integer argument expected, got float" );
- goto exit;
- }
- mode = _PyLong_AsInt(arg);
- if (mode == -1 && PyErr_Occurred()) {
- goto exit;
- }
- _return_value = msvcrt_set_error_mode_impl(module, mode);
- if ((_return_value == -1) && PyErr_Occurred()) {
- goto exit;
- }
- return_value = PyLong_FromLong(_return_value);
-
-exit:
- return return_value;
-}
-
-#endif /* defined(_DEBUG) */
-
-PyDoc_STRVAR(msvcrt_SetErrorMode__doc__,
-"SetErrorMode($module, mode, /)\n"
-"--\n"
-"\n"
-"Wrapper around SetErrorMode.");
-
-#define MSVCRT_SETERRORMODE_METHODDEF \
- {"SetErrorMode", (PyCFunction)msvcrt_SetErrorMode, METH_O, msvcrt_SetErrorMode__doc__},
-
-static PyObject *
-msvcrt_SetErrorMode_impl(PyObject *module, unsigned int mode);
-
-static PyObject *
-msvcrt_SetErrorMode(PyObject *module, PyObject *arg)
-{
- PyObject *return_value = NULL;
- unsigned int mode;
-
- if (PyFloat_Check(arg)) {
- PyErr_SetString(PyExc_TypeError,
- "integer argument expected, got float" );
- goto exit;
- }
- mode = (unsigned int)PyLong_AsUnsignedLongMask(arg);
- if (mode == (unsigned int)-1 && PyErr_Occurred()) {
- goto exit;
- }
- return_value = msvcrt_SetErrorMode_impl(module, mode);
-
-exit:
- return return_value;
-}
-
-#ifndef MSVCRT_CRTSETREPORTFILE_METHODDEF
- #define MSVCRT_CRTSETREPORTFILE_METHODDEF
-#endif /* !defined(MSVCRT_CRTSETREPORTFILE_METHODDEF) */
-
-#ifndef MSVCRT_CRTSETREPORTMODE_METHODDEF
- #define MSVCRT_CRTSETREPORTMODE_METHODDEF
-#endif /* !defined(MSVCRT_CRTSETREPORTMODE_METHODDEF) */
-
-#ifndef MSVCRT_SET_ERROR_MODE_METHODDEF
- #define MSVCRT_SET_ERROR_MODE_METHODDEF
-#endif /* !defined(MSVCRT_SET_ERROR_MODE_METHODDEF) */
-/*[clinic end generated code: output=7cc6ffaf64f268f7 input=a9049054013a1b77]*/
diff --git a/PC/clinic/winreg.c.h b/PC/clinic/winreg.c.h
deleted file mode 100644
index b7af185..0000000
--- a/PC/clinic/winreg.c.h
+++ /dev/null
@@ -1,1124 +0,0 @@
-/*[clinic input]
-preserve
-[clinic start generated code]*/
-
-PyDoc_STRVAR(winreg_HKEYType_Close__doc__,
-"Close($self, /)\n"
-"--\n"
-"\n"
-"Closes the underlying Windows handle.\n"
-"\n"
-"If the handle is already closed, no error is raised.");
-
-#define WINREG_HKEYTYPE_CLOSE_METHODDEF \
- {"Close", (PyCFunction)winreg_HKEYType_Close, METH_NOARGS, winreg_HKEYType_Close__doc__},
-
-static PyObject *
-winreg_HKEYType_Close_impl(PyHKEYObject *self);
-
-static PyObject *
-winreg_HKEYType_Close(PyHKEYObject *self, PyObject *Py_UNUSED(ignored))
-{
- return winreg_HKEYType_Close_impl(self);
-}
-
-PyDoc_STRVAR(winreg_HKEYType_Detach__doc__,
-"Detach($self, /)\n"
-"--\n"
-"\n"
-"Detaches the Windows handle from the handle object.\n"
-"\n"
-"The result is the value of the handle before it is detached. If the\n"
-"handle is already detached, this will return zero.\n"
-"\n"
-"After calling this function, the handle is effectively invalidated,\n"
-"but the handle is not closed. You would call this function when you\n"
-"need the underlying win32 handle to exist beyond the lifetime of the\n"
-"handle object.");
-
-#define WINREG_HKEYTYPE_DETACH_METHODDEF \
- {"Detach", (PyCFunction)winreg_HKEYType_Detach, METH_NOARGS, winreg_HKEYType_Detach__doc__},
-
-static PyObject *
-winreg_HKEYType_Detach_impl(PyHKEYObject *self);
-
-static PyObject *
-winreg_HKEYType_Detach(PyHKEYObject *self, PyObject *Py_UNUSED(ignored))
-{
- return winreg_HKEYType_Detach_impl(self);
-}
-
-PyDoc_STRVAR(winreg_HKEYType___enter____doc__,
-"__enter__($self, /)\n"
-"--\n"
-"\n");
-
-#define WINREG_HKEYTYPE___ENTER___METHODDEF \
- {"__enter__", (PyCFunction)winreg_HKEYType___enter__, METH_NOARGS, winreg_HKEYType___enter____doc__},
-
-static PyHKEYObject *
-winreg_HKEYType___enter___impl(PyHKEYObject *self);
-
-static PyObject *
-winreg_HKEYType___enter__(PyHKEYObject *self, PyObject *Py_UNUSED(ignored))
-{
- PyObject *return_value = NULL;
- PyHKEYObject *_return_value;
-
- _return_value = winreg_HKEYType___enter___impl(self);
- return_value = (PyObject *)_return_value;
-
- return return_value;
-}
-
-PyDoc_STRVAR(winreg_HKEYType___exit____doc__,
-"__exit__($self, /, exc_type, exc_value, traceback)\n"
-"--\n"
-"\n");
-
-#define WINREG_HKEYTYPE___EXIT___METHODDEF \
- {"__exit__", (PyCFunction)(void(*)(void))winreg_HKEYType___exit__, METH_FASTCALL|METH_KEYWORDS, winreg_HKEYType___exit____doc__},
-
-static PyObject *
-winreg_HKEYType___exit___impl(PyHKEYObject *self, PyObject *exc_type,
- PyObject *exc_value, PyObject *traceback);
-
-static PyObject *
-winreg_HKEYType___exit__(PyHKEYObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
-{
- PyObject *return_value = NULL;
- static const char * const _keywords[] = {"exc_type", "exc_value", "traceback", NULL};
- static _PyArg_Parser _parser = {NULL, _keywords, "__exit__", 0};
- PyObject *argsbuf[3];
- PyObject *exc_type;
- PyObject *exc_value;
- PyObject *traceback;
-
- args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 3, 3, 0, argsbuf);
- if (!args) {
- goto exit;
- }
- exc_type = args[0];
- exc_value = args[1];
- traceback = args[2];
- return_value = winreg_HKEYType___exit___impl(self, exc_type, exc_value, traceback);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(winreg_CloseKey__doc__,
-"CloseKey($module, hkey, /)\n"
-"--\n"
-"\n"
-"Closes a previously opened registry key.\n"
-"\n"
-" hkey\n"
-" A previously opened key.\n"
-"\n"
-"Note that if the key is not closed using this method, it will be\n"
-"closed when the hkey object is destroyed by Python.");
-
-#define WINREG_CLOSEKEY_METHODDEF \
- {"CloseKey", (PyCFunction)winreg_CloseKey, METH_O, winreg_CloseKey__doc__},
-
-PyDoc_STRVAR(winreg_ConnectRegistry__doc__,
-"ConnectRegistry($module, computer_name, key, /)\n"
-"--\n"
-"\n"
-"Establishes a connection to the registry on another computer.\n"
-"\n"
-" computer_name\n"
-" The name of the remote computer, of the form r\"\\\\computername\". If\n"
-" None, the local computer is used.\n"
-" key\n"
-" The predefined key to connect to.\n"
-"\n"
-"The return value is the handle of the opened key.\n"
-"If the function fails, an OSError exception is raised.");
-
-#define WINREG_CONNECTREGISTRY_METHODDEF \
- {"ConnectRegistry", (PyCFunction)(void(*)(void))winreg_ConnectRegistry, METH_FASTCALL, winreg_ConnectRegistry__doc__},
-
-static HKEY
-winreg_ConnectRegistry_impl(PyObject *module,
- const Py_UNICODE *computer_name, HKEY key);
-
-static PyObject *
-winreg_ConnectRegistry(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
-{
- PyObject *return_value = NULL;
- const Py_UNICODE *computer_name;
- HKEY key;
- HKEY _return_value;
-
- if (!_PyArg_ParseStack(args, nargs, "ZO&:ConnectRegistry",
- &computer_name, clinic_HKEY_converter, &key)) {
- goto exit;
- }
- _return_value = winreg_ConnectRegistry_impl(module, computer_name, key);
- if (_return_value == NULL) {
- goto exit;
- }
- return_value = PyHKEY_FromHKEY(_return_value);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(winreg_CreateKey__doc__,
-"CreateKey($module, key, sub_key, /)\n"
-"--\n"
-"\n"
-"Creates or opens the specified key.\n"
-"\n"
-" key\n"
-" An already open key, or one of the predefined HKEY_* constants.\n"
-" sub_key\n"
-" The name of the key this method opens or creates.\n"
-"\n"
-"If key is one of the predefined keys, sub_key may be None. In that case,\n"
-"the handle returned is the same key handle passed in to the function.\n"
-"\n"
-"If the key already exists, this function opens the existing key.\n"
-"\n"
-"The return value is the handle of the opened key.\n"
-"If the function fails, an OSError exception is raised.");
-
-#define WINREG_CREATEKEY_METHODDEF \
- {"CreateKey", (PyCFunction)(void(*)(void))winreg_CreateKey, METH_FASTCALL, winreg_CreateKey__doc__},
-
-static HKEY
-winreg_CreateKey_impl(PyObject *module, HKEY key, const Py_UNICODE *sub_key);
-
-static PyObject *
-winreg_CreateKey(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
-{
- PyObject *return_value = NULL;
- HKEY key;
- const Py_UNICODE *sub_key;
- HKEY _return_value;
-
- if (!_PyArg_ParseStack(args, nargs, "O&Z:CreateKey",
- clinic_HKEY_converter, &key, &sub_key)) {
- goto exit;
- }
- _return_value = winreg_CreateKey_impl(module, key, sub_key);
- if (_return_value == NULL) {
- goto exit;
- }
- return_value = PyHKEY_FromHKEY(_return_value);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(winreg_CreateKeyEx__doc__,
-"CreateKeyEx($module, /, key, sub_key, reserved=0,\n"
-" access=winreg.KEY_WRITE)\n"
-"--\n"
-"\n"
-"Creates or opens the specified key.\n"
-"\n"
-" key\n"
-" An already open key, or one of the predefined HKEY_* constants.\n"
-" sub_key\n"
-" The name of the key this method opens or creates.\n"
-" reserved\n"
-" A reserved integer, and must be zero. Default is zero.\n"
-" access\n"
-" An integer that specifies an access mask that describes the\n"
-" desired security access for the key. Default is KEY_WRITE.\n"
-"\n"
-"If key is one of the predefined keys, sub_key may be None. In that case,\n"
-"the handle returned is the same key handle passed in to the function.\n"
-"\n"
-"If the key already exists, this function opens the existing key\n"
-"\n"
-"The return value is the handle of the opened key.\n"
-"If the function fails, an OSError exception is raised.");
-
-#define WINREG_CREATEKEYEX_METHODDEF \
- {"CreateKeyEx", (PyCFunction)(void(*)(void))winreg_CreateKeyEx, METH_FASTCALL|METH_KEYWORDS, winreg_CreateKeyEx__doc__},
-
-static HKEY
-winreg_CreateKeyEx_impl(PyObject *module, HKEY key,
- const Py_UNICODE *sub_key, int reserved,
- REGSAM access);
-
-static PyObject *
-winreg_CreateKeyEx(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
-{
- PyObject *return_value = NULL;
- static const char * const _keywords[] = {"key", "sub_key", "reserved", "access", NULL};
- static _PyArg_Parser _parser = {"O&Z|ii:CreateKeyEx", _keywords, 0};
- HKEY key;
- const Py_UNICODE *sub_key;
- int reserved = 0;
- REGSAM access = KEY_WRITE;
- HKEY _return_value;
-
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- clinic_HKEY_converter, &key, &sub_key, &reserved, &access)) {
- goto exit;
- }
- _return_value = winreg_CreateKeyEx_impl(module, key, sub_key, reserved, access);
- if (_return_value == NULL) {
- goto exit;
- }
- return_value = PyHKEY_FromHKEY(_return_value);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(winreg_DeleteKey__doc__,
-"DeleteKey($module, key, sub_key, /)\n"
-"--\n"
-"\n"
-"Deletes the specified key.\n"
-"\n"
-" key\n"
-" An already open key, or any one of the predefined HKEY_* constants.\n"
-" sub_key\n"
-" A string that must be the name of a subkey of the key identified by\n"
-" the key parameter. This value must not be None, and the key may not\n"
-" have subkeys.\n"
-"\n"
-"This method can not delete keys with subkeys.\n"
-"\n"
-"If the function succeeds, the entire key, including all of its values,\n"
-"is removed. If the function fails, an OSError exception is raised.");
-
-#define WINREG_DELETEKEY_METHODDEF \
- {"DeleteKey", (PyCFunction)(void(*)(void))winreg_DeleteKey, METH_FASTCALL, winreg_DeleteKey__doc__},
-
-static PyObject *
-winreg_DeleteKey_impl(PyObject *module, HKEY key, const Py_UNICODE *sub_key);
-
-static PyObject *
-winreg_DeleteKey(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
-{
- PyObject *return_value = NULL;
- HKEY key;
- const Py_UNICODE *sub_key;
-
- if (!_PyArg_ParseStack(args, nargs, "O&u:DeleteKey",
- clinic_HKEY_converter, &key, &sub_key)) {
- goto exit;
- }
- return_value = winreg_DeleteKey_impl(module, key, sub_key);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(winreg_DeleteKeyEx__doc__,
-"DeleteKeyEx($module, /, key, sub_key, access=winreg.KEY_WOW64_64KEY,\n"
-" reserved=0)\n"
-"--\n"
-"\n"
-"Deletes the specified key (64-bit OS only).\n"
-"\n"
-" key\n"
-" An already open key, or any one of the predefined HKEY_* constants.\n"
-" sub_key\n"
-" A string that must be the name of a subkey of the key identified by\n"
-" the key parameter. This value must not be None, and the key may not\n"
-" have subkeys.\n"
-" access\n"
-" An integer that specifies an access mask that describes the\n"
-" desired security access for the key. Default is KEY_WOW64_64KEY.\n"
-" reserved\n"
-" A reserved integer, and must be zero. Default is zero.\n"
-"\n"
-"This method can not delete keys with subkeys.\n"
-"\n"
-"If the function succeeds, the entire key, including all of its values,\n"
-"is removed. If the function fails, an OSError exception is raised.\n"
-"On unsupported Windows versions, NotImplementedError is raised.");
-
-#define WINREG_DELETEKEYEX_METHODDEF \
- {"DeleteKeyEx", (PyCFunction)(void(*)(void))winreg_DeleteKeyEx, METH_FASTCALL|METH_KEYWORDS, winreg_DeleteKeyEx__doc__},
-
-static PyObject *
-winreg_DeleteKeyEx_impl(PyObject *module, HKEY key,
- const Py_UNICODE *sub_key, REGSAM access,
- int reserved);
-
-static PyObject *
-winreg_DeleteKeyEx(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
-{
- PyObject *return_value = NULL;
- static const char * const _keywords[] = {"key", "sub_key", "access", "reserved", NULL};
- static _PyArg_Parser _parser = {"O&u|ii:DeleteKeyEx", _keywords, 0};
- HKEY key;
- const Py_UNICODE *sub_key;
- REGSAM access = KEY_WOW64_64KEY;
- int reserved = 0;
-
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- clinic_HKEY_converter, &key, &sub_key, &access, &reserved)) {
- goto exit;
- }
- return_value = winreg_DeleteKeyEx_impl(module, key, sub_key, access, reserved);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(winreg_DeleteValue__doc__,
-"DeleteValue($module, key, value, /)\n"
-"--\n"
-"\n"
-"Removes a named value from a registry key.\n"
-"\n"
-" key\n"
-" An already open key, or any one of the predefined HKEY_* constants.\n"
-" value\n"
-" A string that identifies the value to remove.");
-
-#define WINREG_DELETEVALUE_METHODDEF \
- {"DeleteValue", (PyCFunction)(void(*)(void))winreg_DeleteValue, METH_FASTCALL, winreg_DeleteValue__doc__},
-
-static PyObject *
-winreg_DeleteValue_impl(PyObject *module, HKEY key, const Py_UNICODE *value);
-
-static PyObject *
-winreg_DeleteValue(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
-{
- PyObject *return_value = NULL;
- HKEY key;
- const Py_UNICODE *value;
-
- if (!_PyArg_ParseStack(args, nargs, "O&Z:DeleteValue",
- clinic_HKEY_converter, &key, &value)) {
- goto exit;
- }
- return_value = winreg_DeleteValue_impl(module, key, value);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(winreg_EnumKey__doc__,
-"EnumKey($module, key, index, /)\n"
-"--\n"
-"\n"
-"Enumerates subkeys of an open registry key.\n"
-"\n"
-" key\n"
-" An already open key, or any one of the predefined HKEY_* constants.\n"
-" index\n"
-" An integer that identifies the index of the key to retrieve.\n"
-"\n"
-"The function retrieves the name of one subkey each time it is called.\n"
-"It is typically called repeatedly until an OSError exception is\n"
-"raised, indicating no more values are available.");
-
-#define WINREG_ENUMKEY_METHODDEF \
- {"EnumKey", (PyCFunction)(void(*)(void))winreg_EnumKey, METH_FASTCALL, winreg_EnumKey__doc__},
-
-static PyObject *
-winreg_EnumKey_impl(PyObject *module, HKEY key, int index);
-
-static PyObject *
-winreg_EnumKey(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
-{
- PyObject *return_value = NULL;
- HKEY key;
- int index;
-
- if (!_PyArg_CheckPositional("EnumKey", nargs, 2, 2)) {
- goto exit;
- }
- if (!clinic_HKEY_converter(args[0], &key)) {
- goto exit;
- }
- if (PyFloat_Check(args[1])) {
- PyErr_SetString(PyExc_TypeError,
- "integer argument expected, got float" );
- goto exit;
- }
- index = _PyLong_AsInt(args[1]);
- if (index == -1 && PyErr_Occurred()) {
- goto exit;
- }
- return_value = winreg_EnumKey_impl(module, key, index);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(winreg_EnumValue__doc__,
-"EnumValue($module, key, index, /)\n"
-"--\n"
-"\n"
-"Enumerates values of an open registry key.\n"
-"\n"
-" key\n"
-" An already open key, or any one of the predefined HKEY_* constants.\n"
-" index\n"
-" An integer that identifies the index of the value to retrieve.\n"
-"\n"
-"The function retrieves the name of one subkey each time it is called.\n"
-"It is typically called repeatedly, until an OSError exception\n"
-"is raised, indicating no more values.\n"
-"\n"
-"The result is a tuple of 3 items:\n"
-" value_name\n"
-" A string that identifies the value.\n"
-" value_data\n"
-" An object that holds the value data, and whose type depends\n"
-" on the underlying registry type.\n"
-" data_type\n"
-" An integer that identifies the type of the value data.");
-
-#define WINREG_ENUMVALUE_METHODDEF \
- {"EnumValue", (PyCFunction)(void(*)(void))winreg_EnumValue, METH_FASTCALL, winreg_EnumValue__doc__},
-
-static PyObject *
-winreg_EnumValue_impl(PyObject *module, HKEY key, int index);
-
-static PyObject *
-winreg_EnumValue(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
-{
- PyObject *return_value = NULL;
- HKEY key;
- int index;
-
- if (!_PyArg_CheckPositional("EnumValue", nargs, 2, 2)) {
- goto exit;
- }
- if (!clinic_HKEY_converter(args[0], &key)) {
- goto exit;
- }
- if (PyFloat_Check(args[1])) {
- PyErr_SetString(PyExc_TypeError,
- "integer argument expected, got float" );
- goto exit;
- }
- index = _PyLong_AsInt(args[1]);
- if (index == -1 && PyErr_Occurred()) {
- goto exit;
- }
- return_value = winreg_EnumValue_impl(module, key, index);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(winreg_ExpandEnvironmentStrings__doc__,
-"ExpandEnvironmentStrings($module, string, /)\n"
-"--\n"
-"\n"
-"Expand environment vars.");
-
-#define WINREG_EXPANDENVIRONMENTSTRINGS_METHODDEF \
- {"ExpandEnvironmentStrings", (PyCFunction)winreg_ExpandEnvironmentStrings, METH_O, winreg_ExpandEnvironmentStrings__doc__},
-
-static PyObject *
-winreg_ExpandEnvironmentStrings_impl(PyObject *module,
- const Py_UNICODE *string);
-
-static PyObject *
-winreg_ExpandEnvironmentStrings(PyObject *module, PyObject *arg)
-{
- PyObject *return_value = NULL;
- const Py_UNICODE *string;
-
- if (!PyArg_Parse(arg, "u:ExpandEnvironmentStrings", &string)) {
- goto exit;
- }
- return_value = winreg_ExpandEnvironmentStrings_impl(module, string);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(winreg_FlushKey__doc__,
-"FlushKey($module, key, /)\n"
-"--\n"
-"\n"
-"Writes all the attributes of a key to the registry.\n"
-"\n"
-" key\n"
-" An already open key, or any one of the predefined HKEY_* constants.\n"
-"\n"
-"It is not necessary to call FlushKey to change a key. Registry changes\n"
-"are flushed to disk by the registry using its lazy flusher. Registry\n"
-"changes are also flushed to disk at system shutdown. Unlike\n"
-"CloseKey(), the FlushKey() method returns only when all the data has\n"
-"been written to the registry.\n"
-"\n"
-"An application should only call FlushKey() if it requires absolute\n"
-"certainty that registry changes are on disk. If you don\'t know whether\n"
-"a FlushKey() call is required, it probably isn\'t.");
-
-#define WINREG_FLUSHKEY_METHODDEF \
- {"FlushKey", (PyCFunction)winreg_FlushKey, METH_O, winreg_FlushKey__doc__},
-
-static PyObject *
-winreg_FlushKey_impl(PyObject *module, HKEY key);
-
-static PyObject *
-winreg_FlushKey(PyObject *module, PyObject *arg)
-{
- PyObject *return_value = NULL;
- HKEY key;
-
- if (!clinic_HKEY_converter(arg, &key)) {
- goto exit;
- }
- return_value = winreg_FlushKey_impl(module, key);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(winreg_LoadKey__doc__,
-"LoadKey($module, key, sub_key, file_name, /)\n"
-"--\n"
-"\n"
-"Insert data into the registry from a file.\n"
-"\n"
-" key\n"
-" An already open key, or any one of the predefined HKEY_* constants.\n"
-" sub_key\n"
-" A string that identifies the sub-key to load.\n"
-" file_name\n"
-" The name of the file to load registry data from. This file must\n"
-" have been created with the SaveKey() function. Under the file\n"
-" allocation table (FAT) file system, the filename may not have an\n"
-" extension.\n"
-"\n"
-"Creates a subkey under the specified key and stores registration\n"
-"information from a specified file into that subkey.\n"
-"\n"
-"A call to LoadKey() fails if the calling process does not have the\n"
-"SE_RESTORE_PRIVILEGE privilege.\n"
-"\n"
-"If key is a handle returned by ConnectRegistry(), then the path\n"
-"specified in fileName is relative to the remote computer.\n"
-"\n"
-"The MSDN docs imply key must be in the HKEY_USER or HKEY_LOCAL_MACHINE\n"
-"tree.");
-
-#define WINREG_LOADKEY_METHODDEF \
- {"LoadKey", (PyCFunction)(void(*)(void))winreg_LoadKey, METH_FASTCALL, winreg_LoadKey__doc__},
-
-static PyObject *
-winreg_LoadKey_impl(PyObject *module, HKEY key, const Py_UNICODE *sub_key,
- const Py_UNICODE *file_name);
-
-static PyObject *
-winreg_LoadKey(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
-{
- PyObject *return_value = NULL;
- HKEY key;
- const Py_UNICODE *sub_key;
- const Py_UNICODE *file_name;
-
- if (!_PyArg_ParseStack(args, nargs, "O&uu:LoadKey",
- clinic_HKEY_converter, &key, &sub_key, &file_name)) {
- goto exit;
- }
- return_value = winreg_LoadKey_impl(module, key, sub_key, file_name);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(winreg_OpenKey__doc__,
-"OpenKey($module, /, key, sub_key, reserved=0, access=winreg.KEY_READ)\n"
-"--\n"
-"\n"
-"Opens the specified key.\n"
-"\n"
-" key\n"
-" An already open key, or any one of the predefined HKEY_* constants.\n"
-" sub_key\n"
-" A string that identifies the sub_key to open.\n"
-" reserved\n"
-" A reserved integer that must be zero. Default is zero.\n"
-" access\n"
-" An integer that specifies an access mask that describes the desired\n"
-" security access for the key. Default is KEY_READ.\n"
-"\n"
-"The result is a new handle to the specified key.\n"
-"If the function fails, an OSError exception is raised.");
-
-#define WINREG_OPENKEY_METHODDEF \
- {"OpenKey", (PyCFunction)(void(*)(void))winreg_OpenKey, METH_FASTCALL|METH_KEYWORDS, winreg_OpenKey__doc__},
-
-static HKEY
-winreg_OpenKey_impl(PyObject *module, HKEY key, const Py_UNICODE *sub_key,
- int reserved, REGSAM access);
-
-static PyObject *
-winreg_OpenKey(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
-{
- PyObject *return_value = NULL;
- static const char * const _keywords[] = {"key", "sub_key", "reserved", "access", NULL};
- static _PyArg_Parser _parser = {"O&Z|ii:OpenKey", _keywords, 0};
- HKEY key;
- const Py_UNICODE *sub_key;
- int reserved = 0;
- REGSAM access = KEY_READ;
- HKEY _return_value;
-
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- clinic_HKEY_converter, &key, &sub_key, &reserved, &access)) {
- goto exit;
- }
- _return_value = winreg_OpenKey_impl(module, key, sub_key, reserved, access);
- if (_return_value == NULL) {
- goto exit;
- }
- return_value = PyHKEY_FromHKEY(_return_value);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(winreg_OpenKeyEx__doc__,
-"OpenKeyEx($module, /, key, sub_key, reserved=0, access=winreg.KEY_READ)\n"
-"--\n"
-"\n"
-"Opens the specified key.\n"
-"\n"
-" key\n"
-" An already open key, or any one of the predefined HKEY_* constants.\n"
-" sub_key\n"
-" A string that identifies the sub_key to open.\n"
-" reserved\n"
-" A reserved integer that must be zero. Default is zero.\n"
-" access\n"
-" An integer that specifies an access mask that describes the desired\n"
-" security access for the key. Default is KEY_READ.\n"
-"\n"
-"The result is a new handle to the specified key.\n"
-"If the function fails, an OSError exception is raised.");
-
-#define WINREG_OPENKEYEX_METHODDEF \
- {"OpenKeyEx", (PyCFunction)(void(*)(void))winreg_OpenKeyEx, METH_FASTCALL|METH_KEYWORDS, winreg_OpenKeyEx__doc__},
-
-static HKEY
-winreg_OpenKeyEx_impl(PyObject *module, HKEY key, const Py_UNICODE *sub_key,
- int reserved, REGSAM access);
-
-static PyObject *
-winreg_OpenKeyEx(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
-{
- PyObject *return_value = NULL;
- static const char * const _keywords[] = {"key", "sub_key", "reserved", "access", NULL};
- static _PyArg_Parser _parser = {"O&Z|ii:OpenKeyEx", _keywords, 0};
- HKEY key;
- const Py_UNICODE *sub_key;
- int reserved = 0;
- REGSAM access = KEY_READ;
- HKEY _return_value;
-
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- clinic_HKEY_converter, &key, &sub_key, &reserved, &access)) {
- goto exit;
- }
- _return_value = winreg_OpenKeyEx_impl(module, key, sub_key, reserved, access);
- if (_return_value == NULL) {
- goto exit;
- }
- return_value = PyHKEY_FromHKEY(_return_value);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(winreg_QueryInfoKey__doc__,
-"QueryInfoKey($module, key, /)\n"
-"--\n"
-"\n"
-"Returns information about a key.\n"
-"\n"
-" key\n"
-" An already open key, or any one of the predefined HKEY_* constants.\n"
-"\n"
-"The result is a tuple of 3 items:\n"
-"An integer that identifies the number of sub keys this key has.\n"
-"An integer that identifies the number of values this key has.\n"
-"An integer that identifies when the key was last modified (if available)\n"
-"as 100\'s of nanoseconds since Jan 1, 1600.");
-
-#define WINREG_QUERYINFOKEY_METHODDEF \
- {"QueryInfoKey", (PyCFunction)winreg_QueryInfoKey, METH_O, winreg_QueryInfoKey__doc__},
-
-static PyObject *
-winreg_QueryInfoKey_impl(PyObject *module, HKEY key);
-
-static PyObject *
-winreg_QueryInfoKey(PyObject *module, PyObject *arg)
-{
- PyObject *return_value = NULL;
- HKEY key;
-
- if (!clinic_HKEY_converter(arg, &key)) {
- goto exit;
- }
- return_value = winreg_QueryInfoKey_impl(module, key);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(winreg_QueryValue__doc__,
-"QueryValue($module, key, sub_key, /)\n"
-"--\n"
-"\n"
-"Retrieves the unnamed value for a key.\n"
-"\n"
-" key\n"
-" An already open key, or any one of the predefined HKEY_* constants.\n"
-" sub_key\n"
-" A string that holds the name of the subkey with which the value\n"
-" is associated. If this parameter is None or empty, the function\n"
-" retrieves the value set by the SetValue() method for the key\n"
-" identified by key.\n"
-"\n"
-"Values in the registry have name, type, and data components. This method\n"
-"retrieves the data for a key\'s first value that has a NULL name.\n"
-"But since the underlying API call doesn\'t return the type, you\'ll\n"
-"probably be happier using QueryValueEx; this function is just here for\n"
-"completeness.");
-
-#define WINREG_QUERYVALUE_METHODDEF \
- {"QueryValue", (PyCFunction)(void(*)(void))winreg_QueryValue, METH_FASTCALL, winreg_QueryValue__doc__},
-
-static PyObject *
-winreg_QueryValue_impl(PyObject *module, HKEY key, const Py_UNICODE *sub_key);
-
-static PyObject *
-winreg_QueryValue(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
-{
- PyObject *return_value = NULL;
- HKEY key;
- const Py_UNICODE *sub_key;
-
- if (!_PyArg_ParseStack(args, nargs, "O&Z:QueryValue",
- clinic_HKEY_converter, &key, &sub_key)) {
- goto exit;
- }
- return_value = winreg_QueryValue_impl(module, key, sub_key);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(winreg_QueryValueEx__doc__,
-"QueryValueEx($module, key, name, /)\n"
-"--\n"
-"\n"
-"Retrieves the type and value of a specified sub-key.\n"
-"\n"
-" key\n"
-" An already open key, or any one of the predefined HKEY_* constants.\n"
-" name\n"
-" A string indicating the value to query.\n"
-"\n"
-"Behaves mostly like QueryValue(), but also returns the type of the\n"
-"specified value name associated with the given open registry key.\n"
-"\n"
-"The return value is a tuple of the value and the type_id.");
-
-#define WINREG_QUERYVALUEEX_METHODDEF \
- {"QueryValueEx", (PyCFunction)(void(*)(void))winreg_QueryValueEx, METH_FASTCALL, winreg_QueryValueEx__doc__},
-
-static PyObject *
-winreg_QueryValueEx_impl(PyObject *module, HKEY key, const Py_UNICODE *name);
-
-static PyObject *
-winreg_QueryValueEx(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
-{
- PyObject *return_value = NULL;
- HKEY key;
- const Py_UNICODE *name;
-
- if (!_PyArg_ParseStack(args, nargs, "O&Z:QueryValueEx",
- clinic_HKEY_converter, &key, &name)) {
- goto exit;
- }
- return_value = winreg_QueryValueEx_impl(module, key, name);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(winreg_SaveKey__doc__,
-"SaveKey($module, key, file_name, /)\n"
-"--\n"
-"\n"
-"Saves the specified key, and all its subkeys to the specified file.\n"
-"\n"
-" key\n"
-" An already open key, or any one of the predefined HKEY_* constants.\n"
-" file_name\n"
-" The name of the file to save registry data to. This file cannot\n"
-" already exist. If this filename includes an extension, it cannot be\n"
-" used on file allocation table (FAT) file systems by the LoadKey(),\n"
-" ReplaceKey() or RestoreKey() methods.\n"
-"\n"
-"If key represents a key on a remote computer, the path described by\n"
-"file_name is relative to the remote computer.\n"
-"\n"
-"The caller of this method must possess the SeBackupPrivilege\n"
-"security privilege. This function passes NULL for security_attributes\n"
-"to the API.");
-
-#define WINREG_SAVEKEY_METHODDEF \
- {"SaveKey", (PyCFunction)(void(*)(void))winreg_SaveKey, METH_FASTCALL, winreg_SaveKey__doc__},
-
-static PyObject *
-winreg_SaveKey_impl(PyObject *module, HKEY key, const Py_UNICODE *file_name);
-
-static PyObject *
-winreg_SaveKey(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
-{
- PyObject *return_value = NULL;
- HKEY key;
- const Py_UNICODE *file_name;
-
- if (!_PyArg_ParseStack(args, nargs, "O&u:SaveKey",
- clinic_HKEY_converter, &key, &file_name)) {
- goto exit;
- }
- return_value = winreg_SaveKey_impl(module, key, file_name);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(winreg_SetValue__doc__,
-"SetValue($module, key, sub_key, type, value, /)\n"
-"--\n"
-"\n"
-"Associates a value with a specified key.\n"
-"\n"
-" key\n"
-" An already open key, or any one of the predefined HKEY_* constants.\n"
-" sub_key\n"
-" A string that names the subkey with which the value is associated.\n"
-" type\n"
-" An integer that specifies the type of the data. Currently this must\n"
-" be REG_SZ, meaning only strings are supported.\n"
-" value\n"
-" A string that specifies the new value.\n"
-"\n"
-"If the key specified by the sub_key parameter does not exist, the\n"
-"SetValue function creates it.\n"
-"\n"
-"Value lengths are limited by available memory. Long values (more than\n"
-"2048 bytes) should be stored as files with the filenames stored in\n"
-"the configuration registry to help the registry perform efficiently.\n"
-"\n"
-"The key identified by the key parameter must have been opened with\n"
-"KEY_SET_VALUE access.");
-
-#define WINREG_SETVALUE_METHODDEF \
- {"SetValue", (PyCFunction)(void(*)(void))winreg_SetValue, METH_FASTCALL, winreg_SetValue__doc__},
-
-static PyObject *
-winreg_SetValue_impl(PyObject *module, HKEY key, const Py_UNICODE *sub_key,
- DWORD type, const Py_UNICODE *value,
- Py_ssize_clean_t value_length);
-
-static PyObject *
-winreg_SetValue(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
-{
- PyObject *return_value = NULL;
- HKEY key;
- const Py_UNICODE *sub_key;
- DWORD type;
- const Py_UNICODE *value;
- Py_ssize_clean_t value_length;
-
- if (!_PyArg_ParseStack(args, nargs, "O&Zku#:SetValue",
- clinic_HKEY_converter, &key, &sub_key, &type, &value, &value_length)) {
- goto exit;
- }
- return_value = winreg_SetValue_impl(module, key, sub_key, type, value, value_length);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(winreg_SetValueEx__doc__,
-"SetValueEx($module, key, value_name, reserved, type, value, /)\n"
-"--\n"
-"\n"
-"Stores data in the value field of an open registry key.\n"
-"\n"
-" key\n"
-" An already open key, or any one of the predefined HKEY_* constants.\n"
-" value_name\n"
-" A string containing the name of the value to set, or None.\n"
-" reserved\n"
-" Can be anything - zero is always passed to the API.\n"
-" type\n"
-" An integer that specifies the type of the data, one of:\n"
-" REG_BINARY -- Binary data in any form.\n"
-" REG_DWORD -- A 32-bit number.\n"
-" REG_DWORD_LITTLE_ENDIAN -- A 32-bit number in little-endian format. Equivalent to REG_DWORD\n"
-" REG_DWORD_BIG_ENDIAN -- A 32-bit number in big-endian format.\n"
-" REG_EXPAND_SZ -- A null-terminated string that contains unexpanded\n"
-" references to environment variables (for example,\n"
-" %PATH%).\n"
-" REG_LINK -- A Unicode symbolic link.\n"
-" REG_MULTI_SZ -- A sequence of null-terminated strings, terminated\n"
-" by two null characters. Note that Python handles\n"
-" this termination automatically.\n"
-" REG_NONE -- No defined value type.\n"
-" REG_QWORD -- A 64-bit number.\n"
-" REG_QWORD_LITTLE_ENDIAN -- A 64-bit number in little-endian format. Equivalent to REG_QWORD.\n"
-" REG_RESOURCE_LIST -- A device-driver resource list.\n"
-" REG_SZ -- A null-terminated string.\n"
-" value\n"
-" A string that specifies the new value.\n"
-"\n"
-"This method can also set additional value and type information for the\n"
-"specified key. The key identified by the key parameter must have been\n"
-"opened with KEY_SET_VALUE access.\n"
-"\n"
-"To open the key, use the CreateKeyEx() or OpenKeyEx() methods.\n"
-"\n"
-"Value lengths are limited by available memory. Long values (more than\n"
-"2048 bytes) should be stored as files with the filenames stored in\n"
-"the configuration registry to help the registry perform efficiently.");
-
-#define WINREG_SETVALUEEX_METHODDEF \
- {"SetValueEx", (PyCFunction)(void(*)(void))winreg_SetValueEx, METH_FASTCALL, winreg_SetValueEx__doc__},
-
-static PyObject *
-winreg_SetValueEx_impl(PyObject *module, HKEY key,
- const Py_UNICODE *value_name, PyObject *reserved,
- DWORD type, PyObject *value);
-
-static PyObject *
-winreg_SetValueEx(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
-{
- PyObject *return_value = NULL;
- HKEY key;
- const Py_UNICODE *value_name;
- PyObject *reserved;
- DWORD type;
- PyObject *value;
-
- if (!_PyArg_ParseStack(args, nargs, "O&ZOkO:SetValueEx",
- clinic_HKEY_converter, &key, &value_name, &reserved, &type, &value)) {
- goto exit;
- }
- return_value = winreg_SetValueEx_impl(module, key, value_name, reserved, type, value);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(winreg_DisableReflectionKey__doc__,
-"DisableReflectionKey($module, key, /)\n"
-"--\n"
-"\n"
-"Disables registry reflection for 32bit processes running on a 64bit OS.\n"
-"\n"
-" key\n"
-" An already open key, or any one of the predefined HKEY_* constants.\n"
-"\n"
-"Will generally raise NotImplementedError if executed on a 32bit OS.\n"
-"\n"
-"If the key is not on the reflection list, the function succeeds but has\n"
-"no effect. Disabling reflection for a key does not affect reflection\n"
-"of any subkeys.");
-
-#define WINREG_DISABLEREFLECTIONKEY_METHODDEF \
- {"DisableReflectionKey", (PyCFunction)winreg_DisableReflectionKey, METH_O, winreg_DisableReflectionKey__doc__},
-
-static PyObject *
-winreg_DisableReflectionKey_impl(PyObject *module, HKEY key);
-
-static PyObject *
-winreg_DisableReflectionKey(PyObject *module, PyObject *arg)
-{
- PyObject *return_value = NULL;
- HKEY key;
-
- if (!clinic_HKEY_converter(arg, &key)) {
- goto exit;
- }
- return_value = winreg_DisableReflectionKey_impl(module, key);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(winreg_EnableReflectionKey__doc__,
-"EnableReflectionKey($module, key, /)\n"
-"--\n"
-"\n"
-"Restores registry reflection for the specified disabled key.\n"
-"\n"
-" key\n"
-" An already open key, or any one of the predefined HKEY_* constants.\n"
-"\n"
-"Will generally raise NotImplementedError if executed on a 32bit OS.\n"
-"Restoring reflection for a key does not affect reflection of any\n"
-"subkeys.");
-
-#define WINREG_ENABLEREFLECTIONKEY_METHODDEF \
- {"EnableReflectionKey", (PyCFunction)winreg_EnableReflectionKey, METH_O, winreg_EnableReflectionKey__doc__},
-
-static PyObject *
-winreg_EnableReflectionKey_impl(PyObject *module, HKEY key);
-
-static PyObject *
-winreg_EnableReflectionKey(PyObject *module, PyObject *arg)
-{
- PyObject *return_value = NULL;
- HKEY key;
-
- if (!clinic_HKEY_converter(arg, &key)) {
- goto exit;
- }
- return_value = winreg_EnableReflectionKey_impl(module, key);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(winreg_QueryReflectionKey__doc__,
-"QueryReflectionKey($module, key, /)\n"
-"--\n"
-"\n"
-"Returns the reflection state for the specified key as a bool.\n"
-"\n"
-" key\n"
-" An already open key, or any one of the predefined HKEY_* constants.\n"
-"\n"
-"Will generally raise NotImplementedError if executed on a 32bit OS.");
-
-#define WINREG_QUERYREFLECTIONKEY_METHODDEF \
- {"QueryReflectionKey", (PyCFunction)winreg_QueryReflectionKey, METH_O, winreg_QueryReflectionKey__doc__},
-
-static PyObject *
-winreg_QueryReflectionKey_impl(PyObject *module, HKEY key);
-
-static PyObject *
-winreg_QueryReflectionKey(PyObject *module, PyObject *arg)
-{
- PyObject *return_value = NULL;
- HKEY key;
-
- if (!clinic_HKEY_converter(arg, &key)) {
- goto exit;
- }
- return_value = winreg_QueryReflectionKey_impl(module, key);
-
-exit:
- return return_value;
-}
-/*[clinic end generated code: output=015afbbd690eb59d input=a9049054013a1b77]*/
diff --git a/PC/clinic/winsound.c.h b/PC/clinic/winsound.c.h
deleted file mode 100644
index b37db4c..0000000
--- a/PC/clinic/winsound.c.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/*[clinic input]
-preserve
-[clinic start generated code]*/
-
-PyDoc_STRVAR(winsound_PlaySound__doc__,
-"PlaySound($module, /, sound, flags)\n"
-"--\n"
-"\n"
-"A wrapper around the Windows PlaySound API.\n"
-"\n"
-" sound\n"
-" The sound to play; a filename, data, or None.\n"
-" flags\n"
-" Flag values, ored together. See module documentation.");
-
-#define WINSOUND_PLAYSOUND_METHODDEF \
- {"PlaySound", (PyCFunction)(void(*)(void))winsound_PlaySound, METH_FASTCALL|METH_KEYWORDS, winsound_PlaySound__doc__},
-
-static PyObject *
-winsound_PlaySound_impl(PyObject *module, PyObject *sound, int flags);
-
-static PyObject *
-winsound_PlaySound(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
-{
- PyObject *return_value = NULL;
- static const char * const _keywords[] = {"sound", "flags", NULL};
- static _PyArg_Parser _parser = {NULL, _keywords, "PlaySound", 0};
- PyObject *argsbuf[2];
- PyObject *sound;
- int flags;
-
- args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 2, 0, argsbuf);
- if (!args) {
- goto exit;
- }
- sound = args[0];
- if (PyFloat_Check(args[1])) {
- PyErr_SetString(PyExc_TypeError,
- "integer argument expected, got float" );
- goto exit;
- }
- flags = _PyLong_AsInt(args[1]);
- if (flags == -1 && PyErr_Occurred()) {
- goto exit;
- }
- return_value = winsound_PlaySound_impl(module, sound, flags);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(winsound_Beep__doc__,
-"Beep($module, /, frequency, duration)\n"
-"--\n"
-"\n"
-"A wrapper around the Windows Beep API.\n"
-"\n"
-" frequency\n"
-" Frequency of the sound in hertz.\n"
-" Must be in the range 37 through 32,767.\n"
-" duration\n"
-" How long the sound should play, in milliseconds.");
-
-#define WINSOUND_BEEP_METHODDEF \
- {"Beep", (PyCFunction)(void(*)(void))winsound_Beep, METH_FASTCALL|METH_KEYWORDS, winsound_Beep__doc__},
-
-static PyObject *
-winsound_Beep_impl(PyObject *module, int frequency, int duration);
-
-static PyObject *
-winsound_Beep(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
-{
- PyObject *return_value = NULL;
- static const char * const _keywords[] = {"frequency", "duration", NULL};
- static _PyArg_Parser _parser = {NULL, _keywords, "Beep", 0};
- PyObject *argsbuf[2];
- int frequency;
- int duration;
-
- args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 2, 0, argsbuf);
- if (!args) {
- goto exit;
- }
- if (PyFloat_Check(args[0])) {
- PyErr_SetString(PyExc_TypeError,
- "integer argument expected, got float" );
- goto exit;
- }
- frequency = _PyLong_AsInt(args[0]);
- if (frequency == -1 && PyErr_Occurred()) {
- goto exit;
- }
- if (PyFloat_Check(args[1])) {
- PyErr_SetString(PyExc_TypeError,
- "integer argument expected, got float" );
- goto exit;
- }
- duration = _PyLong_AsInt(args[1]);
- if (duration == -1 && PyErr_Occurred()) {
- goto exit;
- }
- return_value = winsound_Beep_impl(module, frequency, duration);
-
-exit:
- return return_value;
-}
-
-PyDoc_STRVAR(winsound_MessageBeep__doc__,
-"MessageBeep($module, /, type=MB_OK)\n"
-"--\n"
-"\n"
-"Call Windows MessageBeep(x).\n"
-"\n"
-"x defaults to MB_OK.");
-
-#define WINSOUND_MESSAGEBEEP_METHODDEF \
- {"MessageBeep", (PyCFunction)(void(*)(void))winsound_MessageBeep, METH_FASTCALL|METH_KEYWORDS, winsound_MessageBeep__doc__},
-
-static PyObject *
-winsound_MessageBeep_impl(PyObject *module, int type);
-
-static PyObject *
-winsound_MessageBeep(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
-{
- PyObject *return_value = NULL;
- static const char * const _keywords[] = {"type", NULL};
- static _PyArg_Parser _parser = {NULL, _keywords, "MessageBeep", 0};
- PyObject *argsbuf[1];
- Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
- int type = MB_OK;
-
- args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);
- if (!args) {
- goto exit;
- }
- if (!noptargs) {
- goto skip_optional_pos;
- }
- if (PyFloat_Check(args[0])) {
- PyErr_SetString(PyExc_TypeError,
- "integer argument expected, got float" );
- goto exit;
- }
- type = _PyLong_AsInt(args[0]);
- if (type == -1 && PyErr_Occurred()) {
- goto exit;
- }
-skip_optional_pos:
- return_value = winsound_MessageBeep_impl(module, type);
-
-exit:
- return return_value;
-}
-/*[clinic end generated code: output=28d1cd033282723d input=a9049054013a1b77]*/
diff --git a/PC/config.c b/PC/config.c
index 8eaeb31..35c6608 100644
--- a/PC/config.c
+++ b/PC/config.c
@@ -1,151 +1,151 @@
/* Module configuration */
/* This file contains the table of built-in modules.
- See create_builtin() in import.c. */
+ See init_builtin() in import.c. */
#include "Python.h"
-extern PyObject* PyInit__abc(void);
-extern PyObject* PyInit_array(void);
-extern PyObject* PyInit_audioop(void);
-extern PyObject* PyInit_binascii(void);
-extern PyObject* PyInit_cmath(void);
-extern PyObject* PyInit_errno(void);
-extern PyObject* PyInit_faulthandler(void);
-extern PyObject* PyInit__tracemalloc(void);
-extern PyObject* PyInit_gc(void);
-extern PyObject* PyInit_math(void);
-extern PyObject* PyInit__md5(void);
-extern PyObject* PyInit_nt(void);
-extern PyObject* PyInit__operator(void);
-extern PyObject* PyInit__signal(void);
-extern PyObject* PyInit__sha1(void);
-extern PyObject* PyInit__sha256(void);
-extern PyObject* PyInit__sha512(void);
-extern PyObject* PyInit__sha3(void);
-extern PyObject* PyInit__statistics(void);
-extern PyObject* PyInit__blake2(void);
-extern PyObject* PyInit_time(void);
-extern PyObject* PyInit__thread(void);
-#ifdef WIN32
-extern PyObject* PyInit_msvcrt(void);
-extern PyObject* PyInit__locale(void);
+extern void initarray(void);
+#ifndef MS_WINI64
+extern void initaudioop(void);
#endif
-extern PyObject* PyInit__codecs(void);
-extern PyObject* PyInit__weakref(void);
-/* XXX: These two should really be extracted to standalone extensions. */
-extern PyObject* PyInit_xxsubtype(void);
-extern PyObject* PyInit__xxsubinterpreters(void);
-extern PyObject* PyInit__random(void);
-extern PyObject* PyInit_itertools(void);
-extern PyObject* PyInit__collections(void);
-extern PyObject* PyInit__heapq(void);
-extern PyObject* PyInit__bisect(void);
-extern PyObject* PyInit__symtable(void);
-extern PyObject* PyInit_mmap(void);
-extern PyObject* PyInit__csv(void);
-extern PyObject* PyInit__sre(void);
-extern PyObject* PyInit_parser(void);
-extern PyObject* PyInit_winreg(void);
-extern PyObject* PyInit__struct(void);
-extern PyObject* PyInit__datetime(void);
-extern PyObject* PyInit__functools(void);
-extern PyObject* PyInit__json(void);
-#ifdef _Py_HAVE_ZLIB
-extern PyObject* PyInit_zlib(void);
+extern void initbinascii(void);
+extern void initcmath(void);
+extern void initerrno(void);
+extern void initfuture_builtins(void);
+extern void initgc(void);
+#ifndef MS_WINI64
+extern void initimageop(void);
#endif
-
-extern PyObject* PyInit__multibytecodec(void);
-extern PyObject* PyInit__codecs_cn(void);
-extern PyObject* PyInit__codecs_hk(void);
-extern PyObject* PyInit__codecs_iso2022(void);
-extern PyObject* PyInit__codecs_jp(void);
-extern PyObject* PyInit__codecs_kr(void);
-extern PyObject* PyInit__codecs_tw(void);
-extern PyObject* PyInit__winapi(void);
-extern PyObject* PyInit__lsprof(void);
-extern PyObject* PyInit__ast(void);
-extern PyObject* PyInit__io(void);
-extern PyObject* PyInit__pickle(void);
-extern PyObject* PyInit_atexit(void);
-extern PyObject* _PyWarnings_Init(void);
-extern PyObject* PyInit__string(void);
-extern PyObject* PyInit__stat(void);
-extern PyObject* PyInit__opcode(void);
-
-extern PyObject* PyInit__contextvars(void);
+extern void initmath(void);
+extern void init_md5(void);
+extern void initnt(void);
+extern void initoperator(void);
+extern void initsignal(void);
+extern void init_sha(void);
+extern void init_sha256(void);
+extern void init_sha512(void);
+extern void initstrop(void);
+extern void inittime(void);
+extern void initthread(void);
+extern void initcStringIO(void);
+extern void initcPickle(void);
+#ifdef WIN32
+extern void initmsvcrt(void);
+extern void init_locale(void);
+#endif
+extern void init_codecs(void);
+extern void init_weakref(void);
+extern void init_hotshot(void);
+extern void initxxsubtype(void);
+extern void initzipimport(void);
+extern void init_random(void);
+extern void inititertools(void);
+extern void init_collections(void);
+extern void init_heapq(void);
+extern void init_bisect(void);
+extern void init_symtable(void);
+extern void initmmap(void);
+extern void init_csv(void);
+extern void init_sre(void);
+extern void initparser(void);
+extern void init_winreg(void);
+extern void init_struct(void);
+extern void initdatetime(void);
+extern void init_functools(void);
+extern void init_json(void);
+extern void initzlib(void);
+
+extern void init_multibytecodec(void);
+extern void init_codecs_cn(void);
+extern void init_codecs_hk(void);
+extern void init_codecs_iso2022(void);
+extern void init_codecs_jp(void);
+extern void init_codecs_kr(void);
+extern void init_codecs_tw(void);
+extern void init_subprocess(void);
+extern void init_lsprof(void);
+extern void init_ast(void);
+extern void init_io(void);
+extern void _PyWarnings_Init(void);
/* tools/freeze/makeconfig.py marker for additional "extern" */
/* -- ADDMODULE MARKER 1 -- */
-extern PyObject* PyMarshal_Init(void);
-extern PyObject* PyInit__imp(void);
+extern void PyMarshal_Init(void);
+extern void initimp(void);
struct _inittab _PyImport_Inittab[] = {
- {"_abc", PyInit__abc},
- {"array", PyInit_array},
- {"_ast", PyInit__ast},
- {"audioop", PyInit_audioop},
- {"binascii", PyInit_binascii},
- {"cmath", PyInit_cmath},
- {"errno", PyInit_errno},
- {"faulthandler", PyInit_faulthandler},
- {"gc", PyInit_gc},
- {"math", PyInit_math},
- {"nt", PyInit_nt}, /* Use the NT os functions, not posix */
- {"_operator", PyInit__operator},
- {"_signal", PyInit__signal},
- {"_md5", PyInit__md5},
- {"_sha1", PyInit__sha1},
- {"_sha256", PyInit__sha256},
- {"_sha512", PyInit__sha512},
- {"_sha3", PyInit__sha3},
- {"_blake2", PyInit__blake2},
- {"time", PyInit_time},
- {"_thread", PyInit__thread},
- {"_statistics", PyInit__statistics},
-#ifdef WIN32
- {"msvcrt", PyInit_msvcrt},
- {"_locale", PyInit__locale},
+ {"array", initarray},
+ {"_ast", init_ast},
+#ifdef MS_WINDOWS
+#ifndef MS_WINI64
+ {"audioop", initaudioop},
#endif
- {"_tracemalloc", PyInit__tracemalloc},
- /* XXX Should _winapi go in a WIN32 block? not WIN64? */
- {"_winapi", PyInit__winapi},
-
- {"_codecs", PyInit__codecs},
- {"_weakref", PyInit__weakref},
- {"_random", PyInit__random},
- {"_bisect", PyInit__bisect},
- {"_heapq", PyInit__heapq},
- {"_lsprof", PyInit__lsprof},
- {"itertools", PyInit_itertools},
- {"_collections", PyInit__collections},
- {"_symtable", PyInit__symtable},
- {"mmap", PyInit_mmap},
- {"_csv", PyInit__csv},
- {"_sre", PyInit__sre},
- {"parser", PyInit_parser},
- {"winreg", PyInit_winreg},
- {"_struct", PyInit__struct},
- {"_datetime", PyInit__datetime},
- {"_functools", PyInit__functools},
- {"_json", PyInit__json},
-
- {"xxsubtype", PyInit_xxsubtype},
- {"_xxsubinterpreters", PyInit__xxsubinterpreters},
-#ifdef _Py_HAVE_ZLIB
- {"zlib", PyInit_zlib},
#endif
+ {"binascii", initbinascii},
+ {"cmath", initcmath},
+ {"errno", initerrno},
+ {"future_builtins", initfuture_builtins},
+ {"gc", initgc},
+#ifndef MS_WINI64
+ {"imageop", initimageop},
+#endif
+ {"math", initmath},
+ {"_md5", init_md5},
+ {"nt", initnt}, /* Use the NT os functions, not posix */
+ {"operator", initoperator},
+ {"signal", initsignal},
+ {"_sha", init_sha},
+ {"_sha256", init_sha256},
+ {"_sha512", init_sha512},
+ {"strop", initstrop},
+ {"time", inittime},
+#ifdef WITH_THREAD
+ {"thread", initthread},
+#endif
+ {"cStringIO", initcStringIO},
+ {"cPickle", initcPickle},
+#ifdef WIN32
+ {"msvcrt", initmsvcrt},
+ {"_locale", init_locale},
+#endif
+ /* XXX Should _subprocess go in a WIN32 block? not WIN64? */
+ {"_subprocess", init_subprocess},
+
+ {"_codecs", init_codecs},
+ {"_weakref", init_weakref},
+ {"_hotshot", init_hotshot},
+ {"_random", init_random},
+ {"_bisect", init_bisect},
+ {"_heapq", init_heapq},
+ {"_lsprof", init_lsprof},
+ {"itertools", inititertools},
+ {"_collections", init_collections},
+ {"_symtable", init_symtable},
+ {"mmap", initmmap},
+ {"_csv", init_csv},
+ {"_sre", init_sre},
+ {"parser", initparser},
+ {"_winreg", init_winreg},
+ {"_struct", init_struct},
+ {"datetime", initdatetime},
+ {"_functools", init_functools},
+ {"_json", init_json},
+
+ {"xxsubtype", initxxsubtype},
+ {"zipimport", initzipimport},
+ {"zlib", initzlib},
/* CJK codecs */
- {"_multibytecodec", PyInit__multibytecodec},
- {"_codecs_cn", PyInit__codecs_cn},
- {"_codecs_hk", PyInit__codecs_hk},
- {"_codecs_iso2022", PyInit__codecs_iso2022},
- {"_codecs_jp", PyInit__codecs_jp},
- {"_codecs_kr", PyInit__codecs_kr},
- {"_codecs_tw", PyInit__codecs_tw},
+ {"_multibytecodec", init_multibytecodec},
+ {"_codecs_cn", init_codecs_cn},
+ {"_codecs_hk", init_codecs_hk},
+ {"_codecs_iso2022", init_codecs_iso2022},
+ {"_codecs_jp", init_codecs_jp},
+ {"_codecs_kr", init_codecs_kr},
+ {"_codecs_tw", init_codecs_tw},
/* tools/freeze/makeconfig.py marker for additional "_inittab" entries */
/* -- ADDMODULE MARKER 2 -- */
@@ -154,21 +154,16 @@ struct _inittab _PyImport_Inittab[] = {
{"marshal", PyMarshal_Init},
/* This lives it with import.c */
- {"_imp", PyInit__imp},
+ {"imp", initimp},
/* These entries are here for sys.builtin_module_names */
- {"builtins", NULL},
+ {"__main__", NULL},
+ {"__builtin__", NULL},
{"sys", NULL},
+ {"exceptions", NULL},
{"_warnings", _PyWarnings_Init},
- {"_string", PyInit__string},
-
- {"_io", PyInit__io},
- {"_pickle", PyInit__pickle},
- {"atexit", PyInit_atexit},
- {"_stat", PyInit__stat},
- {"_opcode", PyInit__opcode},
- {"_contextvars", PyInit__contextvars},
+ {"_io", init_io},
/* Sentinel */
{0, 0}
diff --git a/PC/crtlicense.txt b/PC/crtlicense.txt
deleted file mode 100644
index f86841f..0000000
--- a/PC/crtlicense.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-Additional Conditions for this Windows binary build
----------------------------------------------------
-
-This program is linked with and uses Microsoft Distributable Code,
-copyrighted by Microsoft Corporation. The Microsoft Distributable Code
-is embedded in each .exe, .dll and .pyd file as a result of running
-the code through a linker.
-
-If you further distribute programs that include the Microsoft
-Distributable Code, you must comply with the restrictions on
-distribution specified by Microsoft. In particular, you must require
-distributors and external end users to agree to terms that protect the
-Microsoft Distributable Code at least as much as Microsoft's own
-requirements for the Distributable Code. See Microsoft's documentation
-(included in its developer tools and on its website at microsoft.com)
-for specific details.
-
-Redistribution of the Windows binary build of the Python interpreter
-complies with this agreement, provided that you do not:
-
-- alter any copyright, trademark or patent notice in Microsoft's
-Distributable Code;
-
-- use Microsoft's trademarks in your programs' names or in a way that
-suggests your programs come from or are endorsed by Microsoft;
-
-- distribute Microsoft's Distributable Code to run on a platform other
-than Microsoft operating systems, run-time technologies or application
-platforms; or
-
-- include Microsoft Distributable Code in malicious, deceptive or
-unlawful programs.
-
-These restrictions apply only to the Microsoft Distributable Code as
-defined above, not to Python itself or any programs running on the
-Python interpreter. The redistribution of the Python interpreter and
-libraries is governed by the Python Software License included with this
-file, or by other licenses as marked.
-
diff --git a/PC/dl_nt.c b/PC/dl_nt.c
index c87c51e..3e58bac 100644
--- a/PC/dl_nt.c
+++ b/PC/dl_nt.c
@@ -12,19 +12,13 @@ forgotten) from the programmer.
#include "windows.h"
#ifdef Py_ENABLE_SHARED
-#ifdef MS_DLL_ID
-// The string is available at build, so fill the buffer immediately
-char dllVersionBuffer[16] = MS_DLL_ID;
-#else
char dllVersionBuffer[16] = ""; // a private buffer
-#endif
// Python Globals
HMODULE PyWin_DLLhModule = NULL;
const char *PyWin_DLLVersionString = dllVersionBuffer;
-#if HAVE_SXS
-// Windows "Activation Context" work.
+// Windows "Activation Context" work:
// Our .pyd extension modules are generally built without a manifest (ie,
// those included with Python and those built with a default distutils.
// This requires we perform some "activation context" magic when loading our
@@ -35,14 +29,12 @@ const char *PyWin_DLLVersionString = dllVersionBuffer;
// As an added complication, this magic only works on XP or later - we simply
// use the existence (or not) of the relevant function pointers from kernel32.
// See bug 4566 (http://python.org/sf/4566) for more details.
-// In Visual Studio 2010, side by side assemblies are no longer used by
-// default.
typedef BOOL (WINAPI * PFN_GETCURRENTACTCTX)(HANDLE *);
typedef BOOL (WINAPI * PFN_ACTIVATEACTCTX)(HANDLE, ULONG_PTR *);
typedef BOOL (WINAPI * PFN_DEACTIVATEACTCTX)(DWORD, ULONG_PTR);
-typedef BOOL (WINAPI * PFN_ADDREFACTCTX)(HANDLE);
-typedef BOOL (WINAPI * PFN_RELEASEACTCTX)(HANDLE);
+typedef void (WINAPI * PFN_ADDREFACTCTX)(HANDLE);
+typedef void (WINAPI * PFN_RELEASEACTCTX)(HANDLE);
// locals and function pointers for this activation context magic.
static HANDLE PyWin_DLLhActivationContext = NULL; // one day it might be public
@@ -83,7 +75,6 @@ void _Py_DeactivateActCtx(ULONG_PTR cookie)
if (!(*pfnDeactivateActCtx)(0, cookie))
OutputDebugString("Python failed to de-activate the activation context\n");
}
-#endif /* HAVE_SXS */
BOOL WINAPI DllMain (HANDLE hInst,
ULONG ul_reason_for_call,
@@ -93,27 +84,25 @@ BOOL WINAPI DllMain (HANDLE hInst,
{
case DLL_PROCESS_ATTACH:
PyWin_DLLhModule = hInst;
-#ifndef MS_DLL_ID
- // If we have MS_DLL_ID, we don't need to load the string.
// 1000 is a magic number I picked out of the air. Could do with a #define, I spose...
LoadString(hInst, 1000, dllVersionBuffer, sizeof(dllVersionBuffer));
-#endif
-#if HAVE_SXS
// and capture our activation context for use when loading extensions.
_LoadActCtxPointers();
if (pfnGetCurrentActCtx && pfnAddRefActCtx)
- if ((*pfnGetCurrentActCtx)(&PyWin_DLLhActivationContext))
- if (!(*pfnAddRefActCtx)(PyWin_DLLhActivationContext))
- OutputDebugString("Python failed to load the default activation context\n");
-#endif
+ if ((*pfnGetCurrentActCtx)(&PyWin_DLLhActivationContext)) {
+ (*pfnAddRefActCtx)(PyWin_DLLhActivationContext);
+ }
+ else {
+ OutputDebugString("Python failed to load the default "
+ "activation context\n");
+ return FALSE;
+ }
break;
case DLL_PROCESS_DETACH:
-#if HAVE_SXS
if (pfnReleaseActCtx)
(*pfnReleaseActCtx)(PyWin_DLLhActivationContext);
-#endif
break;
}
return TRUE;
diff --git a/PC/dllbase_nt.txt b/PC/dllbase_nt.txt
new file mode 100644
index 0000000..c06e497
--- /dev/null
+++ b/PC/dllbase_nt.txt
@@ -0,0 +1,77 @@
+In Win32, DLL's are "pre-linked" using a specified base address.
+When the DLL is loaded, an attempt is made to place it at
+that address. If that address is already in use, a new base address
+is selected, and the DLL subject to fixups. Apparently, these
+fixups are very slow, and significant performance gains can be
+made by selecting a good base address.
+
+This document is to allocate base addresses to core Python
+and Python .PYD files, to give a better change of optimal performance.
+This base address is passed to the linker using the /BASE
+command line switch.
+
+
+Python.exe/Pythonw.exe - 1d000000 - 1e000000 (-1)
+Python.dll - 1e000000 - 1e100000 (-1)
+
+Standard Extension Modules 1e100000 - 1e200000 ""
+ - _symtable 1e100000 - 1e110000 pyd removed in 2.4
+ - bsddb 1e180000 - 1e188000
+ - _tkinter 1e190000 - 1e1A0000
+ - parser 1e1A0000 - 1e1B0000 pyd removed in 2.4
+ - zlib 1e1B0000 - 1e1C0000
+ - winreg 1e1C0000 - 1e1D0000 pyd removed in 2.4
+ - _socket 1e1D0000 - 1e1E0000
+ - _sre 1e1E0000 - 1e1F0000 pyd removed in 2.4
+ - mmap 1e1F0000 - 1e1FFFFF pyd removed in 2.4
+
+More standard extensions 1D100000 - 1e000000
+ - pyexpat 1D100000 - 1D110000
+ - select 1D110000 - 1D120000
+ - unicodedata 1D120000 - 1D160000
+ - winsound 1D160000 - 1D170000
+ - bZ2 1D170000 - 1D180000
+ - datetime 1D180000 - 1D190000 pyd removed in 2.4
+ - _csv 1D190000 - 1D1A0000 pyd removed in 2.4
+ - _ctypes 1D1A0000 - 1D1B0000
+
+Other extension modules
+ - win32api 1e200000 - 1e220000
+ - win32ras 1e220000 - 1e230000
+ - win32lz 1e230000 - 1e240000
+ - timer 1e240000 - 1e250000
+ - mmapfile 1e250000 - 1e260000
+ - win32pipe 1e260000 - 1e270000
+ - avl 1e270000 - 1e270000
+ - dbhash 1e280000 - 1e290000
+ - win32net 1e290000 - 1e2A0000
+ - win32security 1e2A0000 - 1e2B0000
+ - win32print 1e2B0000 - 1e2c0000
+ - <unused> 1e2d0000 - 1e2e0000
+ - win32gui 1e2e0000 - 1e2f0000
+ - _imaging 1e2f0000 - 1e300000
+ - multiarray 1e300000 - 1e310000
+ - win32help 1e310000 - 1e320000
+ - win32clipboard 1e320000 - 1e330000
+ - win2kras 1e330000 - 1e340000
+ - pythoncom 1e340000 - 1e400000
+ - win32ui 1e400000 - 1e500000
+ - win32uiole 1e500000 - 1e600000
+ - pywintypes 1e600000 - 1e700000
+ - win32process 1e700000 - 1e800000
+ - odbc 1e710000 - 1e720000
+ - dbi 1e720000 - 1e730000
+ - win32file 1e730000 - 1e740000
+ - win32wnet 1e740000 - 1e750000
+ - win32com.shell 1e750000 - 1e760000
+ - win32com.internet 1e760000 - 1e770000
+ - win32com.exchange 1e770000 - 1e780000
+ - win32com.exchdapi 1e780000 - 1e790000
+ - win32com.axscript 1e790000 - 1e7a0000
+ - win32com.axdebug 1e7b0000 - 1e7c0000
+ - win32com.adsi 1e7f0000 - 1e800000
+ - win32event 1e810000 - 1e820000
+ - win32evtlog 1e820000 - 1e830000
+ - win32com.axcontrol 1e830000 - 1e840000
+
+
diff --git a/PC/errmap.h b/PC/errmap.h
index a7489ab..d225aa4 100644
--- a/PC/errmap.h
+++ b/PC/errmap.h
@@ -1,140 +1,78 @@
-int
-winerror_to_errno(int winerror)
+/* Generated file. Do not edit. */
+int winerror_to_errno(int winerror)
{
- // Unwrap FACILITY_WIN32 HRESULT errors.
- if ((winerror & 0xFFFF0000) == 0x80070000) {
- winerror &= 0x0000FFFF;
- }
-
- // Winsock error codes (10000-11999) are errno values.
- if (winerror >= 10000 && winerror < 12000) {
- switch (winerror) {
- case WSAEINTR:
- case WSAEBADF:
- case WSAEACCES:
- case WSAEFAULT:
- case WSAEINVAL:
- case WSAEMFILE:
- // Winsock definitions of errno values. See WinSock2.h
- return winerror - 10000;
- default:
- return winerror;
- }
- }
-
- switch (winerror) {
- case ERROR_FILE_NOT_FOUND: // 2
- case ERROR_PATH_NOT_FOUND: // 3
- case ERROR_INVALID_DRIVE: // 15
- case ERROR_NO_MORE_FILES: // 18
- case ERROR_BAD_NETPATH: // 53
- case ERROR_BAD_NET_NAME: // 67
- case ERROR_BAD_PATHNAME: // 161
- case ERROR_FILENAME_EXCED_RANGE: // 206
- return ENOENT;
-
- case ERROR_BAD_ENVIRONMENT: // 10
- return E2BIG;
-
- case ERROR_BAD_FORMAT: // 11
- case ERROR_INVALID_STARTING_CODESEG: // 188
- case ERROR_INVALID_STACKSEG: // 189
- case ERROR_INVALID_MODULETYPE: // 190
- case ERROR_INVALID_EXE_SIGNATURE: // 191
- case ERROR_EXE_MARKED_INVALID: // 192
- case ERROR_BAD_EXE_FORMAT: // 193
- case ERROR_ITERATED_DATA_EXCEEDS_64k: // 194
- case ERROR_INVALID_MINALLOCSIZE: // 195
- case ERROR_DYNLINK_FROM_INVALID_RING: // 196
- case ERROR_IOPL_NOT_ENABLED: // 197
- case ERROR_INVALID_SEGDPL: // 198
- case ERROR_AUTODATASEG_EXCEEDS_64k: // 199
- case ERROR_RING2SEG_MUST_BE_MOVABLE: // 200
- case ERROR_RELOC_CHAIN_XEEDS_SEGLIM: // 201
- case ERROR_INFLOOP_IN_RELOC_CHAIN: // 202
- return ENOEXEC;
-
- case ERROR_INVALID_HANDLE: // 6
- case ERROR_INVALID_TARGET_HANDLE: // 114
- case ERROR_DIRECT_ACCESS_HANDLE: // 130
- return EBADF;
-
- case ERROR_WAIT_NO_CHILDREN: // 128
- case ERROR_CHILD_NOT_COMPLETE: // 129
- return ECHILD;
-
- case ERROR_NO_PROC_SLOTS: // 89
- case ERROR_MAX_THRDS_REACHED: // 164
- case ERROR_NESTING_NOT_ALLOWED: // 215
- return EAGAIN;
-
- case ERROR_ARENA_TRASHED: // 7
- case ERROR_NOT_ENOUGH_MEMORY: // 8
- case ERROR_INVALID_BLOCK: // 9
- case ERROR_NOT_ENOUGH_QUOTA: // 1816
- return ENOMEM;
-
- case ERROR_ACCESS_DENIED: // 5
- case ERROR_CURRENT_DIRECTORY: // 16
- case ERROR_WRITE_PROTECT: // 19
- case ERROR_BAD_UNIT: // 20
- case ERROR_NOT_READY: // 21
- case ERROR_BAD_COMMAND: // 22
- case ERROR_CRC: // 23
- case ERROR_BAD_LENGTH: // 24
- case ERROR_SEEK: // 25
- case ERROR_NOT_DOS_DISK: // 26
- case ERROR_SECTOR_NOT_FOUND: // 27
- case ERROR_OUT_OF_PAPER: // 28
- case ERROR_WRITE_FAULT: // 29
- case ERROR_READ_FAULT: // 30
- case ERROR_GEN_FAILURE: // 31
- case ERROR_SHARING_VIOLATION: // 32
- case ERROR_LOCK_VIOLATION: // 33
- case ERROR_WRONG_DISK: // 34
- case ERROR_SHARING_BUFFER_EXCEEDED: // 36
- case ERROR_NETWORK_ACCESS_DENIED: // 65
- case ERROR_CANNOT_MAKE: // 82
- case ERROR_FAIL_I24: // 83
- case ERROR_DRIVE_LOCKED: // 108
- case ERROR_SEEK_ON_DEVICE: // 132
- case ERROR_NOT_LOCKED: // 158
- case ERROR_LOCK_FAILED: // 167
- case 35: // 35 (undefined)
- return EACCES;
-
- case ERROR_FILE_EXISTS: // 80
- case ERROR_ALREADY_EXISTS: // 183
- return EEXIST;
-
- case ERROR_NOT_SAME_DEVICE: // 17
- return EXDEV;
-
- case ERROR_DIRECTORY: // 267 (bpo-12802)
- return ENOTDIR;
-
- case ERROR_TOO_MANY_OPEN_FILES: // 4
- return EMFILE;
-
- case ERROR_DISK_FULL: // 112
- return ENOSPC;
-
- case ERROR_BROKEN_PIPE: // 109
- case ERROR_NO_DATA: // 232 (bpo-13063)
- return EPIPE;
-
- case ERROR_DIR_NOT_EMPTY: // 145
- return ENOTEMPTY;
-
- case ERROR_NO_UNICODE_TRANSLATION: // 1113
- return EILSEQ;
-
- case ERROR_INVALID_FUNCTION: // 1
- case ERROR_INVALID_ACCESS: // 12
- case ERROR_INVALID_DATA: // 13
- case ERROR_INVALID_PARAMETER: // 87
- case ERROR_NEGATIVE_SEEK: // 131
- default:
- return EINVAL;
+ switch(winerror) {
+ case 2: return 2;
+ case 3: return 2;
+ case 4: return 24;
+ case 5: return 13;
+ case 6: return 9;
+ case 7: return 12;
+ case 8: return 12;
+ case 9: return 12;
+ case 10: return 7;
+ case 11: return 8;
+ case 15: return 2;
+ case 16: return 13;
+ case 17: return 18;
+ case 18: return 2;
+ case 19: return 13;
+ case 20: return 13;
+ case 21: return 13;
+ case 22: return 13;
+ case 23: return 13;
+ case 24: return 13;
+ case 25: return 13;
+ case 26: return 13;
+ case 27: return 13;
+ case 28: return 13;
+ case 29: return 13;
+ case 30: return 13;
+ case 31: return 13;
+ case 32: return 13;
+ case 33: return 13;
+ case 34: return 13;
+ case 35: return 13;
+ case 36: return 13;
+ case 53: return 2;
+ case 65: return 13;
+ case 67: return 2;
+ case 80: return 17;
+ case 82: return 13;
+ case 83: return 13;
+ case 89: return 11;
+ case 108: return 13;
+ case 109: return 32;
+ case 112: return 28;
+ case 114: return 9;
+ case 128: return 10;
+ case 129: return 10;
+ case 130: return 9;
+ case 132: return 13;
+ case 145: return 41;
+ case 158: return 13;
+ case 161: return 2;
+ case 164: return 11;
+ case 167: return 13;
+ case 183: return 17;
+ case 188: return 8;
+ case 189: return 8;
+ case 190: return 8;
+ case 191: return 8;
+ case 192: return 8;
+ case 193: return 8;
+ case 194: return 8;
+ case 195: return 8;
+ case 196: return 8;
+ case 197: return 8;
+ case 198: return 8;
+ case 199: return 8;
+ case 200: return 8;
+ case 201: return 8;
+ case 202: return 8;
+ case 206: return 2;
+ case 215: return 11;
+ case 1816: return 12;
+ default: return EINVAL;
}
}
diff --git a/PC/frozen_dllmain.c b/PC/frozen_dllmain.c
index 0156c50..a8cc885 100644
--- a/PC/frozen_dllmain.c
+++ b/PC/frozen_dllmain.c
@@ -77,7 +77,7 @@ void PyWinFreeze_ExeTerm(void)
{
// Must go backwards
char **modName;
- for (modName = possibleModules+Py_ARRAY_LENGTH(possibleModules)-2;
+ for (modName = possibleModules+(sizeof(possibleModules) / sizeof(char *))-2;
modName >= possibleModules;
*modName--) {
/* printf("Terminating '%s'\n", *modName);*/
@@ -103,7 +103,7 @@ BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
// Must go backwards
char **modName;
- for (modName = possibleModules+Py_ARRAY_LENGTH(possibleModules)-2;
+ for (modName = possibleModules+(sizeof(possibleModules) / sizeof(char *))-2;
modName >= possibleModules;
*modName--)
CallModuleDllMain(*modName, DLL_PROCESS_DETACH);
@@ -118,7 +118,7 @@ BOOL CallModuleDllMain(char *modName, DWORD dwReason)
BOOL (WINAPI * pfndllmain)(HINSTANCE, DWORD, LPVOID);
char funcName[255];
- HMODULE hmod = GetModuleHandleW(NULL);
+ HMODULE hmod = GetModuleHandle(NULL);
strcpy(funcName, "_DllMain");
strcat(funcName, modName);
strcat(funcName, "@12"); // stdcall convention.
diff --git a/PC/generrmap.c b/PC/generrmap.c
new file mode 100644
index 0000000..bf1081b
--- /dev/null
+++ b/PC/generrmap.c
@@ -0,0 +1,20 @@
+#include <stdio.h>
+#include <errno.h>
+
+/* Extract the mapping of Win32 error codes to errno */
+
+int main()
+{
+ int i;
+ printf("/* Generated file. Do not edit. */\n");
+ printf("int winerror_to_errno(int winerror)\n");
+ printf("{\n\tswitch(winerror) {\n");
+ for(i=1; i < 65000; i++) {
+ _dosmaperr(i);
+ if (errno == EINVAL)
+ continue;
+ printf("\t\tcase %d: return %d;\n", i, errno);
+ }
+ printf("\t\tdefault: return EINVAL;\n");
+ printf("\t}\n}\n");
+}
diff --git a/PC/getpathp.c b/PC/getpathp.c
index 085caf1..461f9fc 100644
--- a/PC/getpathp.c
+++ b/PC/getpathp.c
@@ -1,14 +1,12 @@
/* Return the initial module search path. */
-/* Used by DOS, Windows 3.1, Windows 95/98, Windows NT. */
+/* Used by DOS, OS/2, Windows 3.1, Windows 95/98, Windows NT. */
/* ----------------------------------------------------------------
PATH RULES FOR WINDOWS:
This describes how sys.path is formed on Windows. It describes the
functionality, not the implementation (ie, the order in which these
- are actually fetched is different). The presence of a python._pth or
- pythonXY._pth file alongside the program overrides these rules - see
- below.
+ are actually fetched is different)
* Python always adds an empty entry at the start, which corresponds
to the current directory.
@@ -25,9 +23,9 @@
* We attempt to locate the "Python Home" - if the PYTHONHOME env var
is set, we believe it. Otherwise, we use the path of our host .EXE's
- to try and locate one of our "landmarks" and deduce our home.
+ to try and locate our "landmark" (lib\\os.py) and deduce our home.
- If we DO have a Python Home: The relevant sub-directories (Lib,
- DLLs, etc) are based on the Python Home
+ plat-win, lib-tk, etc) are based on the Python Home
- If we DO NOT have a Python Home, the core Python Path is
loaded from the registry. This is the main PythonPath key,
and both HKLM and HKCU are combined to form the path)
@@ -35,23 +33,7 @@
* Iff - we can not locate the Python Home, have not had a PYTHONPATH
specified, and can't locate any Registry entries (ie, we have _nothing_
we can assume is a good path), a default path with relative entries is
- used (eg. .\Lib;.\DLLs, etc)
-
-
- If a '._pth' file exists adjacent to the executable with the same base name
- (e.g. python._pth adjacent to python.exe) or adjacent to the shared library
- (e.g. python36._pth adjacent to python36.dll), it is used in preference to
- the above process. The shared library file takes precedence over the
- executable. The path file must contain a list of paths to add to sys.path,
- one per line. Each path is relative to the directory containing the file.
- Blank lines and comments beginning with '#' are permitted.
-
- In the presence of this ._pth file, no other paths are added to the search
- path, the registry finder is not enabled, site.py is not imported and
- isolated mode is enabled. The site package can be enabled by including a
- line reading "import site"; no other imports are recognized. Any invalid
- entry (other than directories that do not exist) will result in immediate
- termination of the program.
+ used (eg. .\Lib;.\plat-win, etc)
The end result of all this is:
@@ -69,29 +51,16 @@
exe, some very strange installation setup) you get a path with
some default, but relative, paths.
- * An embedding application can use Py_SetPath() to override all of
- these automatic path computations.
-
- * An install of Python can fully specify the contents of sys.path using
- either a 'EXENAME._pth' or 'DLLNAME._pth' file, optionally including
- "import site" to enable the site module.
-
---------------------------------------------------------------- */
#include "Python.h"
-#include "pycore_initconfig.h" /* PyStatus */
-#include "pycore_pathconfig.h" /* _PyPathConfig */
-#include "pycore_pystate.h"
#include "osdefs.h"
-#include <wchar.h>
-
-#ifndef MS_WINDOWS
-#error getpathp.c should only be built on Windows
-#endif
+#ifdef MS_WINDOWS
#include <windows.h>
-#include <shlwapi.h>
+#include <tchar.h>
+#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
@@ -110,36 +79,20 @@
* The approach is an adaptation for Windows of the strategy used in
* ../Modules/getpath.c; it uses the Windows Registry as one of its
* information sources.
- *
- * Py_SetPath() can be used to override this mechanism. Call Py_SetPath
- * with a semicolon separated path prior to calling Py_Initialize.
*/
#ifndef LANDMARK
-# define LANDMARK L"lib\\os.py"
+#define LANDMARK "lib\\os.py"
#endif
-#define INIT_ERR_BUFFER_OVERFLOW() _PyStatus_ERR("buffer overflow")
+static char prefix[MAXPATHLEN+1];
+static char progpath[MAXPATHLEN+1];
+static char dllpath[MAXPATHLEN+1];
+static char *module_search_path = NULL;
-typedef struct {
- const wchar_t *path_env; /* PATH environment variable */
- const wchar_t *home; /* PYTHONHOME environment variable */
-
- /* Registry key "Software\Python\PythonCore\X.Y\PythonPath"
- where X.Y is the Python version (major.minor) */
- wchar_t *machine_path; /* from HKEY_LOCAL_MACHINE */
- wchar_t *user_path; /* from HKEY_CURRENT_USER */
-
- wchar_t *dll_path;
-
- const wchar_t *pythonpath_env;
-} PyCalculatePath;
-
-
-/* determine if "ch" is a separator character */
static int
-is_sep(wchar_t ch)
+is_sep(char ch) /* determine if "ch" is a separator character */
{
#ifdef ALTSEP
return ch == SEP || ch == ALTSEP;
@@ -148,17 +101,13 @@ is_sep(wchar_t ch)
#endif
}
-
/* assumes 'dir' null terminated in bounds. Never writes
- beyond existing terminator. */
+ beyond existing terminator.
+*/
static void
-reduce(wchar_t *dir)
+reduce(char *dir)
{
- size_t i = wcsnlen_s(dir, MAXPATHLEN+1);
- if (i >= MAXPATHLEN+1) {
- Py_FatalError("buffer overflow in getpathp.c's reduce()");
- }
-
+ size_t i = strlen(dir);
while (i > 0 && !is_sep(dir[i]))
--i;
dir[i] = '\0';
@@ -166,72 +115,30 @@ reduce(wchar_t *dir)
static int
-change_ext(wchar_t *dest, const wchar_t *src, const wchar_t *ext)
-{
- size_t src_len = wcsnlen_s(src, MAXPATHLEN+1);
- size_t i = src_len;
- if (i >= MAXPATHLEN+1) {
- Py_FatalError("buffer overflow in getpathp.c's reduce()");
- }
-
- while (i > 0 && src[i] != '.' && !is_sep(src[i]))
- --i;
-
- if (i == 0) {
- dest[0] = '\0';
- return -1;
- }
-
- if (is_sep(src[i])) {
- i = src_len;
- }
-
- if (wcsncpy_s(dest, MAXPATHLEN+1, src, i) ||
- wcscat_s(dest, MAXPATHLEN+1, ext))
- {
- dest[0] = '\0';
- return -1;
- }
-
- return 0;
-}
-
-
-static int
-exists(const wchar_t *filename)
+exists(char *filename)
{
- return GetFileAttributesW(filename) != 0xFFFFFFFF;
+ struct stat buf;
+ return stat(filename, &buf) == 0;
}
-
-/* Is module -- check for .pyc too.
- Assumes 'filename' MAXPATHLEN+1 bytes long -
- may extend 'filename' by one character. */
+/* Assumes 'filename' MAXPATHLEN+1 bytes long -
+ may extend 'filename' by one character.
+*/
static int
-ismodule(wchar_t *filename, int update_filename)
+ismodule(char *filename) /* Is module -- check for .pyc/.pyo too */
{
- size_t n;
-
- if (exists(filename)) {
+ if (exists(filename))
return 1;
- }
/* Check for the compiled version of prefix. */
- n = wcsnlen_s(filename, MAXPATHLEN+1);
- if (n < MAXPATHLEN) {
- int exist = 0;
- filename[n] = L'c';
- filename[n + 1] = L'\0';
- exist = exists(filename);
- if (!update_filename) {
- filename[n] = L'\0';
- }
- return exist;
+ if (strlen(filename) < MAXPATHLEN) {
+ strcat(filename, Py_OptimizeFlag ? "o" : "c");
+ if (exists(filename))
+ return 1;
}
return 0;
}
-
/* Add a path component, by appending stuff to buffer.
buffer must have at least MAXPATHLEN + 1 bytes allocated, and contain a
NUL-terminated string with no more than MAXPATHLEN characters (not counting
@@ -241,113 +148,65 @@ ismodule(wchar_t *filename, int update_filename)
than MAXPATHLEN characters at exit. If stuff is too long, only as much of
stuff as fits will be appended.
*/
-
-static int _PathCchCombineEx_Initialized = 0;
-typedef HRESULT(__stdcall *PPathCchCombineEx) (PWSTR pszPathOut, size_t cchPathOut,
- PCWSTR pszPathIn, PCWSTR pszMore,
- unsigned long dwFlags);
-static PPathCchCombineEx _PathCchCombineEx;
-
static void
-join(wchar_t *buffer, const wchar_t *stuff)
-{
- if (_PathCchCombineEx_Initialized == 0) {
- HMODULE pathapi = LoadLibraryW(L"api-ms-win-core-path-l1-1-0.dll");
- if (pathapi) {
- _PathCchCombineEx = (PPathCchCombineEx)GetProcAddress(pathapi, "PathCchCombineEx");
- }
- else {
- _PathCchCombineEx = NULL;
- }
- _PathCchCombineEx_Initialized = 1;
- }
-
- if (_PathCchCombineEx) {
- if (FAILED(_PathCchCombineEx(buffer, MAXPATHLEN+1, buffer, stuff, 0))) {
- Py_FatalError("buffer overflow in getpathp.c's join()");
- }
- } else {
- if (!PathCombineW(buffer, buffer, stuff)) {
- Py_FatalError("buffer overflow in getpathp.c's join()");
- }
- }
-}
-
-static int _PathCchCanonicalizeEx_Initialized = 0;
-typedef HRESULT(__stdcall *PPathCchCanonicalizeEx) (PWSTR pszPathOut, size_t cchPathOut,
- PCWSTR pszPathIn, unsigned long dwFlags);
-static PPathCchCanonicalizeEx _PathCchCanonicalizeEx;
-
-/* Call PathCchCanonicalizeEx(path): remove navigation elements such as "."
- and ".." to produce a direct, well-formed path. */
-static PyStatus
-canonicalize(wchar_t *buffer, const wchar_t *path)
+join(char *buffer, char *stuff)
{
- if (buffer == NULL) {
- return _PyStatus_NO_MEMORY();
- }
-
- if (_PathCchCanonicalizeEx_Initialized == 0) {
- HMODULE pathapi = LoadLibraryW(L"api-ms-win-core-path-l1-1-0.dll");
- if (pathapi) {
- _PathCchCanonicalizeEx = (PPathCchCanonicalizeEx)GetProcAddress(pathapi, "PathCchCanonicalizeEx");
- }
- else {
- _PathCchCanonicalizeEx = NULL;
- }
- _PathCchCanonicalizeEx_Initialized = 1;
- }
-
- if (_PathCchCanonicalizeEx) {
- if (FAILED(_PathCchCanonicalizeEx(buffer, MAXPATHLEN + 1, path, 0))) {
- return INIT_ERR_BUFFER_OVERFLOW();
- }
- }
+ size_t n, k;
+ if (is_sep(stuff[0]))
+ n = 0;
else {
- if (!PathCanonicalizeW(buffer, path)) {
- return INIT_ERR_BUFFER_OVERFLOW();
- }
- }
- return _PyStatus_OK();
+ n = strlen(buffer);
+ if (n > 0 && !is_sep(buffer[n-1]) && n < MAXPATHLEN)
+ buffer[n++] = SEP;
+ }
+ if (n > MAXPATHLEN)
+ Py_FatalError("buffer overflow in getpathp.c's joinpath()");
+ k = strlen(stuff);
+ if (n + k > MAXPATHLEN)
+ k = MAXPATHLEN - n;
+ strncpy(buffer+n, stuff, k);
+ buffer[n+k] = '\0';
}
-
/* gotlandmark only called by search_for_prefix, which ensures
'prefix' is null terminated in bounds. join() ensures
- 'landmark' can not overflow prefix if too long. */
+ 'landmark' can not overflow prefix if too long.
+*/
static int
-gotlandmark(const wchar_t *prefix, const wchar_t *landmark)
+gotlandmark(char *landmark)
{
- wchar_t filename[MAXPATHLEN+1];
- memset(filename, 0, sizeof(filename));
- wcscpy_s(filename, Py_ARRAY_LENGTH(filename), prefix);
- join(filename, landmark);
- return ismodule(filename, FALSE);
+ int ok;
+ Py_ssize_t n;
+
+ n = strlen(prefix);
+ join(prefix, landmark);
+ ok = ismodule(prefix);
+ prefix[n] = '\0';
+ return ok;
}
-
/* assumes argv0_path is MAXPATHLEN+1 bytes long, already \0 term'd.
assumption provided by only caller, calculate_path() */
static int
-search_for_prefix(wchar_t *prefix, const wchar_t *argv0_path, const wchar_t *landmark)
+search_for_prefix(char *argv0_path, char *landmark)
{
/* Search from argv0_path, until landmark is found */
- wcscpy_s(prefix, MAXPATHLEN + 1, argv0_path);
+ strcpy(prefix, argv0_path);
do {
- if (gotlandmark(prefix, landmark)) {
+ if (gotlandmark(landmark))
return 1;
- }
reduce(prefix);
} while (prefix[0]);
return 0;
}
-
+#ifdef MS_WINDOWS
#ifdef Py_ENABLE_SHARED
/* a string loaded from the DLL at startup.*/
extern const char *PyWin_DLLVersionString;
+
/* Load a PYTHONPATH value from the registry.
Load from either HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER.
@@ -360,92 +219,78 @@ extern const char *PyWin_DLLVersionString;
work on Win16, where the buffer sizes werent available
in advance. It could be simplied now Win16/Win32s is dead!
*/
-static wchar_t *
+
+static char *
getpythonregpath(HKEY keyBase, int skipcore)
{
HKEY newKey = 0;
DWORD dataSize = 0;
DWORD numKeys = 0;
LONG rc;
- wchar_t *retval = NULL;
- WCHAR *dataBuf = NULL;
- static const WCHAR keyPrefix[] = L"Software\\Python\\PythonCore\\";
- static const WCHAR keySuffix[] = L"\\PythonPath";
- size_t versionLen, keyBufLen;
+ char *retval = NULL;
+ TCHAR *dataBuf = NULL;
+ static const TCHAR keyPrefix[] = _T("Software\\Python\\PythonCore\\");
+ static const TCHAR keySuffix[] = _T("\\PythonPath");
+ size_t versionLen;
DWORD index;
- WCHAR *keyBuf = NULL;
- WCHAR *keyBufPtr;
- WCHAR **ppPaths = NULL;
+ TCHAR *keyBuf = NULL;
+ TCHAR *keyBufPtr;
+ TCHAR **ppPaths = NULL;
/* Tried to use sysget("winver") but here is too early :-( */
- versionLen = strlen(PyWin_DLLVersionString);
+ versionLen = _tcslen(PyWin_DLLVersionString);
/* Space for all the chars, plus one \0 */
- keyBufLen = sizeof(keyPrefix) +
- sizeof(WCHAR)*(versionLen-1) +
- sizeof(keySuffix);
- keyBuf = keyBufPtr = PyMem_RawMalloc(keyBufLen);
- if (keyBuf==NULL) {
- goto done;
- }
-
- memcpy_s(keyBufPtr, keyBufLen, keyPrefix, sizeof(keyPrefix)-sizeof(WCHAR));
- keyBufPtr += Py_ARRAY_LENGTH(keyPrefix) - 1;
- mbstowcs(keyBufPtr, PyWin_DLLVersionString, versionLen);
+ keyBuf = keyBufPtr = malloc(sizeof(keyPrefix) +
+ sizeof(TCHAR)*(versionLen-1) +
+ sizeof(keySuffix));
+ if (keyBuf==NULL) goto done;
+
+ memcpy(keyBufPtr, keyPrefix, sizeof(keyPrefix)-sizeof(TCHAR));
+ keyBufPtr += sizeof(keyPrefix)/sizeof(TCHAR) - 1;
+ memcpy(keyBufPtr, PyWin_DLLVersionString, versionLen * sizeof(TCHAR));
keyBufPtr += versionLen;
/* NULL comes with this one! */
memcpy(keyBufPtr, keySuffix, sizeof(keySuffix));
/* Open the root Python key */
- rc=RegOpenKeyExW(keyBase,
+ rc=RegOpenKeyEx(keyBase,
keyBuf, /* subkey */
0, /* reserved */
KEY_READ,
&newKey);
- if (rc!=ERROR_SUCCESS) {
- goto done;
- }
+ if (rc!=ERROR_SUCCESS) goto done;
/* Find out how big our core buffer is, and how many subkeys we have */
rc = RegQueryInfoKey(newKey, NULL, NULL, NULL, &numKeys, NULL, NULL,
NULL, NULL, &dataSize, NULL, NULL);
- if (rc!=ERROR_SUCCESS) {
- goto done;
- }
- if (skipcore) {
- dataSize = 0; /* Only count core ones if we want them! */
- }
+ if (rc!=ERROR_SUCCESS) goto done;
+ if (skipcore) dataSize = 0; /* Only count core ones if we want them! */
/* Allocate a temp array of char buffers, so we only need to loop
reading the registry once
*/
- ppPaths = PyMem_RawMalloc( sizeof(WCHAR *) * numKeys );
- if (ppPaths==NULL) {
- goto done;
- }
- memset(ppPaths, 0, sizeof(WCHAR *) * numKeys);
+ ppPaths = malloc( sizeof(TCHAR *) * numKeys );
+ if (ppPaths==NULL) goto done;
+ memset(ppPaths, 0, sizeof(TCHAR *) * numKeys);
/* Loop over all subkeys, allocating a temp sub-buffer. */
for(index=0;index<numKeys;index++) {
- WCHAR keyBuf[MAX_PATH+1];
+ TCHAR keyBuf[MAX_PATH+1];
HKEY subKey = 0;
DWORD reqdSize = MAX_PATH+1;
/* Get the sub-key name */
- DWORD rc = RegEnumKeyExW(newKey, index, keyBuf, &reqdSize,
- NULL, NULL, NULL, NULL );
- if (rc!=ERROR_SUCCESS) {
- goto done;
- }
+ DWORD rc = RegEnumKeyEx(newKey, index, keyBuf, &reqdSize,
+ NULL, NULL, NULL, NULL );
+ if (rc!=ERROR_SUCCESS) goto done;
/* Open the sub-key */
- rc=RegOpenKeyExW(newKey,
+ rc=RegOpenKeyEx(newKey,
keyBuf, /* subkey */
0, /* reserved */
KEY_READ,
&subKey);
- if (rc!=ERROR_SUCCESS) {
- goto done;
- }
+ if (rc!=ERROR_SUCCESS) goto done;
/* Find the value of the buffer size, malloc, then read it */
- RegQueryValueExW(subKey, NULL, 0, NULL, NULL, &reqdSize);
+ RegQueryValueEx(subKey, NULL, 0, NULL, NULL, &reqdSize);
if (reqdSize) {
- ppPaths[index] = PyMem_RawMalloc(reqdSize);
+ ppPaths[index] = malloc(reqdSize);
if (ppPaths[index]) {
- RegQueryValueExW(subKey, NULL, 0, NULL,
+ RegQueryValueEx(subKey, NULL, 0, NULL,
(LPBYTE)ppPaths[index],
&reqdSize);
dataSize += reqdSize + 1; /* 1 for the ";" */
@@ -455,396 +300,233 @@ getpythonregpath(HKEY keyBase, int skipcore)
}
/* return null if no path to return */
- if (dataSize == 0) {
- goto done;
- }
+ if (dataSize == 0) goto done;
/* original datasize from RegQueryInfo doesn't include the \0 */
- dataBuf = PyMem_RawMalloc((dataSize+1) * sizeof(WCHAR));
+ dataBuf = malloc((dataSize+1) * sizeof(TCHAR));
if (dataBuf) {
- WCHAR *szCur = dataBuf;
+ TCHAR *szCur = dataBuf;
+ DWORD reqdSize = dataSize;
/* Copy our collected strings */
for (index=0;index<numKeys;index++) {
if (index > 0) {
- *(szCur++) = L';';
+ *(szCur++) = _T(';');
dataSize--;
}
if (ppPaths[index]) {
- Py_ssize_t len = wcslen(ppPaths[index]);
- wcsncpy(szCur, ppPaths[index], len);
+ Py_ssize_t len = _tcslen(ppPaths[index]);
+ _tcsncpy(szCur, ppPaths[index], len);
szCur += len;
assert(dataSize > (DWORD)len);
dataSize -= (DWORD)len;
}
}
- if (skipcore) {
+ if (skipcore)
*szCur = '\0';
- }
else {
- /* If we have no values, we don't need a ';' */
+ /* If we have no values, we dont need a ';' */
if (numKeys) {
- *(szCur++) = L';';
+ *(szCur++) = _T(';');
dataSize--;
}
/* Now append the core path entries -
this will include the NULL
*/
- rc = RegQueryValueExW(newKey, NULL, 0, NULL,
- (LPBYTE)szCur, &dataSize);
- if (rc != ERROR_SUCCESS) {
- PyMem_RawFree(dataBuf);
- goto done;
- }
- }
- /* And set the result - caller must free */
+ rc = RegQueryValueEx(newKey, NULL, 0, NULL,
+ (LPBYTE)szCur, &dataSize);
+ }
+ /* And set the result - caller must free
+ If MBCS, it is fine as is. If Unicode, allocate new
+ buffer and convert.
+ */
+#ifdef UNICODE
+ retval = (char *)malloc(reqdSize+1);
+ if (retval)
+ WideCharToMultiByte(CP_ACP, 0,
+ dataBuf, -1, /* source */
+ retval, reqdSize+1, /* dest */
+ NULL, NULL);
+ free(dataBuf);
+#else
retval = dataBuf;
+#endif
}
done:
/* Loop freeing my temp buffers */
if (ppPaths) {
- for(index=0; index<numKeys; index++)
- PyMem_RawFree(ppPaths[index]);
- PyMem_RawFree(ppPaths);
+ for(index=0;index<numKeys;index++)
+ if (ppPaths[index]) free(ppPaths[index]);
+ free(ppPaths);
}
- if (newKey) {
+ if (newKey)
RegCloseKey(newKey);
- }
- PyMem_RawFree(keyBuf);
+ if (keyBuf)
+ free(keyBuf);
return retval;
}
#endif /* Py_ENABLE_SHARED */
+#endif /* MS_WINDOWS */
-
-wchar_t*
-_Py_GetDLLPath(void)
+static void
+get_progpath(void)
{
- wchar_t dll_path[MAXPATHLEN+1];
- memset(dll_path, 0, sizeof(dll_path));
+ extern char *Py_GetProgramName(void);
+ char *path = getenv("PATH");
+ char *prog = Py_GetProgramName();
-#ifdef Py_ENABLE_SHARED
+#ifdef MS_WINDOWS
extern HANDLE PyWin_DLLhModule;
- if (PyWin_DLLhModule) {
- if (!GetModuleFileNameW(PyWin_DLLhModule, dll_path, MAXPATHLEN)) {
- dll_path[0] = 0;
- }
+#ifdef UNICODE
+ WCHAR wprogpath[MAXPATHLEN+1];
+ /* Windows documents that GetModuleFileName() will "truncate",
+ but makes no mention of the null terminator. Play it safe.
+ PLUS Windows itself defines MAX_PATH as the same, but anyway...
+ */
+#ifdef Py_ENABLE_SHARED
+ wprogpath[MAXPATHLEN]=_T('\0');
+ if (PyWin_DLLhModule &&
+ GetModuleFileName(PyWin_DLLhModule, wprogpath, MAXPATHLEN)) {
+ WideCharToMultiByte(CP_ACP, 0,
+ wprogpath, -1,
+ dllpath, MAXPATHLEN+1,
+ NULL, NULL);
}
#else
- dll_path[0] = 0;
+ dllpath[0] = 0;
#endif
-
- return _PyMem_RawWcsdup(dll_path);
-}
-
-
-static PyStatus
-get_program_full_path(_PyPathConfig *pathconfig)
-{
- PyStatus status;
- const wchar_t *pyvenv_launcher;
- wchar_t program_full_path[MAXPATHLEN+1];
- memset(program_full_path, 0, sizeof(program_full_path));
-
- if (!GetModuleFileNameW(NULL, program_full_path, MAXPATHLEN)) {
- /* GetModuleFileName should never fail when passed NULL */
- return _PyStatus_ERR("Cannot determine program path");
+ wprogpath[MAXPATHLEN]=_T('\0');
+ if (GetModuleFileName(NULL, wprogpath, MAXPATHLEN)) {
+ WideCharToMultiByte(CP_ACP, 0,
+ wprogpath, -1,
+ progpath, MAXPATHLEN+1,
+ NULL, NULL);
+ return;
}
-
- /* The launcher may need to force the executable path to a
- * different environment, so override it here. */
- pyvenv_launcher = _wgetenv(L"__PYVENV_LAUNCHER__");
- if (pyvenv_launcher && pyvenv_launcher[0]) {
- /* If overridden, preserve the original full path */
- if (pathconfig->base_executable == NULL) {
- pathconfig->base_executable = PyMem_RawMalloc(
- sizeof(wchar_t) * (MAXPATHLEN + 1));
- if (pathconfig->base_executable == NULL) {
- return _PyStatus_NO_MEMORY();
- }
-
- status = canonicalize(pathconfig->base_executable,
- program_full_path);
- if (_PyStatus_EXCEPTION(status)) {
- return status;
+#else
+ /* static init of progpath ensures final char remains \0 */
+#ifdef Py_ENABLE_SHARED
+ if (PyWin_DLLhModule)
+ if (!GetModuleFileName(PyWin_DLLhModule, dllpath, MAXPATHLEN))
+ dllpath[0] = 0;
+#else
+ dllpath[0] = 0;
+#endif
+ if (GetModuleFileName(NULL, progpath, MAXPATHLEN))
+ return;
+#endif
+#endif
+ if (prog == NULL || *prog == '\0')
+ prog = "python";
+
+ /* If there is no slash in the argv0 path, then we have to
+ * assume python is on the user's $PATH, since there's no
+ * other way to find a directory to start the search from. If
+ * $PATH isn't exported, you lose.
+ */
+#ifdef ALTSEP
+ if (strchr(prog, SEP) || strchr(prog, ALTSEP))
+#else
+ if (strchr(prog, SEP))
+#endif
+ strncpy(progpath, prog, MAXPATHLEN);
+ else if (path) {
+ while (1) {
+ char *delim = strchr(path, DELIM);
+
+ if (delim) {
+ size_t len = delim - path;
+ /* ensure we can't overwrite buffer */
+ len = min(MAXPATHLEN,len);
+ strncpy(progpath, path, len);
+ *(progpath + len) = '\0';
}
- }
-
- wcscpy_s(program_full_path, MAXPATHLEN+1, pyvenv_launcher);
- /* bpo-35873: Clear the environment variable to avoid it being
- * inherited by child processes. */
- _wputenv_s(L"__PYVENV_LAUNCHER__", L"");
- }
+ else
+ strncpy(progpath, path, MAXPATHLEN);
- if (pathconfig->program_full_path == NULL) {
- pathconfig->program_full_path = PyMem_RawMalloc(
- sizeof(wchar_t) * (MAXPATHLEN + 1));
- if (pathconfig->program_full_path == NULL) {
- return _PyStatus_NO_MEMORY();
- }
-
- status = canonicalize(pathconfig->program_full_path,
- program_full_path);
- if (_PyStatus_EXCEPTION(status)) {
- return status;
- }
- }
- return _PyStatus_OK();
-}
-
-
-static PyStatus
-read_pth_file(_PyPathConfig *pathconfig, wchar_t *prefix, const wchar_t *path,
- int *found)
-{
- PyStatus status;
- wchar_t *buf = NULL;
- wchar_t *wline = NULL;
- FILE *sp_file;
-
- sp_file = _Py_wfopen(path, L"r");
- if (sp_file == NULL) {
- return _PyStatus_OK();
- }
-
- wcscpy_s(prefix, MAXPATHLEN+1, path);
- reduce(prefix);
- pathconfig->isolated = 1;
- pathconfig->site_import = 0;
-
- size_t bufsiz = MAXPATHLEN;
- size_t prefixlen = wcslen(prefix);
-
- buf = (wchar_t*)PyMem_RawMalloc(bufsiz * sizeof(wchar_t));
- if (buf == NULL) {
- status = _PyStatus_NO_MEMORY();
- goto done;
- }
- buf[0] = '\0';
-
- while (!feof(sp_file)) {
- char line[MAXPATHLEN + 1];
- char *p = fgets(line, Py_ARRAY_LENGTH(line), sp_file);
- if (!p) {
- break;
- }
- if (*p == '\0' || *p == '\r' || *p == '\n' || *p == '#') {
- continue;
- }
- while (*++p) {
- if (*p == '\r' || *p == '\n') {
- *p = '\0';
+ /* join() is safe for MAXPATHLEN+1 size buffer */
+ join(progpath, prog);
+ if (exists(progpath))
break;
- }
- }
- if (strcmp(line, "import site") == 0) {
- pathconfig->site_import = 1;
- continue;
- }
- else if (strncmp(line, "import ", 7) == 0) {
- status = _PyStatus_ERR("only 'import site' is supported "
- "in ._pth file");
- goto done;
- }
-
- DWORD wn = MultiByteToWideChar(CP_UTF8, 0, line, -1, NULL, 0);
- wchar_t *wline = (wchar_t*)PyMem_RawMalloc((wn + 1) * sizeof(wchar_t));
- if (wline == NULL) {
- status = _PyStatus_NO_MEMORY();
- goto done;
- }
- wn = MultiByteToWideChar(CP_UTF8, 0, line, -1, wline, wn + 1);
- wline[wn] = '\0';
-
- size_t usedsiz = wcslen(buf);
- while (usedsiz + wn + prefixlen + 4 > bufsiz) {
- bufsiz += MAXPATHLEN;
- wchar_t *tmp = (wchar_t*)PyMem_RawRealloc(buf, (bufsiz + 1) *
- sizeof(wchar_t));
- if (tmp == NULL) {
- status = _PyStatus_NO_MEMORY();
- goto done;
+ if (!delim) {
+ progpath[0] = '\0';
+ break;
}
- buf = tmp;
- }
-
- if (usedsiz) {
- wcscat_s(buf, bufsiz, L";");
- usedsiz += 1;
- }
-
- errno_t result;
- _Py_BEGIN_SUPPRESS_IPH
- result = wcscat_s(buf, bufsiz, prefix);
- _Py_END_SUPPRESS_IPH
-
- if (result == EINVAL) {
- status = _PyStatus_ERR("invalid argument during ._pth processing");
- goto done;
- } else if (result == ERANGE) {
- status = _PyStatus_ERR("buffer overflow during ._pth processing");
- goto done;
- }
-
- wchar_t *b = &buf[usedsiz];
- join(b, wline);
-
- PyMem_RawFree(wline);
- wline = NULL;
- }
-
- if (pathconfig->module_search_path == NULL) {
- pathconfig->module_search_path = _PyMem_RawWcsdup(buf);
- if (pathconfig->module_search_path == NULL) {
- status = _PyStatus_NO_MEMORY();
- goto done;
- }
- }
-
- *found = 1;
- status = _PyStatus_OK();
- goto done;
-
-done:
- PyMem_RawFree(buf);
- PyMem_RawFree(wline);
- fclose(sp_file);
- return status;
-}
-
-
-static int
-get_pth_filename(PyCalculatePath *calculate, wchar_t *filename,
- const _PyPathConfig *pathconfig)
-{
- if (calculate->dll_path[0]) {
- if (!change_ext(filename, calculate->dll_path, L"._pth") &&
- exists(filename))
- {
- return 1;
+ path = delim + 1;
}
}
- if (pathconfig->program_full_path[0]) {
- if (!change_ext(filename, pathconfig->program_full_path, L"._pth") &&
- exists(filename))
- {
- return 1;
- }
- }
- return 0;
+ else
+ progpath[0] = '\0';
}
-
-static PyStatus
-calculate_pth_file(PyCalculatePath *calculate, _PyPathConfig *pathconfig,
- wchar_t *prefix, int *found)
-{
- wchar_t filename[MAXPATHLEN+1];
-
- if (!get_pth_filename(calculate, filename, pathconfig)) {
- return _PyStatus_OK();
- }
-
- return read_pth_file(pathconfig, prefix, filename, found);
-}
-
-
-/* Search for an environment configuration file, first in the
- executable's directory and then in the parent directory.
- If found, open it for use when searching for prefixes.
-*/
-static PyStatus
-calculate_pyvenv_file(PyCalculatePath *calculate,
- wchar_t *argv0_path, size_t argv0_path_len)
-{
- wchar_t filename[MAXPATHLEN+1];
- const wchar_t *env_cfg = L"pyvenv.cfg";
-
- /* Filename: <argv0_path_len> / "pyvenv.cfg" */
- wcscpy_s(filename, MAXPATHLEN+1, argv0_path);
- join(filename, env_cfg);
-
- FILE *env_file = _Py_wfopen(filename, L"r");
- if (env_file == NULL) {
- errno = 0;
-
- /* Filename: <basename(basename(argv0_path_len))> / "pyvenv.cfg" */
- reduce(filename);
- reduce(filename);
- join(filename, env_cfg);
-
- env_file = _Py_wfopen(filename, L"r");
- if (env_file == NULL) {
- errno = 0;
- return _PyStatus_OK();
- }
- }
-
- /* Look for a 'home' variable and set argv0_path to it, if found */
- wchar_t *home = NULL;
- PyStatus status = _Py_FindEnvConfigValue(env_file, L"home", &home);
- if (_PyStatus_EXCEPTION(status)) {
- fclose(env_file);
- return status;
- }
- if (home) {
- wcscpy_s(argv0_path, argv0_path_len, home);
- PyMem_RawFree(home);
- }
- fclose(env_file);
- return _PyStatus_OK();
-}
-
-
static void
-calculate_home_prefix(PyCalculatePath *calculate,
- const wchar_t *argv0_path,
- const wchar_t *zip_path,
- wchar_t *prefix)
+calculate_path(void)
{
- if (calculate->home == NULL || *calculate->home == '\0') {
- if (zip_path[0] && exists(zip_path)) {
- wcscpy_s(prefix, MAXPATHLEN+1, zip_path);
- reduce(prefix);
- calculate->home = prefix;
- }
- else if (search_for_prefix(prefix, argv0_path, LANDMARK)) {
- calculate->home = prefix;
- }
- else {
- calculate->home = NULL;
- }
+ char argv0_path[MAXPATHLEN+1];
+ char *buf;
+ size_t bufsz;
+ char *pythonhome = Py_GetPythonHome();
+ char *envpath = Py_GETENV("PYTHONPATH");
+
+#ifdef MS_WINDOWS
+ int skiphome, skipdefault;
+ char *machinepath = NULL;
+ char *userpath = NULL;
+ char zip_path[MAXPATHLEN+1];
+ size_t len;
+#endif
+
+ get_progpath();
+ /* progpath guaranteed \0 terminated in MAXPATH+1 bytes. */
+ strcpy(argv0_path, progpath);
+ reduce(argv0_path);
+ if (pythonhome == NULL || *pythonhome == '\0') {
+ if (search_for_prefix(argv0_path, LANDMARK))
+ pythonhome = prefix;
+ else
+ pythonhome = NULL;
+ }
+ else
+ strncpy(prefix, pythonhome, MAXPATHLEN);
+
+ if (envpath && *envpath == '\0')
+ envpath = NULL;
+
+
+#ifdef MS_WINDOWS
+ /* Calculate zip archive path */
+ if (dllpath[0]) /* use name of python DLL */
+ strncpy(zip_path, dllpath, MAXPATHLEN);
+ else /* use name of executable program */
+ strncpy(zip_path, progpath, MAXPATHLEN);
+ zip_path[MAXPATHLEN] = '\0';
+ len = strlen(zip_path);
+ if (len > 4) {
+ zip_path[len-3] = 'z'; /* change ending to "zip" */
+ zip_path[len-2] = 'i';
+ zip_path[len-1] = 'p';
}
else {
- wcscpy_s(prefix, MAXPATHLEN+1, calculate->home);
+ zip_path[0] = 0;
}
-}
-
-static PyStatus
-calculate_module_search_path(PyCalculatePath *calculate,
- _PyPathConfig *pathconfig,
- const wchar_t *argv0_path,
- wchar_t *prefix,
- const wchar_t *zip_path)
-{
- int skiphome = calculate->home==NULL ? 0 : 1;
+ skiphome = pythonhome==NULL ? 0 : 1;
#ifdef Py_ENABLE_SHARED
- calculate->machine_path = getpythonregpath(HKEY_LOCAL_MACHINE, skiphome);
- calculate->user_path = getpythonregpath(HKEY_CURRENT_USER, skiphome);
+ machinepath = getpythonregpath(HKEY_LOCAL_MACHINE, skiphome);
+ userpath = getpythonregpath(HKEY_CURRENT_USER, skiphome);
#endif
- /* We only use the default relative PYTHONPATH if we haven't
+ /* We only use the default relative PYTHONPATH if we havent
anything better to use! */
- int skipdefault = (calculate->pythonpath_env != NULL ||
- calculate->home != NULL ||
- calculate->machine_path != NULL ||
- calculate->user_path != NULL);
+ skipdefault = envpath!=NULL || pythonhome!=NULL || \
+ machinepath!=NULL || userpath!=NULL;
+#endif
/* We need to construct a path from the following parts.
(1) the PYTHONPATH environment variable, if set;
(2) for Win32, the zip archive file path;
- (3) for Win32, the machine_path and user_path, if set;
+ (3) for Win32, the machinepath and userpath, if set;
(4) the PYTHONPATH config macro, with the leading "."
- of each component replaced with home, if set;
+ of each component replaced with pythonhome, if set;
(5) the directory containing the executable (argv0_path).
The length calculation calculates #4 first.
Extra rules:
@@ -853,110 +535,115 @@ calculate_module_search_path(PyCalculatePath *calculate,
*/
/* Calculate size of return buffer */
- size_t bufsz = 0;
- if (calculate->home != NULL) {
- const wchar_t *p;
+ if (pythonhome != NULL) {
+ char *p;
bufsz = 1;
for (p = PYTHONPATH; *p; p++) {
- if (*p == DELIM) {
+ if (*p == DELIM)
bufsz++; /* number of DELIM plus one */
- }
}
- bufsz *= wcslen(calculate->home);
- }
- bufsz += wcslen(PYTHONPATH) + 1;
- bufsz += wcslen(argv0_path) + 1;
- if (calculate->user_path) {
- bufsz += wcslen(calculate->user_path) + 1;
- }
- if (calculate->machine_path) {
- bufsz += wcslen(calculate->machine_path) + 1;
- }
- bufsz += wcslen(zip_path) + 1;
- if (calculate->pythonpath_env != NULL) {
- bufsz += wcslen(calculate->pythonpath_env) + 1;
- }
+ bufsz *= strlen(pythonhome);
+ }
+ else
+ bufsz = 0;
+ bufsz += strlen(PYTHONPATH) + 1;
+ bufsz += strlen(argv0_path) + 1;
+#ifdef MS_WINDOWS
+ if (userpath)
+ bufsz += strlen(userpath) + 1;
+ if (machinepath)
+ bufsz += strlen(machinepath) + 1;
+ bufsz += strlen(zip_path) + 1;
+#endif
+ if (envpath != NULL)
+ bufsz += strlen(envpath) + 1;
- wchar_t *buf, *start_buf;
- buf = PyMem_RawMalloc(bufsz * sizeof(wchar_t));
+ module_search_path = buf = malloc(bufsz);
if (buf == NULL) {
- return _PyStatus_NO_MEMORY();
+ /* We can't exit, so print a warning and limp along */
+ fprintf(stderr, "Can't malloc dynamic PYTHONPATH.\n");
+ if (envpath) {
+ fprintf(stderr, "Using environment $PYTHONPATH.\n");
+ module_search_path = envpath;
+ }
+ else {
+ fprintf(stderr, "Using default static path.\n");
+ module_search_path = PYTHONPATH;
+ }
+#ifdef MS_WINDOWS
+ if (machinepath)
+ free(machinepath);
+ if (userpath)
+ free(userpath);
+#endif /* MS_WINDOWS */
+ return;
}
- start_buf = buf;
- if (calculate->pythonpath_env) {
- if (wcscpy_s(buf, bufsz - (buf - start_buf),
- calculate->pythonpath_env)) {
- return INIT_ERR_BUFFER_OVERFLOW();
- }
- buf = wcschr(buf, L'\0');
+ if (envpath) {
+ strcpy(buf, envpath);
+ buf = strchr(buf, '\0');
*buf++ = DELIM;
}
+#ifdef MS_WINDOWS
if (zip_path[0]) {
- if (wcscpy_s(buf, bufsz - (buf - start_buf), zip_path)) {
- return INIT_ERR_BUFFER_OVERFLOW();
- }
- buf = wcschr(buf, L'\0');
+ strcpy(buf, zip_path);
+ buf = strchr(buf, '\0');
*buf++ = DELIM;
}
- if (calculate->user_path) {
- if (wcscpy_s(buf, bufsz - (buf - start_buf), calculate->user_path)) {
- return INIT_ERR_BUFFER_OVERFLOW();
- }
- buf = wcschr(buf, L'\0');
+ if (userpath) {
+ strcpy(buf, userpath);
+ buf = strchr(buf, '\0');
*buf++ = DELIM;
+ free(userpath);
}
- if (calculate->machine_path) {
- if (wcscpy_s(buf, bufsz - (buf - start_buf), calculate->machine_path)) {
- return INIT_ERR_BUFFER_OVERFLOW();
- }
- buf = wcschr(buf, L'\0');
+ if (machinepath) {
+ strcpy(buf, machinepath);
+ buf = strchr(buf, '\0');
*buf++ = DELIM;
+ free(machinepath);
}
- if (calculate->home == NULL) {
+ if (pythonhome == NULL) {
if (!skipdefault) {
- if (wcscpy_s(buf, bufsz - (buf - start_buf), PYTHONPATH)) {
- return INIT_ERR_BUFFER_OVERFLOW();
- }
- buf = wcschr(buf, L'\0');
- *buf++ = DELIM;
+ strcpy(buf, PYTHONPATH);
+ buf = strchr(buf, '\0');
}
- } else {
- const wchar_t *p = PYTHONPATH;
- const wchar_t *q;
+ }
+#else
+ if (pythonhome == NULL) {
+ strcpy(buf, PYTHONPATH);
+ buf = strchr(buf, '\0');
+ }
+#endif /* MS_WINDOWS */
+ else {
+ char *p = PYTHONPATH;
+ char *q;
size_t n;
for (;;) {
- q = wcschr(p, DELIM);
- if (q == NULL) {
- n = wcslen(p);
- }
- else {
+ q = strchr(p, DELIM);
+ if (q == NULL)
+ n = strlen(p);
+ else
n = q-p;
- }
if (p[0] == '.' && is_sep(p[1])) {
- if (wcscpy_s(buf, bufsz - (buf - start_buf), calculate->home)) {
- return INIT_ERR_BUFFER_OVERFLOW();
- }
- buf = wcschr(buf, L'\0');
+ strcpy(buf, pythonhome);
+ buf = strchr(buf, '\0');
p++;
n--;
}
- wcsncpy(buf, p, n);
+ strncpy(buf, p, n);
buf += n;
- *buf++ = DELIM;
- if (q == NULL) {
+ if (q == NULL)
break;
- }
+ *buf++ = DELIM;
p = q+1;
}
}
if (argv0_path) {
- wcscpy(buf, argv0_path);
- buf = wcschr(buf, L'\0');
*buf++ = DELIM;
+ strcpy(buf, argv0_path);
+ buf = strchr(buf, '\0');
}
- *(buf - 1) = L'\0';
-
+ *buf = '\0';
/* Now to pull one last hack/trick. If sys.prefix is
empty, then try and find it somewhere on the paths
we calculated. We scan backwards, as our general policy
@@ -965,225 +652,63 @@ calculate_module_search_path(PyCalculatePath *calculate,
on the path, and that our 'prefix' directory is
the parent of that.
*/
- if (prefix[0] == L'\0') {
- wchar_t lookBuf[MAXPATHLEN+1];
- const wchar_t *look = buf - 1; /* 'buf' is at the end of the buffer */
+ if (*prefix=='\0') {
+ char lookBuf[MAXPATHLEN+1];
+ char *look = buf - 1; /* 'buf' is at the end of the buffer */
while (1) {
Py_ssize_t nchars;
- const wchar_t *lookEnd = look;
+ char *lookEnd = look;
/* 'look' will end up one character before the
start of the path in question - even if this
is one character before the start of the buffer
*/
- while (look >= start_buf && *look != DELIM)
+ while (look >= module_search_path && *look != DELIM)
look--;
nchars = lookEnd-look;
- wcsncpy(lookBuf, look+1, nchars);
- lookBuf[nchars] = L'\0';
+ strncpy(lookBuf, look+1, nchars);
+ lookBuf[nchars] = '\0';
/* Up one level to the parent */
reduce(lookBuf);
- if (search_for_prefix(prefix, lookBuf, LANDMARK)) {
+ if (search_for_prefix(lookBuf, LANDMARK)) {
break;
}
/* If we are out of paths to search - give up */
- if (look < start_buf) {
+ if (look < module_search_path)
break;
- }
look--;
}
}
-
- pathconfig->module_search_path = start_buf;
- return _PyStatus_OK();
}
-static PyStatus
-calculate_path(PyCalculatePath *calculate, _PyPathConfig *pathconfig)
-{
- PyStatus status;
-
- status = get_program_full_path(pathconfig);
- if (_PyStatus_EXCEPTION(status)) {
- return status;
- }
+/* External interface */
- /* program_full_path guaranteed \0 terminated in MAXPATH+1 bytes. */
- wchar_t argv0_path[MAXPATHLEN+1];
- memset(argv0_path, 0, sizeof(argv0_path));
-
- wcscpy_s(argv0_path, MAXPATHLEN+1, pathconfig->program_full_path);
- reduce(argv0_path);
-
- wchar_t prefix[MAXPATHLEN+1];
- memset(prefix, 0, sizeof(prefix));
-
- /* Search for a sys.path file */
- int pth_found = 0;
- status = calculate_pth_file(calculate, pathconfig, prefix, &pth_found);
- if (_PyStatus_EXCEPTION(status)) {
- return status;
- }
- if (pth_found) {
- goto done;
- }
-
- status = calculate_pyvenv_file(calculate,
- argv0_path, Py_ARRAY_LENGTH(argv0_path));
- if (_PyStatus_EXCEPTION(status)) {
- return status;
- }
-
- /* Calculate zip archive path from DLL or exe path */
- wchar_t zip_path[MAXPATHLEN+1];
- memset(zip_path, 0, sizeof(zip_path));
-
- change_ext(zip_path,
- calculate->dll_path[0] ? calculate->dll_path : pathconfig->program_full_path,
- L".zip");
-
- calculate_home_prefix(calculate, argv0_path, zip_path, prefix);
-
- if (pathconfig->module_search_path == NULL) {
- status = calculate_module_search_path(calculate, pathconfig,
- argv0_path, prefix, zip_path);
- if (_PyStatus_EXCEPTION(status)) {
- return status;
- }
- }
-
-done:
- if (pathconfig->prefix == NULL) {
- pathconfig->prefix = _PyMem_RawWcsdup(prefix);
- if (pathconfig->prefix == NULL) {
- return _PyStatus_NO_MEMORY();
- }
- }
- if (pathconfig->exec_prefix == NULL) {
- pathconfig->exec_prefix = _PyMem_RawWcsdup(prefix);
- if (pathconfig->exec_prefix == NULL) {
- return _PyStatus_NO_MEMORY();
- }
- }
-
- return _PyStatus_OK();
-}
-
-
-static PyStatus
-calculate_init(PyCalculatePath *calculate, _PyPathConfig *pathconfig,
- const PyConfig *config)
+char *
+Py_GetPath(void)
{
- calculate->home = pathconfig->home;
- calculate->path_env = _wgetenv(L"PATH");
-
- calculate->dll_path = _Py_GetDLLPath();
- if (calculate->dll_path == NULL) {
- return _PyStatus_NO_MEMORY();
- }
-
- calculate->pythonpath_env = config->pythonpath_env;
-
- return _PyStatus_OK();
+ if (!module_search_path)
+ calculate_path();
+ return module_search_path;
}
-
-static void
-calculate_free(PyCalculatePath *calculate)
+char *
+Py_GetPrefix(void)
{
- PyMem_RawFree(calculate->machine_path);
- PyMem_RawFree(calculate->user_path);
- PyMem_RawFree(calculate->dll_path);
+ if (!module_search_path)
+ calculate_path();
+ return prefix;
}
-
-/* Calculate the Python path configuration.
-
- Inputs:
-
- - PyConfig.pythonpath_env: PYTHONPATH environment variable
- - _PyPathConfig.home: Py_SetPythonHome() or PYTHONHOME environment variable
- - DLL path: _Py_GetDLLPath()
- - PATH environment variable
- - __PYVENV_LAUNCHER__ environment variable
- - GetModuleFileNameW(NULL): fully qualified path of the executable file of
- the current process
- - ._pth configuration file
- - pyvenv.cfg configuration file
- - Registry key "Software\Python\PythonCore\X.Y\PythonPath"
- of HKEY_CURRENT_USER and HKEY_LOCAL_MACHINE where X.Y is the Python
- version.
-
- Outputs, 'pathconfig' fields:
-
- - base_executable
- - program_full_path
- - module_search_path
- - prefix
- - exec_prefix
- - isolated
- - site_import
-
- If a field is already set (non NULL), it is left unchanged. */
-PyStatus
-_PyPathConfig_Calculate(_PyPathConfig *pathconfig, const PyConfig *config)
+char *
+Py_GetExecPrefix(void)
{
- PyStatus status;
- PyCalculatePath calculate;
- memset(&calculate, 0, sizeof(calculate));
-
- status = calculate_init(&calculate, pathconfig, config);
- if (_PyStatus_EXCEPTION(status)) {
- goto done;
- }
-
- status = calculate_path(&calculate, pathconfig);
-
-done:
- calculate_free(&calculate);
- return status;
+ return Py_GetPrefix();
}
-
-/* Load python3.dll before loading any extension module that might refer
- to it. That way, we can be sure that always the python3.dll corresponding
- to this python DLL is loaded, not a python3.dll that might be on the path
- by chance.
- Return whether the DLL was found.
-*/
-static int python3_checked = 0;
-static HANDLE hPython3;
-int
-_Py_CheckPython3(void)
+char *
+Py_GetProgramFullPath(void)
{
- wchar_t py3path[MAXPATHLEN+1];
- wchar_t *s;
- if (python3_checked) {
- return hPython3 != NULL;
- }
- python3_checked = 1;
-
- /* If there is a python3.dll next to the python3y.dll,
- assume this is a build tree; use that DLL */
- if (_Py_dll_path != NULL) {
- wcscpy(py3path, _Py_dll_path);
- }
- else {
- wcscpy(py3path, L"");
- }
- s = wcsrchr(py3path, L'\\');
- if (!s) {
- s = py3path;
- }
- wcscpy(s, L"\\python3.dll");
- hPython3 = LoadLibraryExW(py3path, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
- if (hPython3 != NULL) {
- return 1;
- }
-
- /* Check sys.prefix\DLLs\python3.dll */
- wcscpy(py3path, Py_GetPrefix());
- wcscat(py3path, L"\\DLLs\\python3.dll");
- hPython3 = LoadLibraryExW(py3path, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
- return hPython3 != NULL;
+ if (!module_search_path)
+ calculate_path();
+ return progpath;
}
diff --git a/PC/icons.mak b/PC/icons.mak
new file mode 100644
index 0000000..4a132c9
--- /dev/null
+++ b/PC/icons.mak
@@ -0,0 +1,9 @@
+python_icon.exe: py.res empty.obj
+ link /out:python_icon.exe /machine:x86 /subsystem:windows py.res empty.obj
+
+py.res: py.ico pyc.ico pycon.ico icons.rc
+ rc /fo py.res icons.rc
+
+empty.obj: empty.c
+ cl /c empty.c
+
diff --git a/PC/icons.rc b/PC/icons.rc
new file mode 100644
index 0000000..d0b4410
--- /dev/null
+++ b/PC/icons.rc
@@ -0,0 +1,4 @@
+101 ICON "py.ico"
+102 ICON "pyc.ico"
+103 ICON "pycon.ico"
+
diff --git a/PC/icons/launcher.icns b/PC/icons/launcher.icns
deleted file mode 100644
index 59a917f..0000000
--- a/PC/icons/launcher.icns
+++ /dev/null
Binary files differ
diff --git a/PC/icons/launcher.ico b/PC/icons/launcher.ico
deleted file mode 100644
index c4e3c69..0000000
--- a/PC/icons/launcher.ico
+++ /dev/null
Binary files differ
diff --git a/PC/icons/launcher.svg b/PC/icons/launcher.svg
deleted file mode 100644
index 0590b0d..0000000
--- a/PC/icons/launcher.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><style>.icon-canvas-transparent{opacity:0;fill:#f6f6f6}.icon-vs-out{fill:#f6f6f6}.icon-white{fill:#fff}.icon-vso-bg{fill:#656565}.icon-visualstudio-online{fill:#007acc}.graph-lightgrey{fill:#dfdfdf}.st0{fill:#0078d7}.st1{fill:#fff}.st2{fill:url(#path1948_1_)}.st3{fill:url(#path1950_1_)}</style><path class="icon-canvas-transparent" d="M32 32H0V0h32v32z" id="canvas"/><g id="iconBg"><path class="icon-visualstudio-online" d="M30 5H5V3h25v2z"/><path class="icon-vso-bg" d="M29.972 26.972H5.029V5h.942v21.028h23.057V5h.943v21.972z"/><path class="icon-vs-out" d="M29 5v21H6V5h23z"/><path class="icon-white" d="M29.141 4l.429.429-.14.142-.43-.43-.43.43-.14-.142.429-.429-.429-.429.141-.142.429.43.43-.43.141.142-.43.429zM27.6 3.4h-1.2v1.2h1.2V3.4zm-1 .2h.8v.8h-.8v-.8zm-1.139.8h-1v.2h1v-.2z"/><path class="graph-lightgrey" d="M6 5h23v2H6z"/></g><g id="iconFg"><path class="st0" d="M4.5 23v6"/><path class="st1" d="M11.429 13.019a19.88 19.88 0 0 0 .071-1.645c0-4.223-1.329-8.165-3.556-10.545L7.17 0H5.83l-.774.829C2.829 3.209 1.5 7.151 1.5 11.374c0 .453.023.9.053 1.345C.887 13.472.357 14.438 0 15.533v6.603L.229 23H3v7h2v2h3v-1h2v-8h2.772l.394-1.488c.222-.842.335-1.714.335-2.592-.001-2.419-.803-4.534-2.072-5.901z"/><path class="st0" d="M6.5 22v9M8.5 23v7"/><path class="icon-visualstudio-online" d="M5 29H4v-6h1v6zm2-6H6v8h1v-8zm2 0H8v7h1v-7z"/><path class="icon-vso-bg" d="M10.381 13.38c.07-.658.119-1.325.119-2.006 0-3.975-1.229-7.662-3.286-9.862L6.5.748l-.714.763C3.729 3.712 2.5 7.399 2.5 11.374c0 .681.049 1.348.119 2.006C1.339 14.521.5 16.552.5 18.92c0 .793.102 1.578.302 2.336L.999 22h1.966l.072-.922c.081-1.046.471-1.966.993-2.503.487 1.019 1.07 1.929 1.756 2.662L6.5 22l.714-.763c.686-.733 1.269-1.643 1.756-2.662.522.537.912 1.457.993 2.503l.072.922h1.966l.197-.744c.2-.758.302-1.543.302-2.336 0-2.368-.839-4.399-2.119-5.54z"/><path class="icon-vs-out" d="M3.619 17.615c-.854.672-1.464 1.913-1.579 3.385h-.272a8.184 8.184 0 0 1-.268-2.08c0-1.722.505-3.259 1.297-4.272.187 1.05.465 2.045.822 2.967zm6.585-2.967a16.145 16.145 0 0 1-.822 2.967c.854.671 1.464 1.913 1.579 3.385h.272a8.184 8.184 0 0 0 .268-2.08c-.001-1.722-.506-3.259-1.297-4.272zM3.5 11.374c0 3.837 1.198 7.2 3 9.128 1.802-1.927 3-5.291 3-9.128s-1.198-7.2-3-9.128c-1.802 1.928-3 5.291-3 9.128z"/><path class="icon-visualstudio-online" d="M7.5 7a1 1 0 1 1-2 0 1 1 0 0 1 2 0z"/></g><g id="colorImportance"><path class="icon-white" d="M31.596 23.961c-.35 1.053-1.001 3.015-3.247 3.015h-1.3v1.337c0 .905-.392 2.537-3.021 3.298a9.213 9.213 0 0 1-2.59.39c-.83 0-1.668-.128-2.564-.392-1.918-.563-3.017-1.765-3.017-3.296v-1.337h-1.155c-1.698 0-2.943-1.129-3.416-3.098-.469-1.946-.469-3.195 0-5.141.451-1.881 1.96-3.098 3.845-3.098h.726v-1.337c0-2.005.905-2.982 3.126-3.374.729-.13 1.549-.2 2.367-.203h.004c.925 0 1.761.067 2.56.201 1.816.303 3.134 1.723 3.134 3.376v1.337h1.3c1.142 0 2.636.536 3.27 3.092.516 2.073.51 3.637-.022 5.23z"/><linearGradient id="path1948_1_" gradientUnits="userSpaceOnUse" x1="522.205" y1="-288.668" x2="540.902" y2="-304.754" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#5a9fd4"/><stop offset="1" stop-color="#306998"/></linearGradient><path id="path1948_7_" class="st2" d="M21.354 11.725c-.786.004-1.537.071-2.197.188-1.946.344-2.299 1.063-2.299 2.39v1.753h4.598v.584h-6.324c-1.336 0-2.507.803-2.873 2.331-.422 1.751-.441 2.844 0 4.673.327 1.361 1.107 2.331 2.444 2.331h1.581v-2.101c0-1.518 1.313-2.857 2.873-2.857h4.593c1.279 0 2.299-1.053 2.299-2.337v-4.379c0-1.246-1.051-2.182-2.299-2.39-.79-.13-1.61-.189-2.396-.186zm-2.486 1.41c.475 0 .863.394.863.879a.87.87 0 0 1-.863.874.868.868 0 0 1-.863-.874c0-.485.386-.879.863-.879z"/><linearGradient id="path1950_1_" gradientUnits="userSpaceOnUse" x1="548.13" y1="-314.489" x2="541.454" y2="-305.043" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#ffd43b"/><stop offset="1" stop-color="#ffe873"/></linearGradient><path id="path1950_7_" class="st3" d="M26.623 16.64v2.042c0 1.583-1.342 2.915-2.873 2.915h-4.593c-1.258 0-2.299 1.077-2.299 2.337v4.379c0 1.246 1.084 1.979 2.299 2.337 1.456.428 2.851.505 4.593 0 1.158-.335 2.299-1.01 2.299-2.337V26.56h-4.593v-.584H28.348c1.336 0 1.834-.932 2.299-2.331.48-1.44.46-2.826 0-4.673-.33-1.33-.961-2.331-2.299-2.331h-1.725zm-2.584 11.089c.477 0 .863.391.863.874a.871.871 0 0 1-.863.879.872.872 0 0 1-.863-.879.87.87 0 0 1 .863-.874z"/></g></svg> \ No newline at end of file
diff --git a/PC/icons/py.icns b/PC/icons/py.icns
deleted file mode 100644
index 2dc4e29..0000000
--- a/PC/icons/py.icns
+++ /dev/null
Binary files differ
diff --git a/PC/icons/py.ico b/PC/icons/py.ico
deleted file mode 100644
index 1d8a79b..0000000
--- a/PC/icons/py.ico
+++ /dev/null
Binary files differ
diff --git a/PC/icons/py.png b/PC/icons/py.png
deleted file mode 100644
index 5c184e6..0000000
--- a/PC/icons/py.png
+++ /dev/null
Binary files differ
diff --git a/PC/icons/py.svg b/PC/icons/py.svg
deleted file mode 100644
index 0924e83..0000000
--- a/PC/icons/py.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><style>.icon-canvas-transparent{opacity:0;fill:#f6f6f6}.icon-vs-out{fill:#f6f6f6}.icon-vso-bg{fill:#656565}.icon-vso-lightgrey{fill:#bfbfbf}.icon-white{fill:#fff}.st0{fill:url(#path1948_1_)}.st1{fill:url(#path1950_1_)}</style><path class="icon-canvas-transparent" d="M32 32H0V0h32v32z" id="canvas"/><g id="iconBg"><path class="icon-vs-out" d="M26 8.009V29H7V3h14.053L26 8.009z"/><path class="icon-vso-bg" d="M21.471 2H6v28h21V7.599L21.471 2zM21 3h.053l4.939 5H21V3zm5 26H7V3h13v6h6v20z"/></g><path class="icon-vso-lightgrey" d="M17 7H9V6h8v1zm0 2H9v1h8V9zm7 3H9v1h15v-1zm0 3H9v1h15v-1zm0 3H9v1h15v-1zm0 3H9v1h15v-1zm0 3H9v1h15v-1z" id="iconFg"/><g id="colorImportance"><path class="icon-white" d="M31.66 24.063C31.312 25.116 30.661 27 28.413 27H27v1.313c0 .905-.335 2.537-2.965 3.298-.904.261-1.694.389-2.531.389-.83 0-1.63-.128-2.526-.392C17.061 31.045 16 29.844 16 28.313V27h-1.232c-1.699 0-2.944-1.141-3.416-3.11-.469-1.946-.469-3.021 0-4.967.451-1.881 1.96-2.923 3.845-2.923H16v-1.697c0-2.005.866-2.845 3.087-3.238.727-.128 1.506-.065 2.327-.065h.003c.921 0 1.703-.07 2.504.064 1.818.302 3.079 1.585 3.079 3.239V16h1.413c1.142 0 2.636.356 3.27 2.912.515 2.072.509 3.559-.023 5.151z"/><linearGradient id="path1948_1_" gradientUnits="userSpaceOnUse" x1="522.32" y1="-288.668" x2="541.017" y2="-304.754" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#5a9fd4"/><stop offset="1" stop-color="#306998"/></linearGradient><path id="path1948_2_" class="st0" d="M21.419 11.725c-.786.004-1.537.071-2.197.188-1.946.344-2.299 1.063-2.299 2.39v1.753h4.598v.584h-6.324c-1.336 0-2.507.803-2.873 2.331-.422 1.751-.441 2.844 0 4.673.327 1.361 1.108 2.331 2.444 2.331h1.581v-2.101c0-1.518 1.313-2.857 2.873-2.857h4.593c1.278 0 2.299-1.053 2.299-2.337v-4.379c0-1.246-1.051-2.182-2.299-2.39-.79-.13-1.61-.189-2.396-.186zm-2.487 1.41c.475 0 .863.394.863.879a.87.87 0 0 1-.863.874.868.868 0 0 1-.863-.874c0-.485.387-.879.863-.879z"/><linearGradient id="path1950_1_" gradientUnits="userSpaceOnUse" x1="548.245" y1="-314.489" x2="541.569" y2="-305.043" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#ffd43b"/><stop offset="1" stop-color="#ffe873"/></linearGradient><path id="path1950_2_" class="st1" d="M26.687 16.64v2.042c0 1.583-1.342 2.915-2.873 2.915h-4.593c-1.258 0-2.299 1.077-2.299 2.337v4.379c0 1.246 1.084 1.979 2.299 2.337 1.456.428 2.851.505 4.593 0 1.158-.335 2.299-1.01 2.299-2.337V26.56H21.52v-.584H28.412c1.336 0 1.834-.932 2.299-2.331.48-1.44.46-2.826 0-4.673-.33-1.33-.961-2.331-2.299-2.331h-1.725zm-2.583 11.089c.477 0 .863.391.863.874a.871.871 0 0 1-.863.879.872.872 0 0 1-.863-.879c0-.484.388-.874.863-.874z"/></g></svg> \ No newline at end of file
diff --git a/PC/icons/pyc.icns b/PC/icons/pyc.icns
deleted file mode 100644
index 50da9a1..0000000
--- a/PC/icons/pyc.icns
+++ /dev/null
Binary files differ
diff --git a/PC/icons/pyc.ico b/PC/icons/pyc.ico
deleted file mode 100644
index 74dde81..0000000
--- a/PC/icons/pyc.ico
+++ /dev/null
Binary files differ
diff --git a/PC/icons/pyc.svg b/PC/icons/pyc.svg
deleted file mode 100644
index 5c3e9e7..0000000
--- a/PC/icons/pyc.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><style>.icon-canvas-transparent{opacity:0;fill:#f6f6f6}.icon-vso-bg{fill:#656565}.icon-vs-bg{fill:#424242}.icon-vs-green{fill:#393}.icon-white{fill:#fff}.st0{fill:url(#path1948_1_)}.st1{fill:url(#path1950_1_)}</style><path class="icon-canvas-transparent" d="M32 32H0V0h32v32z" id="canvas"/><g id="iconBg"><path class="icon-vs-bg" d="M21.053 3H7v26h19V8.009z"/><path class="icon-vso-bg" d="M21.471 2H6v28h21V7.599L21.471 2zM21 3h.053l4.939 5H21V3zm5 26H7V3h13v6h6v20z"/></g><path class="icon-vs-green" d="M10 16H9v-1h1v1zm1.011 5H9v1h2.032a8.368 8.368 0 0 1-.021-1zM14 10h2V9h-2v1zm-3-4H9v1h2V6zm0 6H9v1h2v-1zm2-3H9v1h4V9zm4-3v1h1V6h-1zm-3 6h-2v1h2v-1zm1-6h-2v1h2V6zm-4 10h1v-1h-1v1zm4-4v1h2v-1h-2zm-2 4h3v-1h-3v1zm-4 2v1h3v-1H9zm0 6v1h3v-1H9z" id="iconFg"/><g id="colorImportance"><path class="icon-white" d="M31.66 24.063C31.312 25.116 30.661 27 28.413 27H27v1.313c0 .905-.335 2.537-2.965 3.298-.904.261-1.694.389-2.531.389-.83 0-1.63-.128-2.526-.392C17.061 31.045 16 29.844 16 28.313V27h-1.232c-1.699 0-2.944-1.141-3.416-3.11-.469-1.946-.469-3.021 0-4.967.451-1.881 1.96-2.923 3.845-2.923H16v-1.697c0-2.005.866-2.845 3.087-3.238.727-.128 1.506-.065 2.327-.065h.003c.921 0 1.703-.07 2.504.064 1.818.302 3.079 1.585 3.079 3.239V16h1.413c1.142 0 2.636.356 3.27 2.912.515 2.072.509 3.558-.023 5.151z"/><linearGradient id="path1948_1_" gradientUnits="userSpaceOnUse" x1="522.32" y1="-288.668" x2="541.017" y2="-304.754" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#5a9fd4"/><stop offset="1" stop-color="#306998"/></linearGradient><path id="path1948_4_" class="st0" d="M21.419 11.725c-.786.004-1.537.071-2.197.188-1.946.344-2.299 1.063-2.299 2.39v1.753h4.598v.584h-6.324c-1.336 0-2.507.803-2.873 2.331-.422 1.751-.441 2.844 0 4.673.327 1.361 1.108 2.331 2.444 2.331h1.581v-2.101c0-1.518 1.313-2.857 2.873-2.857h4.593c1.278 0 2.299-1.053 2.299-2.337v-4.379c0-1.246-1.051-2.182-2.299-2.39-.79-.13-1.61-.189-2.396-.186zm-2.487 1.41c.475 0 .863.394.863.879a.87.87 0 0 1-.863.874.868.868 0 0 1-.863-.874c0-.485.387-.879.863-.879z"/><linearGradient id="path1950_1_" gradientUnits="userSpaceOnUse" x1="548.245" y1="-314.489" x2="541.569" y2="-305.043" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#ffd43b"/><stop offset="1" stop-color="#ffe873"/></linearGradient><path id="path1950_4_" class="st1" d="M26.687 16.64v2.042c0 1.583-1.342 2.915-2.873 2.915h-4.593c-1.258 0-2.299 1.077-2.299 2.337v4.379c0 1.246 1.084 1.979 2.299 2.337 1.456.428 2.851.505 4.593 0 1.158-.335 2.299-1.01 2.299-2.337V26.56H21.52v-.584H28.412c1.336 0 1.834-.932 2.299-2.331.48-1.44.46-2.826 0-4.673-.33-1.33-.961-2.331-2.299-2.331h-1.725zm-2.583 11.089c.477 0 .863.391.863.874a.871.871 0 0 1-.863.879.872.872 0 0 1-.863-.879c0-.484.388-.874.863-.874z"/></g></svg> \ No newline at end of file
diff --git a/PC/icons/pyd.icns b/PC/icons/pyd.icns
deleted file mode 100644
index 5d3d24e..0000000
--- a/PC/icons/pyd.icns
+++ /dev/null
Binary files differ
diff --git a/PC/icons/pyd.ico b/PC/icons/pyd.ico
deleted file mode 100644
index 9f6cb60..0000000
--- a/PC/icons/pyd.ico
+++ /dev/null
Binary files differ
diff --git a/PC/icons/pyd.svg b/PC/icons/pyd.svg
deleted file mode 100644
index 17eff6a..0000000
--- a/PC/icons/pyd.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><style>.icon-canvas-transparent{opacity:0;fill:#f6f6f6}.icon-vso-bg{fill:#656565}.icon-vs-out{fill:#f6f6f6}.icon-f12-hover-bg{fill:#d9ebf7}.icon-f12-ltgrey-disabled{fill:#ababac}.icon-white{fill:#fff}.st0{fill:#9ca2a7}.st1{fill:url(#path1948_1_)}.st2{fill:url(#path1950_1_)}</style><path class="icon-canvas-transparent" d="M32 32H0V0h32v32z" id="canvas"/><g id="iconBg"><path class="icon-vs-out" d="M21.053 3H7v26h19V8.009z"/><path class="icon-vso-bg" d="M21.471 2H6v28h21V7.599L21.471 2zM21 3h.053l4.939 5H21V3zm5 26H7V3h13v6h6v20z"/></g><g id="iconFg"><path class="st0" d="M13.784 17.705c-1.296 0-2.35-1.054-2.35-2.35s1.054-2.35 2.35-2.35 2.35 1.054 2.35 2.35-1.054 2.35-2.35 2.35zm0-4.5c-1.186 0-2.15.964-2.15 2.15s.964 2.151 2.15 2.151 2.15-.965 2.15-2.151-.964-2.15-2.15-2.15z"/><path class="icon-f12-hover-bg" d="M18.05 16.122c.016-.069.031-.139.043-.209l1.376-.618-.103-1.015-1.47-.33c-.025-.068-.056-.134-.086-.199l-.026-.056.892-1.236-.595-.827-1.45.453c-.069-.061-.141-.118-.213-.175l.151-1.511-.929-.418-1.032 1.121-.056-.013a3.089 3.089 0 0 0-.217-.045l-.618-1.374-1.015.104-.329 1.472c-.049.019-.096.04-.143.063l-.056.025-1.225-.907-.835.586.435 1.457c-.06.067-.123.138-.182.212l-1.506-.172-.429.925L9.54 14.48l-.005.024a4.127 4.127 0 0 0-.051.246l-1.387.606.092 1.015 1.463.346c.024.067.055.132.084.194l.03.067-.86 1.17-.042.059.588.832 1.456-.44c.07.063.138.122.209.178l-.167 1.508.926.427L12.92 19.6l.048.01c.074.017.149.034.226.046l.609 1.385 1.015-.095.342-1.466c.075-.027.147-.061.216-.093l.067-.031 1.235.892.827-.595-.452-1.45c.062-.071.12-.142.176-.215l1.512.151.418-.929-1.122-1.033.013-.055zm-4.266 1.583c-1.296 0-2.35-1.054-2.35-2.35s1.054-2.35 2.35-2.35 2.35 1.054 2.35 2.35-1.054 2.35-2.35 2.35z"/><path class="icon-f12-ltgrey-disabled" d="M13.803 21.04l-.609-1.384a3.08 3.08 0 0 1-.236-.048l-.038-.008-1.043 1.111-.925-.427.167-1.507a4.013 4.013 0 0 1-.209-.179l-1.456.439-.588-.832.902-1.228-.033-.072c-.028-.061-.058-.124-.082-.19l-1.463-.344-.091-1.015 1.387-.605c.012-.078.03-.154.047-.231l.009-.039-1.109-1.045.428-.925 1.507.17c.058-.072.118-.14.183-.211l-.435-1.458.834-.585 1.225.907.052-.024c.048-.022.097-.044.147-.063l.329-1.473 1.014-.104.62 1.375a2.389 2.389 0 0 1 .271.058l1.032-1.122.93.418-.153 1.511c.073.055.143.113.214.174l1.45-.453.595.827-.892 1.236a.8.8 0 0 1 .024.053c.03.064.062.131.087.201l1.471.332.103 1.014-1.376.618c-.012.071-.027.14-.043.208l-.014.058 1.122 1.033-.419.929-1.511-.152a3.851 3.851 0 0 1-.176.215l.452 1.45-.827.595-1.236-.892-.07.032a2.94 2.94 0 0 1-.212.092l-.341 1.465-1.015.095zm-.951-1.66l.151.033c.089.021.179.042.272.053l.056.007.597 1.354.728-.067.333-1.435.054-.018c.083-.025.161-.062.244-.101.042-.02.084-.039.127-.057l.052-.022 1.211.874.593-.427-.442-1.421.038-.043c.085-.094.163-.188.236-.288l.033-.046 1.48.15.3-.667-1.099-1.012.012-.055.025-.117c.019-.08.037-.16.047-.244l.007-.056 1.348-.605-.073-.728-1.441-.324-.018-.055c-.025-.081-.061-.157-.096-.233a2.145 2.145 0 0 1-.05-.109l-.022-.052.874-1.212-.427-.593-1.42.443-.042-.038a3.896 3.896 0 0 0-.288-.235L16.207 12l.149-1.48-.667-.3-1.012 1.1-.056-.011c-.04-.008-.08-.018-.119-.027-.082-.019-.162-.038-.246-.048l-.056-.005-.607-1.346-.727.074-.323 1.441-.054.018c-.063.02-.121.047-.18.074-.037.017-.073.034-.111.049l-.052.022-1.2-.89-.599.42.426 1.429-.038.042a4.07 4.07 0 0 0-.244.284l-.034.045-1.476-.167-.307.663 1.086 1.024-.034.151c-.02.089-.041.177-.052.269l-.007.056-1.358.593.066.728 1.431.337.017.055c.024.077.058.148.091.22.021.043.041.086.059.131l.022.052-.885 1.203.422.598 1.426-.432.042.038c.083.075.179.163.282.24l.045.035-.163 1.476.664.306 1.024-1.087zM20.918 22.972a1.35 1.35 0 1 1 .001-2.699 1.35 1.35 0 0 1-.001 2.699zm0-2.5c-.634 0-1.15.517-1.15 1.15s.517 1.15 1.15 1.15 1.15-.517 1.15-1.15-.516-1.15-1.15-1.15z"/><path class="icon-f12-hover-bg" d="M24.901 22.028v-.812l-1.269-.423a2.747 2.747 0 0 0-.21-.505l.599-1.196-.574-.574-1.196.599a2.81 2.81 0 0 0-.505-.209l-.423-1.268h-.811l-.423 1.268a2.81 2.81 0 0 0-.505.209l-1.197-.599-.573.574.599 1.196a2.747 2.747 0 0 0-.21.505l-1.268.423v.812l1.268.422c.054.175.124.345.21.506l-.599 1.196.573.574 1.197-.6c.161.087.331.157.505.21l.423 1.269h.811l.423-1.269c.174-.053.343-.123.505-.21l1.196.6.574-.574-.599-1.196c.086-.161.156-.331.21-.506l1.269-.422zm-3.983.943c-.744 0-1.35-.606-1.35-1.35 0-.744.605-1.35 1.35-1.35.744 0 1.35.605 1.35 1.35 0 .745-.606 1.35-1.35 1.35z"/><path class="icon-f12-ltgrey-disabled" d="M21.323 25.604h-.811l-.423-1.269a2.814 2.814 0 0 1-.505-.209l-1.197.599-.573-.574.599-1.196a2.747 2.747 0 0 1-.21-.505l-1.269-.423v-.812l1.269-.422c.054-.175.124-.345.21-.506l-.599-1.196.573-.573 1.197.599c.161-.087.331-.157.505-.21l.423-1.269h.811l.423 1.269c.174.053.344.123.505.21l1.196-.599.574.573-.599 1.196c.086.161.156.331.21.506l1.269.422v.812l-1.269.423a2.747 2.747 0 0 1-.21.505l.599 1.196-.574.574-1.196-.599a2.814 2.814 0 0 1-.505.209l-.423 1.269zm-.666-.199h.521l.411-1.232.051-.015c.193-.054.382-.132.56-.231l.046-.026 1.162.581.369-.369-.58-1.162.026-.046c.099-.178.177-.366.232-.56l.014-.051 1.232-.411v-.523l-1.232-.41-.014-.051a2.81 2.81 0 0 0-.232-.561l-.026-.046.58-1.162-.369-.368-1.162.58-.046-.026a2.627 2.627 0 0 0-.56-.232l-.05-.014-.411-1.232h-.521l-.411 1.232-.051.014a2.758 2.758 0 0 0-.56.232l-.046.026-1.163-.58-.368.368.58 1.162-.026.046a2.675 2.675 0 0 0-.232.561l-.014.051-1.232.41v.522l1.232.411.014.051c.056.193.134.382.232.56l.026.046-.58 1.162.368.369 1.163-.581.046.026c.178.1.366.178.56.231l.051.015.41 1.233z"/></g><g id="colorImportance"><path class="icon-white" d="M31.66 24.063C31.312 25.116 30.661 27 28.413 27H27v1.313c0 .905-.335 2.537-2.965 3.298-.904.261-1.694.389-2.531.389-.83 0-1.63-.128-2.526-.392C17.061 31.045 16 29.844 16 28.313V27h-1.232c-1.699 0-2.944-1.141-3.416-3.11-.469-1.946-.469-3.021 0-4.967.451-1.881 1.96-2.923 3.845-2.923H16v-1.697c0-2.005.866-2.845 3.087-3.238.727-.128 1.506-.065 2.327-.065h.003c.921 0 1.703-.07 2.504.064 1.818.302 3.079 1.585 3.079 3.239V16h1.413c1.142 0 2.636.356 3.27 2.912.515 2.072.509 3.558-.023 5.151z"/><linearGradient id="path1948_1_" gradientUnits="userSpaceOnUse" x1="522.32" y1="-288.668" x2="541.017" y2="-304.754" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#5a9fd4"/><stop offset="1" stop-color="#306998"/></linearGradient><path id="path1948_5_" class="st1" d="M21.419 11.725c-.786.004-1.537.071-2.197.188-1.946.344-2.299 1.063-2.299 2.39v1.753h4.598v.584h-6.324c-1.336 0-2.507.803-2.873 2.331-.422 1.751-.441 2.844 0 4.673.327 1.361 1.108 2.331 2.444 2.331h1.581v-2.101c0-1.518 1.313-2.857 2.873-2.857h4.593c1.278 0 2.299-1.053 2.299-2.337v-4.379c0-1.246-1.051-2.182-2.299-2.39-.79-.13-1.61-.189-2.396-.186zm-2.487 1.41c.475 0 .863.394.863.879a.87.87 0 0 1-.863.874.868.868 0 0 1-.863-.874c0-.485.387-.879.863-.879z"/><linearGradient id="path1950_1_" gradientUnits="userSpaceOnUse" x1="548.245" y1="-314.489" x2="541.569" y2="-305.043" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#ffd43b"/><stop offset="1" stop-color="#ffe873"/></linearGradient><path id="path1950_5_" class="st2" d="M26.687 16.64v2.042c0 1.583-1.342 2.915-2.873 2.915h-4.593c-1.258 0-2.299 1.077-2.299 2.337v4.379c0 1.246 1.084 1.979 2.299 2.337 1.456.428 2.851.505 4.593 0 1.158-.335 2.299-1.01 2.299-2.337V26.56H21.52v-.584H28.412c1.336 0 1.834-.932 2.299-2.331.48-1.44.46-2.826 0-4.673-.33-1.33-.961-2.331-2.299-2.331h-1.725zm-2.583 11.089c.477 0 .863.391.863.874a.871.871 0 0 1-.863.879.872.872 0 0 1-.863-.879c0-.484.388-.874.863-.874z"/></g></svg> \ No newline at end of file
diff --git a/PC/icons/python.icns b/PC/icons/python.icns
deleted file mode 100644
index fc53e02..0000000
--- a/PC/icons/python.icns
+++ /dev/null
Binary files differ
diff --git a/PC/icons/python.ico b/PC/icons/python.ico
deleted file mode 100644
index b8a38ef..0000000
--- a/PC/icons/python.ico
+++ /dev/null
Binary files differ
diff --git a/PC/icons/python.svg b/PC/icons/python.svg
deleted file mode 100644
index e23e5a3..0000000
--- a/PC/icons/python.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><style>.icon-canvas-transparent{opacity:0;fill:#f6f6f6}.icon-white{fill:#fff}.icon-vso-bg{fill:#656565}.icon-visualstudio-online{fill:#007acc}.icon-vs-bg{fill:#424242}.icon-vs-green{fill:#393}.st0{fill:url(#path1948_1_)}.st1{fill:url(#path1950_1_)}</style><path class="icon-canvas-transparent" d="M32 32H0V0h32v32z" id="canvas"/><g id="iconBg"><path class="icon-visualstudio-online" d="M30 4H2V2h28v2z"/><path class="icon-vso-bg" d="M29 4v21H3V4H2v22h28V4z"/><path class="icon-vs-bg" d="M10 4H3v21h26V4z"/></g><g id="iconFg"><path class="icon-white" d="M29.141 3l.429.429-.14.142-.43-.43-.43.43-.14-.142.429-.429-.429-.429.141-.142.429.43.43-.43.141.142-.43.429zM27.6 2.4h-1.2v1.2h1.2V2.4zm-1 .2h.8v.8h-.8v-.8zm-1.139.8h-1v.2h1v-.2z"/><path class="icon-vs-green" d="M16 14H5v-1h11.031c-.014.044-.031 1-.031 1zm-4-5H5v1h7V9zm-7 8v1h8v-1H5z"/></g><g id="colorImportance"><path class="icon-white" d="M31.596 24.063C31.246 25.116 30.595 27 28.349 27H27v1.313c0 .905-.368 2.537-2.996 3.298-.904.261-1.728.389-2.566.389-.83 0-1.597-.128-2.492-.392C17.029 31.045 16 29.844 16 28.313V27h-1.297c-1.698 0-2.943-1.141-3.416-3.11-.469-1.946-.469-3.021 0-4.967.451-1.881 1.96-2.923 3.845-2.923H16v-1.697c0-2.005.834-2.845 3.054-3.238.728-.128 1.474-.065 2.296-.065h.003c.921 0 1.735-.07 2.537.064 1.816.303 3.11 1.585 3.11 3.24V16h1.349c1.142 0 2.636.356 3.27 2.912.515 2.072.509 3.558-.023 5.151z"/><linearGradient id="path1948_1_" gradientUnits="userSpaceOnUse" x1="522.205" y1="-288.668" x2="540.902" y2="-304.754" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#5a9fd4"/><stop offset="1" stop-color="#306998"/></linearGradient><path id="path1948_3_" class="st0" d="M21.354 11.725c-.786.004-1.537.071-2.197.188-1.946.344-2.299 1.063-2.299 2.39v1.753h4.598v.584h-6.324c-1.336 0-2.507.803-2.873 2.331-.422 1.751-.441 2.844 0 4.673.327 1.361 1.107 2.331 2.444 2.331h1.581v-2.101c0-1.518 1.313-2.857 2.873-2.857h4.593c1.279 0 2.299-1.053 2.299-2.337v-4.379c0-1.246-1.051-2.182-2.299-2.39-.79-.13-1.61-.189-2.396-.186zm-2.486 1.41c.475 0 .863.394.863.879a.87.87 0 0 1-.863.874.868.868 0 0 1-.863-.874c0-.485.386-.879.863-.879z"/><linearGradient id="path1950_1_" gradientUnits="userSpaceOnUse" x1="548.13" y1="-314.489" x2="541.454" y2="-305.043" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#ffd43b"/><stop offset="1" stop-color="#ffe873"/></linearGradient><path id="path1950_3_" class="st1" d="M26.623 16.64v2.042c0 1.583-1.342 2.915-2.873 2.915h-4.593c-1.258 0-2.299 1.077-2.299 2.337v4.379c0 1.246 1.084 1.979 2.299 2.337 1.456.428 2.851.505 4.593 0 1.158-.335 2.299-1.01 2.299-2.337V26.56h-4.593v-.584h6.892c1.336 0 1.834-.932 2.299-2.331.48-1.44.46-2.826 0-4.673-.33-1.33-.961-2.331-2.299-2.331h-1.725zm-2.584 11.089c.477 0 .863.391.863.874a.871.871 0 0 1-.863.879.872.872 0 0 1-.863-.879.87.87 0 0 1 .863-.874z"/></g></svg> \ No newline at end of file
diff --git a/PC/icons/pythonw.icns b/PC/icons/pythonw.icns
deleted file mode 100644
index 9354cf8..0000000
--- a/PC/icons/pythonw.icns
+++ /dev/null
Binary files differ
diff --git a/PC/icons/pythonw.ico b/PC/icons/pythonw.ico
deleted file mode 100644
index 6195d43..0000000
--- a/PC/icons/pythonw.ico
+++ /dev/null
Binary files differ
diff --git a/PC/icons/pythonw.svg b/PC/icons/pythonw.svg
deleted file mode 100644
index 7cb2607..0000000
--- a/PC/icons/pythonw.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><style>.icon-canvas-transparent{opacity:0;fill:#f6f6f6}.icon-white{fill:#fff}.icon-visualstudio-online{fill:#007acc}.graph-lightgrey{fill:#dfdfdf}.st0{fill:#f6f6f6}.st1{fill:#656565}.st2{fill:#bfbfbf}.st3{fill:#fff}.st4{fill:url(#path1948_1_)}.st5{fill:url(#path1950_1_)}</style><path class="icon-canvas-transparent" d="M32 32H0V0h32v32z" id="canvas"/><g id="iconBg"><path class="graph-lightgrey" d="M29 7H3V5h26v2z"/><path class="icon-visualstudio-online" d="M30 5H2V3h28v2z"/><path class="icon-white" d="M29.141 4l.429.429-.14.142-.43-.43-.43.43-.14-.142.429-.429-.429-.429.141-.142.429.43.43-.43.141.142-.43.429zM27.6 3.4h-1.2v1.2h1.2V3.4zm-1 .2h.8v.8h-.8v-.8zm-1.139.8h-1v.2h1v-.2z"/><path class="st0" d="M3 7h26v19H3z"/><path class="st1" d="M29 5v21H3V5H2v22h28V5z"/><path class="st1" d="M4 5.75h2v.5H4z"/></g><path class="st2" d="M12 11H5v-1h7v1zm-7 7v1h11v-1H5zm0-4v1h11v-1H5z" id="iconFg"/><g id="colorImportance"><path class="st3" d="M31.618 18.912C30.984 16.356 29.49 16 28.349 16H27v-1.697c0-1.654-1.294-2.937-3.11-3.24-.802-.133-1.617-.063-2.537-.063h-.003c-.821 0-1.568-.063-2.295.065-2.221.393-3.055 1.233-3.055 3.238V16h-.868c-1.885 0-3.394 1.042-3.845 2.924-.469 1.946-.469 3.022 0 4.967C11.76 25.859 13.005 27 14.703 27H16v1.313c0 1.531 1.029 2.732 2.946 3.296.896.263 1.662.391 2.492.391.838 0 1.661-.128 2.565-.39C26.632 30.85 27 29.218 27 28.313V27h1.349c2.246 0 2.897-1.884 3.247-2.937.532-1.592.538-3.079.022-5.151z"/><linearGradient id="path1948_1_" gradientUnits="userSpaceOnUse" x1="522.205" y1="-288.668" x2="540.902" y2="-304.754" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#5a9fd4"/><stop offset="1" stop-color="#306998"/></linearGradient><path id="path1948_6_" class="st4" d="M21.354 11.725c-.786.004-1.537.071-2.197.188-1.946.344-2.299 1.063-2.299 2.39v1.753h4.598v.584h-6.324c-1.336 0-2.507.803-2.873 2.331-.422 1.751-.441 2.844 0 4.673.327 1.361 1.107 2.331 2.444 2.331h1.581v-2.101c0-1.518 1.313-2.857 2.873-2.857h4.593c1.278 0 2.299-1.053 2.299-2.337v-4.379c0-1.246-1.051-2.182-2.299-2.39-.79-.13-1.61-.189-2.396-.186zm-2.486 1.41c.475 0 .863.394.863.879a.87.87 0 0 1-.863.874.868.868 0 0 1-.863-.874c0-.485.386-.879.863-.879z"/><linearGradient id="path1950_1_" gradientUnits="userSpaceOnUse" x1="548.13" y1="-314.489" x2="541.454" y2="-305.043" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#ffd43b"/><stop offset="1" stop-color="#ffe873"/></linearGradient><path id="path1950_6_" class="st5" d="M26.623 16.64v2.042c0 1.583-1.342 2.915-2.873 2.915h-4.593c-1.258 0-2.299 1.077-2.299 2.337v4.379c0 1.246 1.084 1.979 2.299 2.337 1.456.428 2.851.505 4.593 0 1.158-.335 2.299-1.01 2.299-2.337V26.56h-4.593v-.584h6.892c1.336 0 1.834-.932 2.299-2.331.48-1.44.46-2.826 0-4.673-.33-1.33-.961-2.331-2.299-2.331h-1.725zm-2.584 11.089c.477 0 .863.391.863.874a.871.871 0 0 1-.863.879.872.872 0 0 1-.863-.879.87.87 0 0 1 .863-.874z"/></g></svg> \ No newline at end of file
diff --git a/PC/icons/pythonwx150.png b/PC/icons/pythonwx150.png
deleted file mode 100644
index 4c3eb31..0000000
--- a/PC/icons/pythonwx150.png
+++ /dev/null
Binary files differ
diff --git a/PC/icons/pythonwx44.png b/PC/icons/pythonwx44.png
deleted file mode 100644
index e3b32a8..0000000
--- a/PC/icons/pythonwx44.png
+++ /dev/null
Binary files differ
diff --git a/PC/icons/pythonx150.png b/PC/icons/pythonx150.png
deleted file mode 100644
index 5f8d304..0000000
--- a/PC/icons/pythonx150.png
+++ /dev/null
Binary files differ
diff --git a/PC/icons/pythonx44.png b/PC/icons/pythonx44.png
deleted file mode 100644
index 3881daa..0000000
--- a/PC/icons/pythonx44.png
+++ /dev/null
Binary files differ
diff --git a/PC/icons/pythonx50.png b/PC/icons/pythonx50.png
deleted file mode 100644
index 7cc3aec..0000000
--- a/PC/icons/pythonx50.png
+++ /dev/null
Binary files differ
diff --git a/PC/icons/setup.icns b/PC/icons/setup.icns
deleted file mode 100644
index 6f0e6b0..0000000
--- a/PC/icons/setup.icns
+++ /dev/null
Binary files differ
diff --git a/PC/icons/setup.ico b/PC/icons/setup.ico
deleted file mode 100644
index e54364b..0000000
--- a/PC/icons/setup.ico
+++ /dev/null
Binary files differ
diff --git a/PC/icons/setup.svg b/PC/icons/setup.svg
deleted file mode 100644
index 0613856..0000000
--- a/PC/icons/setup.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><style>.icon-canvas-transparent{opacity:0;fill:#f6f6f6}.icon-visualstudio-online{fill:#007acc}.icon-disabled-grey{fill:#848484}.icon-white{fill:#fff}.st0{fill:#f0eff1}.st1{fill:#424242}.st2{fill:url(#path1948_1_)}.st3{fill:url(#path1950_1_)}</style><path class="icon-canvas-transparent" d="M32 32H0V0h32v32z" id="canvas"/><g id="iconBg"><path class="st0" d="M18 8v10H1V8h17zm-1.191 15.572a1.004 1.004 0 0 0-.903-.572H2.907c-.385 0-.74.225-.903.572L.886 25.928A.748.748 0 0 0 1.563 27H17.25a.748.748 0 0 0 .677-1.072l-1.118-2.356z"/><path class="icon-disabled-grey" d="M17.927 25.929l-1.118-2.356a1.003 1.003 0 0 0-.903-.573H2.907c-.385 0-.74.225-.903.572L.886 25.928A.748.748 0 0 0 1.563 27H17.25a.747.747 0 0 0 .633-.349.746.746 0 0 0 .044-.722zM1.959 26l.949-2h12.998l.949 2H1.959zM6 22v-1h3v-2h1v2h3v1H6z"/><path class="st1" d="M0 7v12h19V7H0zm18 11H1V8h17v10z"/></g><g id="iconFg"><path class="icon-white" d="M12 6V0H7v6H2.755L9.5 13.495 16.245 6z"/><path class="icon-visualstudio-online" d="M8 4h3v3h3l-4.5 5L5 7h3V4zm3-2H8v1h3V2zm0-2H8v1h3V0z"/></g><g id="colorImportance"><path class="icon-white" d="M31.596 24.063C31.246 25.116 30.595 27 28.349 27H27v1.313c0 .905-.368 2.537-2.997 3.298-.903.261-1.727.389-2.565.389-.83 0-1.597-.128-2.493-.392C17.029 31.045 16 29.844 16 28.313V27h-1.296c-1.698 0-2.944-1.141-3.417-3.11-.469-1.944-.469-3.02 0-4.967.451-1.881 1.961-2.923 3.845-2.923H16v-1.697c0-2.005.834-2.845 3.054-3.238.728-.128 1.474-.065 2.296-.065h.003c.921 0 1.735-.07 2.537.064 1.816.303 3.11 1.585 3.11 3.24V16h1.349c1.142 0 2.636.356 3.27 2.912.515 2.072.509 3.559-.023 5.151z"/><linearGradient id="path1948_1_" gradientUnits="userSpaceOnUse" x1="522.205" y1="-288.668" x2="540.902" y2="-304.754" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#5a9fd4"/><stop offset="1" stop-color="#306998"/></linearGradient><path id="path1948_9_" class="st2" d="M21.354 11.725c-.786.004-1.537.071-2.197.188-1.946.344-2.299 1.063-2.299 2.39v1.753h4.598v.584h-6.324c-1.336 0-2.507.803-2.873 2.331-.422 1.751-.441 2.844 0 4.673.327 1.361 1.108 2.331 2.444 2.331h1.581v-2.101c0-1.518 1.313-2.857 2.873-2.857h4.593c1.279 0 2.299-1.053 2.299-2.337v-4.379c0-1.246-1.051-2.182-2.299-2.39-.79-.13-1.61-.189-2.396-.186zm-2.486 1.41c.475 0 .863.394.863.879a.87.87 0 0 1-.863.874.868.868 0 0 1-.863-.874c0-.485.386-.879.863-.879z"/><linearGradient id="path1950_1_" gradientUnits="userSpaceOnUse" x1="548.13" y1="-314.489" x2="541.454" y2="-305.043" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#ffd43b"/><stop offset="1" stop-color="#ffe873"/></linearGradient><path id="path1950_9_" class="st3" d="M26.623 16.64v2.042c0 1.583-1.342 2.915-2.873 2.915h-4.593c-1.258 0-2.299 1.077-2.299 2.337v4.379c0 1.246 1.084 1.979 2.299 2.337 1.456.428 2.851.505 4.593 0 1.158-.335 2.299-1.01 2.299-2.337V26.56h-4.593v-.584H28.348c1.336 0 1.834-.932 2.299-2.331.48-1.44.46-2.826 0-4.673-.33-1.33-.961-2.331-2.299-2.331h-1.725zm-2.584 11.089c.477 0 .863.391.863.874a.871.871 0 0 1-.863.879.872.872 0 0 1-.863-.879.87.87 0 0 1 .863-.874z"/></g></svg> \ No newline at end of file
diff --git a/PC/import_nt.c b/PC/import_nt.c
new file mode 100644
index 0000000..196a774
--- /dev/null
+++ b/PC/import_nt.c
@@ -0,0 +1,86 @@
+/********************************************************************
+
+ import_nt.c
+
+ Win32 specific import code.
+
+*/
+
+#include "Python.h"
+#include "osdefs.h"
+#include <windows.h>
+#include "importdl.h"
+#include "malloc.h" /* for alloca */
+
+/* a string loaded from the DLL at startup */
+extern const char *PyWin_DLLVersionString;
+
+FILE *PyWin_FindRegisteredModule(const char *moduleName,
+ struct filedescr **ppFileDesc,
+ char *pathBuf,
+ Py_ssize_t pathLen)
+{
+ char *moduleKey;
+ const char keyPrefix[] = "Software\\Python\\PythonCore\\";
+ const char keySuffix[] = "\\Modules\\";
+#ifdef _DEBUG
+ /* In debugging builds, we _must_ have the debug version
+ * registered.
+ */
+ const char debugString[] = "\\Debug";
+#else
+ const char debugString[] = "";
+#endif
+ struct filedescr *fdp = NULL;
+ FILE *fp;
+ HKEY keyBase = HKEY_CURRENT_USER;
+ int modNameSize;
+ long regStat;
+
+ /* Calculate the size for the sprintf buffer.
+ * Get the size of the chars only, plus 1 NULL.
+ */
+ size_t bufSize = sizeof(keyPrefix)-1 +
+ strlen(PyWin_DLLVersionString) +
+ sizeof(keySuffix) +
+ strlen(moduleName) +
+ sizeof(debugString) - 1;
+ /* alloca == no free required, but memory only local to fn,
+ * also no heap fragmentation!
+ */
+ moduleKey = alloca(bufSize);
+ PyOS_snprintf(moduleKey, bufSize,
+ "Software\\Python\\PythonCore\\%s\\Modules\\%s%s",
+ PyWin_DLLVersionString, moduleName, debugString);
+
+ assert(pathLen < INT_MAX);
+ modNameSize = (int)pathLen;
+ regStat = RegQueryValue(keyBase, moduleKey, pathBuf, &modNameSize);
+ if (regStat != ERROR_SUCCESS) {
+ /* No user setting - lookup in machine settings */
+ keyBase = HKEY_LOCAL_MACHINE;
+ /* be anal - failure may have reset size param */
+ modNameSize = (int)pathLen;
+ regStat = RegQueryValue(keyBase, moduleKey,
+ pathBuf, &modNameSize);
+
+ if (regStat != ERROR_SUCCESS)
+ return NULL;
+ }
+ /* use the file extension to locate the type entry. */
+ for (fdp = _PyImport_Filetab; fdp->suffix != NULL; fdp++) {
+ size_t extLen = strlen(fdp->suffix);
+ assert(modNameSize >= 0); /* else cast to size_t is wrong */
+ if ((size_t)modNameSize > extLen &&
+ strnicmp(pathBuf + ((size_t)modNameSize-extLen-1),
+ fdp->suffix,
+ extLen) == 0)
+ break;
+ }
+ if (fdp->suffix == NULL)
+ return NULL;
+ fp = fopen(pathBuf, fdp->mode);
+ if (fp != NULL)
+ *ppFileDesc = fdp;
+ return fp;
+}
diff --git a/PC/invalid_parameter_handler.c b/PC/invalid_parameter_handler.c
deleted file mode 100644
index d634710..0000000
--- a/PC/invalid_parameter_handler.c
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifdef _MSC_VER
-
-#include <stdlib.h>
-
-#if _MSC_VER >= 1900
-/* pyconfig.h uses this function in the _Py_BEGIN/END_SUPPRESS_IPH
- * macros. It does not need to be defined when building using MSVC
- * earlier than 14.0 (_MSC_VER == 1900).
- */
-
-static void __cdecl _silent_invalid_parameter_handler(
- wchar_t const* expression,
- wchar_t const* function,
- wchar_t const* file,
- unsigned int line,
- uintptr_t pReserved) { }
-
-_invalid_parameter_handler _Py_silent_invalid_parameter_handler = _silent_invalid_parameter_handler;
-
-#endif
-
-#endif
diff --git a/PC/launcher.c b/PC/launcher.c
deleted file mode 100644
index 2749a4e..0000000
--- a/PC/launcher.c
+++ /dev/null
@@ -1,2003 +0,0 @@
-/*
- * Copyright (C) 2011-2013 Vinay Sajip.
- * Licensed to PSF under a contributor agreement.
- *
- * Based on the work of:
- *
- * Mark Hammond (original author of Python version)
- * Curt Hagenlocher (job management)
- */
-
-#include <windows.h>
-#include <shlobj.h>
-#include <stdio.h>
-#include <tchar.h>
-
-#define BUFSIZE 256
-#define MSGSIZE 1024
-
-/* Build options. */
-#define SKIP_PREFIX
-#define SEARCH_PATH
-
-/* Error codes */
-
-#define RC_NO_STD_HANDLES 100
-#define RC_CREATE_PROCESS 101
-#define RC_BAD_VIRTUAL_PATH 102
-#define RC_NO_PYTHON 103
-#define RC_NO_MEMORY 104
-/*
- * SCRIPT_WRAPPER is used to choose one of the variants of an executable built
- * from this source file. If not defined, the PEP 397 Python launcher is built;
- * if defined, a script launcher of the type used by setuptools is built, which
- * looks for a script name related to the executable name and runs that script
- * with the appropriate Python interpreter.
- *
- * SCRIPT_WRAPPER should be undefined in the source, and defined in a VS project
- * which builds the setuptools-style launcher.
- */
-#if defined(SCRIPT_WRAPPER)
-#define RC_NO_SCRIPT 105
-#endif
-/*
- * VENV_REDIRECT is used to choose the variant that looks for an adjacent or
- * one-level-higher pyvenv.cfg, and uses its "home" property to locate and
- * launch the original python.exe.
- */
-#if defined(VENV_REDIRECT)
-#define RC_NO_VENV_CFG 106
-#define RC_BAD_VENV_CFG 107
-#endif
-
-/* Just for now - static definition */
-
-static FILE * log_fp = NULL;
-
-static wchar_t *
-skip_whitespace(wchar_t * p)
-{
- while (*p && isspace(*p))
- ++p;
- return p;
-}
-
-static void
-debug(wchar_t * format, ...)
-{
- va_list va;
-
- if (log_fp != NULL) {
- va_start(va, format);
- vfwprintf_s(log_fp, format, va);
- va_end(va);
- }
-}
-
-static void
-winerror(int rc, wchar_t * message, int size)
-{
- FormatMessageW(
- FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL, rc, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- message, size, NULL);
-}
-
-static void
-error(int rc, wchar_t * format, ... )
-{
- va_list va;
- wchar_t message[MSGSIZE];
- wchar_t win_message[MSGSIZE];
- int len;
-
- va_start(va, format);
- len = _vsnwprintf_s(message, MSGSIZE, _TRUNCATE, format, va);
- va_end(va);
-
- if (rc == 0) { /* a Windows error */
- winerror(GetLastError(), win_message, MSGSIZE);
- if (len >= 0) {
- _snwprintf_s(&message[len], MSGSIZE - len, _TRUNCATE, L": %ls",
- win_message);
- }
- }
-
-#if !defined(_WINDOWS)
- fwprintf(stderr, L"%ls\n", message);
-#else
- MessageBoxW(NULL, message, L"Python Launcher is sorry to say ...",
- MB_OK);
-#endif
- exit(rc);
-}
-
-/*
- * This function is here to simplify memory management
- * and to treat blank values as if they are absent.
- */
-static wchar_t * get_env(wchar_t * key)
-{
- /* This is not thread-safe, just like getenv */
- static wchar_t buf[BUFSIZE];
- DWORD result = GetEnvironmentVariableW(key, buf, BUFSIZE);
-
- if (result >= BUFSIZE) {
- /* Large environment variable. Accept some leakage */
- wchar_t *buf2 = (wchar_t*)malloc(sizeof(wchar_t) * (result+1));
- if (buf2 == NULL) {
- error(RC_NO_MEMORY, L"Could not allocate environment buffer");
- }
- GetEnvironmentVariableW(key, buf2, result);
- return buf2;
- }
-
- if (result == 0)
- /* Either some error, e.g. ERROR_ENVVAR_NOT_FOUND,
- or an empty environment variable. */
- return NULL;
-
- return buf;
-}
-
-#if defined(_DEBUG)
-/* Do not define EXECUTABLEPATH_VALUE in debug builds as it'll
- never point to the debug build. */
-#if defined(_WINDOWS)
-
-#define PYTHON_EXECUTABLE L"pythonw_d.exe"
-
-#else
-
-#define PYTHON_EXECUTABLE L"python_d.exe"
-
-#endif
-#else
-#if defined(_WINDOWS)
-
-#define PYTHON_EXECUTABLE L"pythonw.exe"
-#define EXECUTABLEPATH_VALUE L"WindowedExecutablePath"
-
-#else
-
-#define PYTHON_EXECUTABLE L"python.exe"
-#define EXECUTABLEPATH_VALUE L"ExecutablePath"
-
-#endif
-#endif
-
-#define MAX_VERSION_SIZE 8
-
-typedef struct {
- wchar_t version[MAX_VERSION_SIZE]; /* m.n */
- int bits; /* 32 or 64 */
- wchar_t executable[MAX_PATH];
- wchar_t exe_display[MAX_PATH];
-} INSTALLED_PYTHON;
-
-/*
- * To avoid messing about with heap allocations, just assume we can allocate
- * statically and never have to deal with more versions than this.
- */
-#define MAX_INSTALLED_PYTHONS 100
-
-static INSTALLED_PYTHON installed_pythons[MAX_INSTALLED_PYTHONS];
-
-static size_t num_installed_pythons = 0;
-
-/*
- * To hold SOFTWARE\Python\PythonCore\X.Y...\InstallPath
- * The version name can be longer than MAX_VERSION_SIZE, but will be
- * truncated to just X.Y for comparisons.
- */
-#define IP_BASE_SIZE 80
-#define IP_VERSION_SIZE 8
-#define IP_SIZE (IP_BASE_SIZE + IP_VERSION_SIZE)
-#define CORE_PATH L"SOFTWARE\\Python\\PythonCore"
-/*
- * Installations from the Microsoft Store will set the same registry keys,
- * but because of a limitation in Windows they cannot be enumerated normally
- * (unless you have no other Python installations... which is probably false
- * because that's the most likely way to get this launcher!)
- * This key is under HKEY_LOCAL_MACHINE
- */
-#define LOOKASIDE_PATH L"SOFTWARE\\Microsoft\\AppModel\\Lookaside\\user\\Software\\Python\\PythonCore"
-
-static wchar_t * location_checks[] = {
- L"\\",
- L"\\PCbuild\\win32\\",
- L"\\PCbuild\\amd64\\",
- /* To support early 32bit versions of Python that stuck the build binaries
- * directly in PCbuild... */
- L"\\PCbuild\\",
- NULL
-};
-
-static INSTALLED_PYTHON *
-find_existing_python(const wchar_t * path)
-{
- INSTALLED_PYTHON * result = NULL;
- size_t i;
- INSTALLED_PYTHON * ip;
-
- for (i = 0, ip = installed_pythons; i < num_installed_pythons; i++, ip++) {
- if (_wcsicmp(path, ip->executable) == 0) {
- result = ip;
- break;
- }
- }
- return result;
-}
-
-static INSTALLED_PYTHON *
-find_existing_python2(int bits, const wchar_t * version)
-{
- INSTALLED_PYTHON * result = NULL;
- size_t i;
- INSTALLED_PYTHON * ip;
-
- for (i = 0, ip = installed_pythons; i < num_installed_pythons; i++, ip++) {
- if (bits == ip->bits && _wcsicmp(version, ip->version) == 0) {
- result = ip;
- break;
- }
- }
- return result;
-}
-
-static void
-_locate_pythons_for_key(HKEY root, LPCWSTR subkey, REGSAM flags, int bits,
- int display_name_only)
-{
- HKEY core_root, ip_key;
- LSTATUS status = RegOpenKeyExW(root, subkey, 0, flags, &core_root);
- wchar_t message[MSGSIZE];
- DWORD i;
- size_t n;
- BOOL ok, append_name;
- DWORD type, data_size, attrs;
- INSTALLED_PYTHON * ip, * pip;
- wchar_t ip_version[IP_VERSION_SIZE];
- wchar_t ip_path[IP_SIZE];
- wchar_t * check;
- wchar_t ** checkp;
- wchar_t *key_name = (root == HKEY_LOCAL_MACHINE) ? L"HKLM" : L"HKCU";
-
- if (status != ERROR_SUCCESS)
- debug(L"locate_pythons_for_key: unable to open PythonCore key in %ls\n",
- key_name);
- else {
- ip = &installed_pythons[num_installed_pythons];
- for (i = 0; num_installed_pythons < MAX_INSTALLED_PYTHONS; i++) {
- status = RegEnumKeyW(core_root, i, ip_version, IP_VERSION_SIZE);
- if (status != ERROR_SUCCESS) {
- if (status != ERROR_NO_MORE_ITEMS) {
- /* unexpected error */
- winerror(status, message, MSGSIZE);
- debug(L"Can't enumerate registry key for version %ls: %ls\n",
- ip_version, message);
- }
- break;
- }
- else {
- wcsncpy_s(ip->version, MAX_VERSION_SIZE, ip_version,
- MAX_VERSION_SIZE-1);
- /* Still treating version as "x.y" rather than sys.winver
- * When PEP 514 tags are properly used, we shouldn't need
- * to strip this off here.
- */
- check = wcsrchr(ip->version, L'-');
- if (check && !wcscmp(check, L"-32")) {
- *check = L'\0';
- }
- _snwprintf_s(ip_path, IP_SIZE, _TRUNCATE,
- L"%ls\\%ls\\InstallPath", subkey, ip_version);
- status = RegOpenKeyExW(root, ip_path, 0, flags, &ip_key);
- if (status != ERROR_SUCCESS) {
- winerror(status, message, MSGSIZE);
- /* Note: 'message' already has a trailing \n*/
- debug(L"%ls\\%ls: %ls", key_name, ip_path, message);
- continue;
- }
- data_size = sizeof(ip->executable) - 1;
- append_name = FALSE;
-#ifdef EXECUTABLEPATH_VALUE
- status = RegQueryValueExW(ip_key, EXECUTABLEPATH_VALUE, NULL, &type,
- (LPBYTE)ip->executable, &data_size);
-#else
- status = ERROR_FILE_NOT_FOUND; /* actual error doesn't matter */
-#endif
- if (status != ERROR_SUCCESS || type != REG_SZ || !data_size) {
- append_name = TRUE;
- data_size = sizeof(ip->executable) - 1;
- status = RegQueryValueExW(ip_key, NULL, NULL, &type,
- (LPBYTE)ip->executable, &data_size);
- if (status != ERROR_SUCCESS) {
- winerror(status, message, MSGSIZE);
- debug(L"%ls\\%ls: %ls\n", key_name, ip_path, message);
- RegCloseKey(ip_key);
- continue;
- }
- }
- RegCloseKey(ip_key);
- if (type != REG_SZ) {
- continue;
- }
-
- data_size = data_size / sizeof(wchar_t) - 1; /* for NUL */
- if (ip->executable[data_size - 1] == L'\\')
- --data_size; /* reg value ended in a backslash */
- /* ip->executable is data_size long */
- for (checkp = location_checks; *checkp; ++checkp) {
- check = *checkp;
- if (append_name) {
- _snwprintf_s(&ip->executable[data_size],
- MAX_PATH - data_size,
- MAX_PATH - data_size,
- L"%ls%ls", check, PYTHON_EXECUTABLE);
- }
- attrs = GetFileAttributesW(ip->executable);
- if (attrs == INVALID_FILE_ATTRIBUTES) {
- winerror(GetLastError(), message, MSGSIZE);
- debug(L"locate_pythons_for_key: %ls: %ls",
- ip->executable, message);
- }
- else if (attrs & FILE_ATTRIBUTE_DIRECTORY) {
- debug(L"locate_pythons_for_key: '%ls' is a directory\n",
- ip->executable, attrs);
- }
- else if (find_existing_python(ip->executable)) {
- debug(L"locate_pythons_for_key: %ls: already found\n",
- ip->executable);
- }
- else {
- /* check the executable type. */
- if (bits) {
- ip->bits = bits;
- } else {
- ok = GetBinaryTypeW(ip->executable, &attrs);
- if (!ok) {
- debug(L"Failure getting binary type: %ls\n",
- ip->executable);
- }
- else {
- if (attrs == SCS_64BIT_BINARY)
- ip->bits = 64;
- else if (attrs == SCS_32BIT_BINARY)
- ip->bits = 32;
- else
- ip->bits = 0;
- }
- }
- if (ip->bits == 0) {
- debug(L"locate_pythons_for_key: %ls: \
-invalid binary type: %X\n",
- ip->executable, attrs);
- }
- else {
- if (display_name_only) {
- /* display just the executable name. This is
- * primarily for the Store installs */
- const wchar_t *name = wcsrchr(ip->executable, L'\\');
- if (name) {
- wcscpy_s(ip->exe_display, MAX_PATH, name+1);
- }
- }
- if (wcschr(ip->executable, L' ') != NULL) {
- /* has spaces, so quote, and set original as
- * the display name */
- if (!ip->exe_display[0]) {
- wcscpy_s(ip->exe_display, MAX_PATH, ip->executable);
- }
- n = wcslen(ip->executable);
- memmove(&ip->executable[1],
- ip->executable, n * sizeof(wchar_t));
- ip->executable[0] = L'\"';
- ip->executable[n + 1] = L'\"';
- ip->executable[n + 2] = L'\0';
- }
- debug(L"locate_pythons_for_key: %ls \
-is a %dbit executable\n",
- ip->executable, ip->bits);
- if (find_existing_python2(ip->bits, ip->version)) {
- debug(L"locate_pythons_for_key: %ls-%i: already \
-found\n", ip->version, ip->bits);
- }
- else {
- ++num_installed_pythons;
- pip = ip++;
- if (num_installed_pythons >=
- MAX_INSTALLED_PYTHONS)
- break;
- }
- }
- }
- }
- }
- }
- RegCloseKey(core_root);
- }
-}
-
-static int
-compare_pythons(const void * p1, const void * p2)
-{
- INSTALLED_PYTHON * ip1 = (INSTALLED_PYTHON *) p1;
- INSTALLED_PYTHON * ip2 = (INSTALLED_PYTHON *) p2;
- /* note reverse sorting on version */
- int result = wcscmp(ip2->version, ip1->version);
-
- if (result == 0)
- result = ip2->bits - ip1->bits; /* 64 before 32 */
- return result;
-}
-
-static void
-locate_pythons_for_key(HKEY root, REGSAM flags)
-{
- _locate_pythons_for_key(root, CORE_PATH, flags, 0, FALSE);
-}
-
-static void
-locate_store_pythons()
-{
-#if defined(_M_X64)
- /* 64bit process, so look in native registry */
- _locate_pythons_for_key(HKEY_LOCAL_MACHINE, LOOKASIDE_PATH,
- KEY_READ, 64, TRUE);
-#else
- /* 32bit process, so check that we're on 64bit OS */
- BOOL f64 = FALSE;
- if (IsWow64Process(GetCurrentProcess(), &f64) && f64) {
- _locate_pythons_for_key(HKEY_LOCAL_MACHINE, LOOKASIDE_PATH,
- KEY_READ | KEY_WOW64_64KEY, 64, TRUE);
- }
-#endif
-}
-
-static void
-locate_venv_python()
-{
- static wchar_t venv_python[MAX_PATH];
- INSTALLED_PYTHON * ip;
- wchar_t *virtual_env = get_env(L"VIRTUAL_ENV");
- DWORD attrs;
-
- /* Check for VIRTUAL_ENV environment variable */
- if (virtual_env == NULL || virtual_env[0] == L'\0') {
- return;
- }
-
- /* Check for a python executable in the venv */
- debug(L"Checking for Python executable in virtual env '%ls'\n", virtual_env);
- _snwprintf_s(venv_python, MAX_PATH, _TRUNCATE,
- L"%ls\\Scripts\\%ls", virtual_env, PYTHON_EXECUTABLE);
- attrs = GetFileAttributesW(venv_python);
- if (attrs == INVALID_FILE_ATTRIBUTES) {
- debug(L"Python executable %ls missing from virtual env\n", venv_python);
- return;
- }
-
- ip = &installed_pythons[num_installed_pythons++];
- wcscpy_s(ip->executable, MAX_PATH, venv_python);
- ip->bits = 0;
- wcscpy_s(ip->version, MAX_VERSION_SIZE, L"venv");
-}
-
-static void
-locate_all_pythons()
-{
- /* venv Python is highest priority */
- locate_venv_python();
-#if defined(_M_X64)
- /* If we are a 64bit process, first hit the 32bit keys. */
- debug(L"locating Pythons in 32bit registry\n");
- locate_pythons_for_key(HKEY_CURRENT_USER, KEY_READ | KEY_WOW64_32KEY);
- locate_pythons_for_key(HKEY_LOCAL_MACHINE, KEY_READ | KEY_WOW64_32KEY);
-#else
- /* If we are a 32bit process on a 64bit Windows, first hit the 64bit keys.*/
- BOOL f64 = FALSE;
- if (IsWow64Process(GetCurrentProcess(), &f64) && f64) {
- debug(L"locating Pythons in 64bit registry\n");
- locate_pythons_for_key(HKEY_CURRENT_USER, KEY_READ | KEY_WOW64_64KEY);
- locate_pythons_for_key(HKEY_LOCAL_MACHINE, KEY_READ | KEY_WOW64_64KEY);
- }
-#endif
- /* now hit the "native" key for this process bittedness. */
- debug(L"locating Pythons in native registry\n");
- locate_pythons_for_key(HKEY_CURRENT_USER, KEY_READ);
- locate_pythons_for_key(HKEY_LOCAL_MACHINE, KEY_READ);
- /* Store-installed Python is lowest priority */
- locate_store_pythons();
- qsort(installed_pythons, num_installed_pythons, sizeof(INSTALLED_PYTHON),
- compare_pythons);
-}
-
-static INSTALLED_PYTHON *
-find_python_by_version(wchar_t const * wanted_ver)
-{
- INSTALLED_PYTHON * result = NULL;
- INSTALLED_PYTHON * ip = installed_pythons;
- size_t i, n;
- size_t wlen = wcslen(wanted_ver);
- int bits = 0;
-
- if (wcsstr(wanted_ver, L"-32")) {
- bits = 32;
- wlen -= wcslen(L"-32");
- }
- else if (wcsstr(wanted_ver, L"-64")) { /* Added option to select 64 bit explicitly */
- bits = 64;
- wlen -= wcslen(L"-64");
- }
- for (i = 0; i < num_installed_pythons; i++, ip++) {
- n = wcslen(ip->version);
- if (n > wlen)
- n = wlen;
- if ((wcsncmp(ip->version, wanted_ver, n) == 0) &&
- /* bits == 0 => don't care */
- ((bits == 0) || (ip->bits == bits))) {
- result = ip;
- break;
- }
- }
- return result;
-}
-
-
-static wchar_t appdata_ini_path[MAX_PATH];
-static wchar_t launcher_ini_path[MAX_PATH];
-
-/*
- * Get a value either from the environment or a configuration file.
- * The key passed in will either be "python", "python2" or "python3".
- */
-static wchar_t *
-get_configured_value(wchar_t * key)
-{
-/*
- * Note: this static value is used to return a configured value
- * obtained either from the environment or configuration file.
- * This should be OK since there wouldn't be any concurrent calls.
- */
- static wchar_t configured_value[MSGSIZE];
- wchar_t * result = NULL;
- wchar_t * found_in = L"environment";
- DWORD size;
-
- /* First, search the environment. */
- _snwprintf_s(configured_value, MSGSIZE, _TRUNCATE, L"py_%ls", key);
- result = get_env(configured_value);
- if (result == NULL && appdata_ini_path[0]) {
- /* Not in environment: check local configuration. */
- size = GetPrivateProfileStringW(L"defaults", key, NULL,
- configured_value, MSGSIZE,
- appdata_ini_path);
- if (size > 0) {
- result = configured_value;
- found_in = appdata_ini_path;
- }
- }
- if (result == NULL && launcher_ini_path[0]) {
- /* Not in environment or local: check global configuration. */
- size = GetPrivateProfileStringW(L"defaults", key, NULL,
- configured_value, MSGSIZE,
- launcher_ini_path);
- if (size > 0) {
- result = configured_value;
- found_in = launcher_ini_path;
- }
- }
- if (result) {
- debug(L"found configured value '%ls=%ls' in %ls\n",
- key, result, found_in ? found_in : L"(unknown)");
- } else {
- debug(L"found no configured value for '%ls'\n", key);
- }
- return result;
-}
-
-static INSTALLED_PYTHON *
-locate_python(wchar_t * wanted_ver, BOOL from_shebang)
-{
- static wchar_t config_key [] = { L"pythonX" };
- static wchar_t * last_char = &config_key[sizeof(config_key) /
- sizeof(wchar_t) - 2];
- INSTALLED_PYTHON * result = NULL;
- size_t n = wcslen(wanted_ver);
- wchar_t * configured_value;
-
- if (num_installed_pythons == 0)
- locate_all_pythons();
-
- if (n == 1) { /* just major version specified */
- *last_char = *wanted_ver;
- configured_value = get_configured_value(config_key);
- if (configured_value != NULL)
- wanted_ver = configured_value;
- }
- if (*wanted_ver) {
- result = find_python_by_version(wanted_ver);
- debug(L"search for Python version '%ls' found ", wanted_ver);
- if (result) {
- debug(L"'%ls'\n", result->executable);
- } else {
- debug(L"no interpreter\n");
- }
- }
- else {
- *last_char = L'\0'; /* look for an overall default */
- result = find_python_by_version(L"venv");
- if (result == NULL) {
- configured_value = get_configured_value(config_key);
- if (configured_value)
- result = find_python_by_version(configured_value);
- }
- /* Not found a value yet - try by major version.
- * If we're looking for an interpreter specified in a shebang line,
- * we want to try Python 2 first, then Python 3 (for Unix and backward
- * compatibility). If we're being called interactively, assume the user
- * wants the latest version available, so try Python 3 first, then
- * Python 2.
- */
- if (result == NULL)
- result = find_python_by_version(from_shebang ? L"2" : L"3");
- if (result == NULL)
- result = find_python_by_version(from_shebang ? L"3" : L"2");
- debug(L"search for default Python found ");
- if (result) {
- debug(L"version %ls at '%ls'\n",
- result->version, result->executable);
- } else {
- debug(L"no interpreter\n");
- }
- }
- return result;
-}
-
-#if defined(SCRIPT_WRAPPER)
-/*
- * Check for a script located alongside the executable
- */
-
-#if defined(_WINDOWS)
-#define SCRIPT_SUFFIX L"-script.pyw"
-#else
-#define SCRIPT_SUFFIX L"-script.py"
-#endif
-
-static wchar_t wrapped_script_path[MAX_PATH];
-
-/* Locate the script being wrapped.
- *
- * This code should store the name of the wrapped script in
- * wrapped_script_path, or terminate the program with an error if there is no
- * valid wrapped script file.
- */
-static void
-locate_wrapped_script()
-{
- wchar_t * p;
- size_t plen;
- DWORD attrs;
-
- plen = GetModuleFileNameW(NULL, wrapped_script_path, MAX_PATH);
- p = wcsrchr(wrapped_script_path, L'.');
- if (p == NULL) {
- debug(L"GetModuleFileNameW returned value has no extension: %ls\n",
- wrapped_script_path);
- error(RC_NO_SCRIPT, L"Wrapper name '%ls' is not valid.", wrapped_script_path);
- }
-
- wcsncpy_s(p, MAX_PATH - (p - wrapped_script_path) + 1, SCRIPT_SUFFIX, _TRUNCATE);
- attrs = GetFileAttributesW(wrapped_script_path);
- if (attrs == INVALID_FILE_ATTRIBUTES) {
- debug(L"File '%ls' non-existent\n", wrapped_script_path);
- error(RC_NO_SCRIPT, L"Script file '%ls' is not present.", wrapped_script_path);
- }
-
- debug(L"Using wrapped script file '%ls'\n", wrapped_script_path);
-}
-#endif
-
-/*
- * Process creation code
- */
-
-static BOOL
-safe_duplicate_handle(HANDLE in, HANDLE * pout)
-{
- BOOL ok;
- HANDLE process = GetCurrentProcess();
- DWORD rc;
-
- *pout = NULL;
- ok = DuplicateHandle(process, in, process, pout, 0, TRUE,
- DUPLICATE_SAME_ACCESS);
- if (!ok) {
- rc = GetLastError();
- if (rc == ERROR_INVALID_HANDLE) {
- debug(L"DuplicateHandle returned ERROR_INVALID_HANDLE\n");
- ok = TRUE;
- }
- else {
- debug(L"DuplicateHandle returned %d\n", rc);
- }
- }
- return ok;
-}
-
-static BOOL WINAPI
-ctrl_c_handler(DWORD code)
-{
- return TRUE; /* We just ignore all control events. */
-}
-
-static void
-run_child(wchar_t * cmdline)
-{
- HANDLE job;
- JOBOBJECT_EXTENDED_LIMIT_INFORMATION info;
- DWORD rc;
- BOOL ok;
- STARTUPINFOW si;
- PROCESS_INFORMATION pi;
-
-#if defined(_WINDOWS)
- /*
- When explorer launches a Windows (GUI) application, it displays
- the "app starting" (the "pointer + hourglass") cursor for a number
- of seconds, or until the app does something UI-ish (eg, creating a
- window, or fetching a message). As this launcher doesn't do this
- directly, that cursor remains even after the child process does these
- things. We avoid that by doing a simple post+get message.
- See http://bugs.python.org/issue17290 and
- https://bitbucket.org/vinay.sajip/pylauncher/issue/20/busy-cursor-for-a-long-time-when-running
- */
- MSG msg;
-
- PostMessage(0, 0, 0, 0);
- GetMessage(&msg, 0, 0, 0);
-#endif
-
- debug(L"run_child: about to run '%ls'\n", cmdline);
- job = CreateJobObject(NULL, NULL);
- ok = QueryInformationJobObject(job, JobObjectExtendedLimitInformation,
- &info, sizeof(info), &rc);
- if (!ok || (rc != sizeof(info)) || !job)
- error(RC_CREATE_PROCESS, L"Job information querying failed");
- info.BasicLimitInformation.LimitFlags |= JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE |
- JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK;
- ok = SetInformationJobObject(job, JobObjectExtendedLimitInformation, &info,
- sizeof(info));
- if (!ok)
- error(RC_CREATE_PROCESS, L"Job information setting failed");
- memset(&si, 0, sizeof(si));
- GetStartupInfoW(&si);
- ok = safe_duplicate_handle(GetStdHandle(STD_INPUT_HANDLE), &si.hStdInput);
- if (!ok)
- error(RC_NO_STD_HANDLES, L"stdin duplication failed");
- ok = safe_duplicate_handle(GetStdHandle(STD_OUTPUT_HANDLE), &si.hStdOutput);
- if (!ok)
- error(RC_NO_STD_HANDLES, L"stdout duplication failed");
- ok = safe_duplicate_handle(GetStdHandle(STD_ERROR_HANDLE), &si.hStdError);
- if (!ok)
- error(RC_NO_STD_HANDLES, L"stderr duplication failed");
-
- ok = SetConsoleCtrlHandler(ctrl_c_handler, TRUE);
- if (!ok)
- error(RC_CREATE_PROCESS, L"control handler setting failed");
-
- si.dwFlags = STARTF_USESTDHANDLES;
- ok = CreateProcessW(NULL, cmdline, NULL, NULL, TRUE,
- 0, NULL, NULL, &si, &pi);
- if (!ok)
- error(RC_CREATE_PROCESS, L"Unable to create process using '%ls'", cmdline);
- AssignProcessToJobObject(job, pi.hProcess);
- CloseHandle(pi.hThread);
- WaitForSingleObjectEx(pi.hProcess, INFINITE, FALSE);
- ok = GetExitCodeProcess(pi.hProcess, &rc);
- if (!ok)
- error(RC_CREATE_PROCESS, L"Failed to get exit code of process");
- debug(L"child process exit code: %d\n", rc);
- exit(rc);
-}
-
-static void
-invoke_child(wchar_t * executable, wchar_t * suffix, wchar_t * cmdline)
-{
- wchar_t * child_command;
- size_t child_command_size;
- BOOL no_suffix = (suffix == NULL) || (*suffix == L'\0');
- BOOL no_cmdline = (*cmdline == L'\0');
-
- if (no_suffix && no_cmdline)
- run_child(executable);
- else {
- if (no_suffix) {
- /* add 2 for space separator + terminating NUL. */
- child_command_size = wcslen(executable) + wcslen(cmdline) + 2;
- }
- else {
- /* add 3 for 2 space separators + terminating NUL. */
- child_command_size = wcslen(executable) + wcslen(suffix) +
- wcslen(cmdline) + 3;
- }
- child_command = calloc(child_command_size, sizeof(wchar_t));
- if (child_command == NULL)
- error(RC_CREATE_PROCESS, L"unable to allocate %zd bytes for child command.",
- child_command_size);
- if (no_suffix)
- _snwprintf_s(child_command, child_command_size,
- child_command_size - 1, L"%ls %ls",
- executable, cmdline);
- else
- _snwprintf_s(child_command, child_command_size,
- child_command_size - 1, L"%ls %ls %ls",
- executable, suffix, cmdline);
- run_child(child_command);
- free(child_command);
- }
-}
-
-typedef struct {
- wchar_t *shebang;
- BOOL search;
-} SHEBANG;
-
-static SHEBANG builtin_virtual_paths [] = {
- { L"/usr/bin/env python", TRUE },
- { L"/usr/bin/python", FALSE },
- { L"/usr/local/bin/python", FALSE },
- { L"python", FALSE },
- { NULL, FALSE },
-};
-
-/* For now, a static array of commands. */
-
-#define MAX_COMMANDS 100
-
-typedef struct {
- wchar_t key[MAX_PATH];
- wchar_t value[MSGSIZE];
-} COMMAND;
-
-static COMMAND commands[MAX_COMMANDS];
-static int num_commands = 0;
-
-#if defined(SKIP_PREFIX)
-
-static wchar_t * builtin_prefixes [] = {
- /* These must be in an order that the longest matches should be found,
- * i.e. if the prefix is "/usr/bin/env ", it should match that entry
- * *before* matching "/usr/bin/".
- */
- L"/usr/bin/env ",
- L"/usr/bin/",
- L"/usr/local/bin/",
- NULL
-};
-
-static wchar_t * skip_prefix(wchar_t * name)
-{
- wchar_t ** pp = builtin_prefixes;
- wchar_t * result = name;
- wchar_t * p;
- size_t n;
-
- for (; p = *pp; pp++) {
- n = wcslen(p);
- if (_wcsnicmp(p, name, n) == 0) {
- result += n; /* skip the prefix */
- if (p[n - 1] == L' ') /* No empty strings in table, so n > 1 */
- result = skip_whitespace(result);
- break;
- }
- }
- return result;
-}
-
-#endif
-
-#if defined(SEARCH_PATH)
-
-static COMMAND path_command;
-
-static COMMAND * find_on_path(wchar_t * name)
-{
- wchar_t * pathext;
- size_t varsize;
- wchar_t * context = NULL;
- wchar_t * extension;
- COMMAND * result = NULL;
- DWORD len;
- errno_t rc;
-
- wcscpy_s(path_command.key, MAX_PATH, name);
- if (wcschr(name, L'.') != NULL) {
- /* assume it has an extension. */
- len = SearchPathW(NULL, name, NULL, MSGSIZE, path_command.value, NULL);
- if (len) {
- result = &path_command;
- }
- }
- else {
- /* No extension - search using registered extensions. */
- rc = _wdupenv_s(&pathext, &varsize, L"PATHEXT");
- if (rc == 0) {
- extension = wcstok_s(pathext, L";", &context);
- while (extension) {
- len = SearchPathW(NULL, name, extension, MSGSIZE, path_command.value, NULL);
- if (len) {
- result = &path_command;
- break;
- }
- extension = wcstok_s(NULL, L";", &context);
- }
- free(pathext);
- }
- }
- return result;
-}
-
-#endif
-
-static COMMAND * find_command(wchar_t * name)
-{
- COMMAND * result = NULL;
- COMMAND * cp = commands;
- int i;
-
- for (i = 0; i < num_commands; i++, cp++) {
- if (_wcsicmp(cp->key, name) == 0) {
- result = cp;
- break;
- }
- }
-#if defined(SEARCH_PATH)
- if (result == NULL)
- result = find_on_path(name);
-#endif
- return result;
-}
-
-static void
-update_command(COMMAND * cp, wchar_t * name, wchar_t * cmdline)
-{
- wcsncpy_s(cp->key, MAX_PATH, name, _TRUNCATE);
- wcsncpy_s(cp->value, MSGSIZE, cmdline, _TRUNCATE);
-}
-
-static void
-add_command(wchar_t * name, wchar_t * cmdline)
-{
- if (num_commands >= MAX_COMMANDS) {
- debug(L"can't add %ls = '%ls': no room\n", name, cmdline);
- }
- else {
- COMMAND * cp = &commands[num_commands++];
-
- update_command(cp, name, cmdline);
- }
-}
-
-static void
-read_config_file(wchar_t * config_path)
-{
- wchar_t keynames[MSGSIZE];
- wchar_t value[MSGSIZE];
- DWORD read;
- wchar_t * key;
- COMMAND * cp;
- wchar_t * cmdp;
-
- read = GetPrivateProfileStringW(L"commands", NULL, NULL, keynames, MSGSIZE,
- config_path);
- if (read == MSGSIZE - 1) {
- debug(L"read_commands: %ls: not enough space for names\n", config_path);
- }
- key = keynames;
- while (*key) {
- read = GetPrivateProfileStringW(L"commands", key, NULL, value, MSGSIZE,
- config_path);
- if (read == MSGSIZE - 1) {
- debug(L"read_commands: %ls: not enough space for %ls\n",
- config_path, key);
- }
- cmdp = skip_whitespace(value);
- if (*cmdp) {
- cp = find_command(key);
- if (cp == NULL)
- add_command(key, value);
- else
- update_command(cp, key, value);
- }
- key += wcslen(key) + 1;
- }
-}
-
-static void read_commands()
-{
- if (launcher_ini_path[0])
- read_config_file(launcher_ini_path);
- if (appdata_ini_path[0])
- read_config_file(appdata_ini_path);
-}
-
-static BOOL
-parse_shebang(wchar_t * shebang_line, int nchars, wchar_t ** command,
- wchar_t ** suffix, BOOL *search)
-{
- BOOL rc = FALSE;
- SHEBANG * vpp;
- size_t plen;
- wchar_t * p;
- wchar_t zapped;
- wchar_t * endp = shebang_line + nchars - 1;
- COMMAND * cp;
- wchar_t * skipped;
-
- *command = NULL; /* failure return */
- *suffix = NULL;
- *search = FALSE;
-
- if ((*shebang_line++ == L'#') && (*shebang_line++ == L'!')) {
- shebang_line = skip_whitespace(shebang_line);
- if (*shebang_line) {
- *command = shebang_line;
- for (vpp = builtin_virtual_paths; vpp->shebang; ++vpp) {
- plen = wcslen(vpp->shebang);
- if (wcsncmp(shebang_line, vpp->shebang, plen) == 0) {
- rc = TRUE;
- *search = vpp->search;
- /* We can do this because all builtin commands contain
- * "python".
- */
- *command = wcsstr(shebang_line, L"python");
- break;
- }
- }
- if (vpp->shebang == NULL) {
- /*
- * Not found in builtins - look in customized commands.
- *
- * We can't permanently modify the shebang line in case
- * it's not a customized command, but we can temporarily
- * stick a NUL after the command while searching for it,
- * then put back the char we zapped.
- */
-#if defined(SKIP_PREFIX)
- skipped = skip_prefix(shebang_line);
-#else
- skipped = shebang_line;
-#endif
- p = wcspbrk(skipped, L" \t\r\n");
- if (p != NULL) {
- zapped = *p;
- *p = L'\0';
- }
- cp = find_command(skipped);
- if (p != NULL)
- *p = zapped;
- if (cp != NULL) {
- *command = cp->value;
- if (p != NULL)
- *suffix = skip_whitespace(p);
- }
- }
- /* remove trailing whitespace */
- while ((endp > shebang_line) && isspace(*endp))
- --endp;
- if (endp > shebang_line)
- endp[1] = L'\0';
- }
- }
- return rc;
-}
-
-/* #define CP_UTF8 65001 defined in winnls.h */
-#define CP_UTF16LE 1200
-#define CP_UTF16BE 1201
-#define CP_UTF32LE 12000
-#define CP_UTF32BE 12001
-
-typedef struct {
- int length;
- char sequence[4];
- UINT code_page;
-} BOM;
-
-/*
- * Strictly, we don't need to handle UTF-16 and UTF-32, since Python itself
- * doesn't. Never mind, one day it might - there's no harm leaving it in.
- */
-static BOM BOMs[] = {
- { 3, { 0xEF, 0xBB, 0xBF }, CP_UTF8 }, /* UTF-8 - keep first */
- /* Test UTF-32LE before UTF-16LE since UTF-16LE BOM is a prefix
- * of UTF-32LE BOM. */
- { 4, { 0xFF, 0xFE, 0x00, 0x00 }, CP_UTF32LE }, /* UTF-32LE */
- { 4, { 0x00, 0x00, 0xFE, 0xFF }, CP_UTF32BE }, /* UTF-32BE */
- { 2, { 0xFF, 0xFE }, CP_UTF16LE }, /* UTF-16LE */
- { 2, { 0xFE, 0xFF }, CP_UTF16BE }, /* UTF-16BE */
- { 0 } /* sentinel */
-};
-
-static BOM *
-find_BOM(char * buffer)
-{
-/*
- * Look for a BOM in the input and return a pointer to the
- * corresponding structure, or NULL if not found.
- */
- BOM * result = NULL;
- BOM *bom;
-
- for (bom = BOMs; bom->length; bom++) {
- if (strncmp(bom->sequence, buffer, bom->length) == 0) {
- result = bom;
- break;
- }
- }
- return result;
-}
-
-static char *
-find_terminator(char * buffer, int len, BOM *bom)
-{
- char * result = NULL;
- char * end = buffer + len;
- char * p;
- char c;
- int cp;
-
- for (p = buffer; p < end; p++) {
- c = *p;
- if (c == '\r') {
- result = p;
- break;
- }
- if (c == '\n') {
- result = p;
- break;
- }
- }
- if (result != NULL) {
- cp = bom->code_page;
-
- /* adjustments to include all bytes of the char */
- /* no adjustment needed for UTF-8 or big endian */
- if (cp == CP_UTF16LE)
- ++result;
- else if (cp == CP_UTF32LE)
- result += 3;
- ++result; /* point just past terminator */
- }
- return result;
-}
-
-static BOOL
-validate_version(wchar_t * p)
-{
- /*
- Version information should start with the major version,
- Optionally followed by a period and a minor version,
- Optionally followed by a minus and one of 32 or 64.
- Valid examples:
- 2
- 3
- 2.7
- 3.6
- 2.7-32
- The intent is to add to the valid patterns:
- 3.10
- 3-32
- 3.6-64
- 3-64
- */
- BOOL result = (p != NULL); /* Default to False if null pointer. */
-
- result = result && iswdigit(*p); /* Result = False if first string element is not a digit. */
-
- while (result && iswdigit(*p)) /* Require a major version */
- ++p; /* Skip all leading digit(s) */
- if (result && (*p == L'.')) /* Allow . for major minor separator.*/
- {
- result = iswdigit(*++p); /* Must be at least one digit */
- while (result && iswdigit(*++p)) ; /* Skip any more Digits */
- }
- if (result && (*p == L'-')) { /* Allow - for Bits Separator */
- switch(*++p){
- case L'3': /* 3 is OK */
- result = (*++p == L'2') && !*++p; /* only if followed by 2 and ended.*/
- break;
- case L'6': /* 6 is OK */
- result = (*++p == L'4') && !*++p; /* only if followed by 4 and ended.*/
- break;
- default:
- result = FALSE;
- break;
- }
- }
- result = result && !*p; /* Must have reached EOS */
- return result;
-
-}
-
-typedef struct {
- unsigned short min;
- unsigned short max;
- wchar_t version[MAX_VERSION_SIZE];
-} PYC_MAGIC;
-
-static PYC_MAGIC magic_values[] = {
- { 50823, 50823, L"2.0" },
- { 60202, 60202, L"2.1" },
- { 60717, 60717, L"2.2" },
- { 62011, 62021, L"2.3" },
- { 62041, 62061, L"2.4" },
- { 62071, 62131, L"2.5" },
- { 62151, 62161, L"2.6" },
- { 62171, 62211, L"2.7" },
- { 3000, 3131, L"3.0" },
- { 3141, 3151, L"3.1" },
- { 3160, 3180, L"3.2" },
- { 3190, 3230, L"3.3" },
- { 3250, 3310, L"3.4" },
- { 3320, 3351, L"3.5" },
- { 3360, 3379, L"3.6" },
- { 3390, 3399, L"3.7" },
- { 3400, 3419, L"3.8" },
- { 0 }
-};
-
-static INSTALLED_PYTHON *
-find_by_magic(unsigned short magic)
-{
- INSTALLED_PYTHON * result = NULL;
- PYC_MAGIC * mp;
-
- for (mp = magic_values; mp->min; mp++) {
- if ((magic >= mp->min) && (magic <= mp->max)) {
- result = locate_python(mp->version, FALSE);
- if (result != NULL)
- break;
- }
- }
- return result;
-}
-
-static void
-maybe_handle_shebang(wchar_t ** argv, wchar_t * cmdline)
-{
-/*
- * Look for a shebang line in the first argument. If found
- * and we spawn a child process, this never returns. If it
- * does return then we process the args "normally".
- *
- * argv[0] might be a filename with a shebang.
- */
- FILE * fp;
- errno_t rc = _wfopen_s(&fp, *argv, L"rb");
- char buffer[BUFSIZE];
- wchar_t shebang_line[BUFSIZE + 1];
- size_t read;
- char *p;
- char * start;
- char * shebang_alias = (char *) shebang_line;
- BOM* bom;
- int i, j, nchars = 0;
- int header_len;
- BOOL is_virt;
- BOOL search;
- wchar_t * command;
- wchar_t * suffix;
- COMMAND *cmd = NULL;
- INSTALLED_PYTHON * ip;
-
- if (rc == 0) {
- read = fread(buffer, sizeof(char), BUFSIZE, fp);
- debug(L"maybe_handle_shebang: read %zd bytes\n", read);
- fclose(fp);
-
- if ((read >= 4) && (buffer[3] == '\n') && (buffer[2] == '\r')) {
- ip = find_by_magic((((unsigned char)buffer[1]) << 8 |
- (unsigned char)buffer[0]) & 0xFFFF);
- if (ip != NULL) {
- debug(L"script file is compiled against Python %ls\n",
- ip->version);
- invoke_child(ip->executable, NULL, cmdline);
- }
- }
- /* Look for BOM */
- bom = find_BOM(buffer);
- if (bom == NULL) {
- start = buffer;
- debug(L"maybe_handle_shebang: BOM not found, using UTF-8\n");
- bom = BOMs; /* points to UTF-8 entry - the default */
- }
- else {
- debug(L"maybe_handle_shebang: BOM found, code page %u\n",
- bom->code_page);
- start = &buffer[bom->length];
- }
- p = find_terminator(start, BUFSIZE, bom);
- /*
- * If no CR or LF was found in the heading,
- * we assume it's not a shebang file.
- */
- if (p == NULL) {
- debug(L"maybe_handle_shebang: No line terminator found\n");
- }
- else {
- /*
- * Found line terminator - parse the shebang.
- *
- * Strictly, we don't need to handle UTF-16 anf UTF-32,
- * since Python itself doesn't.
- * Never mind, one day it might.
- */
- header_len = (int) (p - start);
- switch(bom->code_page) {
- case CP_UTF8:
- nchars = MultiByteToWideChar(bom->code_page,
- 0,
- start, header_len, shebang_line,
- BUFSIZE);
- break;
- case CP_UTF16BE:
- if (header_len % 2 != 0) {
- debug(L"maybe_handle_shebang: UTF-16BE, but an odd number \
-of bytes: %d\n", header_len);
- /* nchars = 0; Not needed - initialised to 0. */
- }
- else {
- for (i = header_len; i > 0; i -= 2) {
- shebang_alias[i - 1] = start[i - 2];
- shebang_alias[i - 2] = start[i - 1];
- }
- nchars = header_len / sizeof(wchar_t);
- }
- break;
- case CP_UTF16LE:
- if ((header_len % 2) != 0) {
- debug(L"UTF-16LE, but an odd number of bytes: %d\n",
- header_len);
- /* nchars = 0; Not needed - initialised to 0. */
- }
- else {
- /* no actual conversion needed. */
- memcpy(shebang_line, start, header_len);
- nchars = header_len / sizeof(wchar_t);
- }
- break;
- case CP_UTF32BE:
- if (header_len % 4 != 0) {
- debug(L"UTF-32BE, but not divisible by 4: %d\n",
- header_len);
- /* nchars = 0; Not needed - initialised to 0. */
- }
- else {
- for (i = header_len, j = header_len / 2; i > 0; i -= 4,
- j -= 2) {
- shebang_alias[j - 1] = start[i - 2];
- shebang_alias[j - 2] = start[i - 1];
- }
- nchars = header_len / sizeof(wchar_t);
- }
- break;
- case CP_UTF32LE:
- if (header_len % 4 != 0) {
- debug(L"UTF-32LE, but not divisible by 4: %d\n",
- header_len);
- /* nchars = 0; Not needed - initialised to 0. */
- }
- else {
- for (i = header_len, j = header_len / 2; i > 0; i -= 4,
- j -= 2) {
- shebang_alias[j - 1] = start[i - 3];
- shebang_alias[j - 2] = start[i - 4];
- }
- nchars = header_len / sizeof(wchar_t);
- }
- break;
- }
- if (nchars > 0) {
- shebang_line[--nchars] = L'\0';
- is_virt = parse_shebang(shebang_line, nchars, &command,
- &suffix, &search);
- if (command != NULL) {
- debug(L"parse_shebang: found command: %ls\n", command);
- if (!is_virt) {
- invoke_child(command, suffix, cmdline);
- }
- else {
- suffix = wcschr(command, L' ');
- if (suffix != NULL) {
- *suffix++ = L'\0';
- suffix = skip_whitespace(suffix);
- }
- if (wcsncmp(command, L"python", 6))
- error(RC_BAD_VIRTUAL_PATH, L"Unknown virtual \
-path '%ls'", command);
- command += 6; /* skip past "python" */
- if (search && ((*command == L'\0') || isspace(*command))) {
- /* Command is eligible for path search, and there
- * is no version specification.
- */
- debug(L"searching PATH for python executable\n");
- cmd = find_on_path(PYTHON_EXECUTABLE);
- debug(L"Python on path: %ls\n", cmd ? cmd->value : L"<not found>");
- if (cmd) {
- debug(L"located python on PATH: %ls\n", cmd->value);
- invoke_child(cmd->value, suffix, cmdline);
- /* Exit here, as we have found the command */
- return;
- }
- /* FALL THROUGH: No python found on PATH, so fall
- * back to locating the correct installed python.
- */
- }
- if (*command && !validate_version(command))
- error(RC_BAD_VIRTUAL_PATH, L"Invalid version \
-specification: '%ls'.\nIn the first line of the script, 'python' needs to be \
-followed by a valid version specifier.\nPlease check the documentation.",
- command);
- /* TODO could call validate_version(command) */
- ip = locate_python(command, TRUE);
- if (ip == NULL) {
- error(RC_NO_PYTHON, L"Requested Python version \
-(%ls) is not installed", command);
- }
- else {
- invoke_child(ip->executable, suffix, cmdline);
- }
- }
- }
- }
- }
- }
-}
-
-static wchar_t *
-skip_me(wchar_t * cmdline)
-{
- BOOL quoted;
- wchar_t c;
- wchar_t * result = cmdline;
-
- quoted = cmdline[0] == L'\"';
- if (!quoted)
- c = L' ';
- else {
- c = L'\"';
- ++result;
- }
- result = wcschr(result, c);
- if (result == NULL) /* when, for example, just exe name on command line */
- result = L"";
- else {
- ++result; /* skip past space or closing quote */
- result = skip_whitespace(result);
- }
- return result;
-}
-
-static DWORD version_high = 0;
-static DWORD version_low = 0;
-
-static void
-get_version_info(wchar_t * version_text, size_t size)
-{
- WORD maj, min, rel, bld;
-
- if (!version_high && !version_low)
- wcsncpy_s(version_text, size, L"0.1", _TRUNCATE); /* fallback */
- else {
- maj = HIWORD(version_high);
- min = LOWORD(version_high);
- rel = HIWORD(version_low);
- bld = LOWORD(version_low);
- _snwprintf_s(version_text, size, _TRUNCATE, L"%d.%d.%d.%d", maj,
- min, rel, bld);
- }
-}
-
-static void
-show_help_text(wchar_t ** argv)
-{
- wchar_t version_text [MAX_PATH];
-#if defined(_M_X64)
- BOOL canDo64bit = TRUE;
-#else
- /* If we are a 32bit process on a 64bit Windows, first hit the 64bit keys. */
- BOOL canDo64bit = FALSE;
- IsWow64Process(GetCurrentProcess(), &canDo64bit);
-#endif
-
- get_version_info(version_text, MAX_PATH);
- fwprintf(stdout, L"\
-Python Launcher for Windows Version %ls\n\n", version_text);
- fwprintf(stdout, L"\
-usage:\n\
-%ls [launcher-args] [python-args] script [script-args]\n\n", argv[0]);
- fputws(L"\
-Launcher arguments:\n\n\
--2 : Launch the latest Python 2.x version\n\
--3 : Launch the latest Python 3.x version\n\
--X.Y : Launch the specified Python version\n", stdout);
- if (canDo64bit) {
- fputws(L"\
- The above all default to 64 bit if a matching 64 bit python is present.\n\
--X.Y-32: Launch the specified 32bit Python version\n\
--X-32 : Launch the latest 32bit Python X version\n\
--X.Y-64: Launch the specified 64bit Python version\n\
--X-64 : Launch the latest 64bit Python X version", stdout);
- }
- fputws(L"\n-0 --list : List the available pythons", stdout);
- fputws(L"\n-0p --list-paths : List with paths", stdout);
- fputws(L"\n\nThe following help text is from Python:\n\n", stdout);
- fflush(stdout);
-}
-
-static BOOL
-show_python_list(wchar_t ** argv)
-{
- /*
- * Display options -0
- */
- INSTALLED_PYTHON * result = NULL;
- INSTALLED_PYTHON * ip = installed_pythons; /* List of installed pythons */
- INSTALLED_PYTHON * defpy = locate_python(L"", FALSE);
- size_t i = 0;
- wchar_t *p = argv[1];
- wchar_t *ver_fmt = L"-%ls-%d";
- wchar_t *fmt = L"\n %ls";
- wchar_t *defind = L" *"; /* Default indicator */
-
- /*
- * Output informational messages to stderr to keep output
- * clean for use in pipes, etc.
- */
- fwprintf(stderr,
- L"Installed Pythons found by %s Launcher for Windows", argv[0]);
- if (!_wcsicmp(p, L"-0p") || !_wcsicmp(p, L"--list-paths"))
- fmt = L"\n %-15ls%ls"; /* include path */
-
- if (num_installed_pythons == 0) /* We have somehow got here without searching for pythons */
- locate_all_pythons(); /* Find them, Populates installed_pythons */
-
- if (num_installed_pythons == 0) /* No pythons found */
- fwprintf(stderr, L"\nNo Installed Pythons Found!");
- else
- {
- for (i = 0; i < num_installed_pythons; i++, ip++) {
- wchar_t version[BUFSIZ];
- if (wcscmp(ip->version, L"venv") == 0) {
- wcscpy_s(version, BUFSIZ, L"(venv)");
- }
- else {
- swprintf_s(version, BUFSIZ, ver_fmt, ip->version, ip->bits);
- }
-
- if (ip->exe_display[0]) {
- fwprintf(stdout, fmt, version, ip->exe_display);
- }
- else {
- fwprintf(stdout, fmt, version, ip->executable);
- }
- /* If there is a default indicate it */
- if (defpy == ip)
- fwprintf(stderr, defind);
- }
- }
-
- if ((defpy == NULL) && (num_installed_pythons > 0))
- /* We have pythons but none is the default */
- fwprintf(stderr, L"\n\nCan't find a Default Python.\n\n");
- else
- fwprintf(stderr, L"\n\n"); /* End with a blank line */
- return FALSE; /* If this has been called we cannot continue */
-}
-
-#if defined(VENV_REDIRECT)
-
-static int
-find_home_value(const char *buffer, const char **start, DWORD *length)
-{
- for (const char *s = strstr(buffer, "home"); s; s = strstr(s + 1, "\nhome")) {
- if (*s == '\n') {
- ++s;
- }
- for (int i = 4; i > 0 && *s; --i, ++s);
-
- while (*s && iswspace(*s)) {
- ++s;
- }
- if (*s != L'=') {
- continue;
- }
-
- do {
- ++s;
- } while (*s && iswspace(*s));
-
- *start = s;
- char *nl = strchr(s, '\n');
- if (nl) {
- *length = (DWORD)((ptrdiff_t)nl - (ptrdiff_t)s);
- } else {
- *length = (DWORD)strlen(s);
- }
- return 1;
- }
- return 0;
-}
-#endif
-
-static wchar_t *
-wcsdup_pad(const wchar_t *s, int padding, int *newlen)
-{
- size_t len = wcslen(s);
- len += 1 + padding;
- wchar_t *r = (wchar_t *)malloc(len * sizeof(wchar_t));
- if (!r) {
- return NULL;
- }
- if (wcscpy_s(r, len, s)) {
- free(r);
- return NULL;
- }
- *newlen = len < MAXINT ? (int)len : MAXINT;
- return r;
-}
-
-static wchar_t *
-get_process_name()
-{
- DWORD bufferLen = MAX_PATH;
- DWORD len = bufferLen;
- wchar_t *r = NULL;
-
- while (!r) {
- r = (wchar_t *)malloc(bufferLen * sizeof(wchar_t));
- if (!r) {
- error(RC_NO_MEMORY, L"out of memory");
- return NULL;
- }
- len = GetModuleFileNameW(NULL, r, bufferLen);
- if (len == 0) {
- free(r);
- error(0, L"Failed to get module name");
- return NULL;
- } else if (len == bufferLen &&
- GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
- free(r);
- r = NULL;
- bufferLen *= 2;
- }
- }
-
- return r;
-}
-
-static int
-process(int argc, wchar_t ** argv)
-{
- wchar_t * wp;
- wchar_t * command;
- wchar_t * executable;
- wchar_t * p;
- wchar_t * argv0;
- int rc = 0;
- INSTALLED_PYTHON * ip;
- BOOL valid;
- DWORD size, attrs;
- wchar_t message[MSGSIZE];
- void * version_data;
- VS_FIXEDFILEINFO * file_info;
- UINT block_size;
-#if defined(VENV_REDIRECT)
- wchar_t * venv_cfg_path;
- int newlen;
-#elif defined(SCRIPT_WRAPPER)
- wchar_t * newcommand;
- wchar_t * av[2];
- int newlen;
- HRESULT hr;
- int index;
-#else
- HRESULT hr;
- int index;
-#endif
-
- setvbuf(stderr, (char *)NULL, _IONBF, 0);
- wp = get_env(L"PYLAUNCH_DEBUG");
- if ((wp != NULL) && (*wp != L'\0'))
- log_fp = stderr;
-
-#if defined(_M_X64)
- debug(L"launcher build: 64bit\n");
-#else
- debug(L"launcher build: 32bit\n");
-#endif
-#if defined(_WINDOWS)
- debug(L"launcher executable: Windows\n");
-#else
- debug(L"launcher executable: Console\n");
-#endif
-#if !defined(VENV_REDIRECT)
- /* Get the local appdata folder (non-roaming) */
- hr = SHGetFolderPathW(NULL, CSIDL_LOCAL_APPDATA,
- NULL, 0, appdata_ini_path);
- if (hr != S_OK) {
- debug(L"SHGetFolderPath failed: %X\n", hr);
- appdata_ini_path[0] = L'\0';
- }
- else {
- wcsncat_s(appdata_ini_path, MAX_PATH, L"\\py.ini", _TRUNCATE);
- attrs = GetFileAttributesW(appdata_ini_path);
- if (attrs == INVALID_FILE_ATTRIBUTES) {
- debug(L"File '%ls' non-existent\n", appdata_ini_path);
- appdata_ini_path[0] = L'\0';
- } else {
- debug(L"Using local configuration file '%ls'\n", appdata_ini_path);
- }
- }
-#endif
- argv0 = get_process_name();
- size = GetFileVersionInfoSizeW(argv0, &size);
- if (size == 0) {
- winerror(GetLastError(), message, MSGSIZE);
- debug(L"GetFileVersionInfoSize failed: %ls\n", message);
- }
- else {
- version_data = malloc(size);
- if (version_data) {
- valid = GetFileVersionInfoW(argv0, 0, size,
- version_data);
- if (!valid)
- debug(L"GetFileVersionInfo failed: %X\n", GetLastError());
- else {
- valid = VerQueryValueW(version_data, L"\\",
- (LPVOID *) &file_info, &block_size);
- if (!valid)
- debug(L"VerQueryValue failed: %X\n", GetLastError());
- else {
- version_high = file_info->dwFileVersionMS;
- version_low = file_info->dwFileVersionLS;
- }
- }
- free(version_data);
- }
- }
-
-#if defined(VENV_REDIRECT)
- /* Allocate some extra space for new filenames */
- venv_cfg_path = wcsdup_pad(argv0, 32, &newlen);
- if (!venv_cfg_path) {
- error(RC_NO_MEMORY, L"Failed to copy module name");
- }
- p = wcsrchr(venv_cfg_path, L'\\');
-
- if (p == NULL) {
- error(RC_NO_VENV_CFG, L"No pyvenv.cfg file");
- }
- p[0] = L'\0';
- wcscat_s(venv_cfg_path, newlen, L"\\pyvenv.cfg");
- attrs = GetFileAttributesW(venv_cfg_path);
- if (attrs == INVALID_FILE_ATTRIBUTES) {
- debug(L"File '%ls' non-existent\n", venv_cfg_path);
- p[0] = '\0';
- p = wcsrchr(venv_cfg_path, L'\\');
- if (p != NULL) {
- p[0] = '\0';
- wcscat_s(venv_cfg_path, newlen, L"\\pyvenv.cfg");
- attrs = GetFileAttributesW(venv_cfg_path);
- if (attrs == INVALID_FILE_ATTRIBUTES) {
- debug(L"File '%ls' non-existent\n", venv_cfg_path);
- error(RC_NO_VENV_CFG, L"No pyvenv.cfg file");
- }
- }
- }
- debug(L"Using venv configuration file '%ls'\n", venv_cfg_path);
-#else
- /* Allocate some extra space for new filenames */
- if (wcscpy_s(launcher_ini_path, MAX_PATH, argv0)) {
- error(RC_NO_MEMORY, L"Failed to copy module name");
- }
- p = wcsrchr(launcher_ini_path, L'\\');
-
- if (p == NULL) {
- debug(L"GetModuleFileNameW returned value has no backslash: %ls\n",
- launcher_ini_path);
- launcher_ini_path[0] = L'\0';
- }
- else {
- p[0] = L'\0';
- wcscat_s(launcher_ini_path, MAX_PATH, L"\\py.ini");
- attrs = GetFileAttributesW(launcher_ini_path);
- if (attrs == INVALID_FILE_ATTRIBUTES) {
- debug(L"File '%ls' non-existent\n", launcher_ini_path);
- launcher_ini_path[0] = L'\0';
- } else {
- debug(L"Using global configuration file '%ls'\n", launcher_ini_path);
- }
- }
-#endif
-
- command = skip_me(GetCommandLineW());
- debug(L"Called with command line: %ls\n", command);
-
-#if !defined(VENV_REDIRECT)
- /* bpo-35811: The __PYVENV_LAUNCHER__ variable is used to
- * override sys.executable and locate the original prefix path.
- * However, if it is silently inherited by a non-venv Python
- * process, that process will believe it is running in the venv
- * still. This is the only place where *we* can clear it (that is,
- * when py.exe is being used to launch Python), so we do.
- */
- SetEnvironmentVariableW(L"__PYVENV_LAUNCHER__", NULL);
-#endif
-
-#if defined(SCRIPT_WRAPPER)
- /* The launcher is being used in "script wrapper" mode.
- * There should therefore be a Python script named <exename>-script.py in
- * the same directory as the launcher executable.
- * Put the script name into argv as the first (script name) argument.
- */
-
- /* Get the wrapped script name - if the script is not present, this will
- * terminate the program with an error.
- */
- locate_wrapped_script();
-
- /* Add the wrapped script to the start of command */
- newlen = wcslen(wrapped_script_path) + wcslen(command) + 2; /* ' ' + NUL */
- newcommand = malloc(sizeof(wchar_t) * newlen);
- if (!newcommand) {
- error(RC_NO_MEMORY, L"Could not allocate new command line");
- }
- else {
- wcscpy_s(newcommand, newlen, wrapped_script_path);
- wcscat_s(newcommand, newlen, L" ");
- wcscat_s(newcommand, newlen, command);
- debug(L"Running wrapped script with command line '%ls'\n", newcommand);
- read_commands();
- av[0] = wrapped_script_path;
- av[1] = NULL;
- maybe_handle_shebang(av, newcommand);
- /* Returns if no shebang line - pass to default processing */
- command = newcommand;
- valid = FALSE;
- }
-#elif defined(VENV_REDIRECT)
- {
- FILE *f;
- char buffer[4096]; /* 4KB should be enough for anybody */
- char *start;
- DWORD len, cch, cch_actual;
- size_t cb;
- if (_wfopen_s(&f, venv_cfg_path, L"r")) {
- error(RC_BAD_VENV_CFG, L"Cannot read '%ls'", venv_cfg_path);
- }
- cb = fread_s(buffer, sizeof(buffer), sizeof(buffer[0]),
- sizeof(buffer) / sizeof(buffer[0]), f);
- fclose(f);
-
- if (!find_home_value(buffer, &start, &len)) {
- error(RC_BAD_VENV_CFG, L"Cannot find home in '%ls'",
- venv_cfg_path);
- }
-
- cch = MultiByteToWideChar(CP_UTF8, 0, start, len, NULL, 0);
- if (!cch) {
- error(0, L"Cannot determine memory for home path");
- }
- cch += (DWORD)wcslen(PYTHON_EXECUTABLE) + 1 + 1; /* include sep and null */
- executable = (wchar_t *)malloc(cch * sizeof(wchar_t));
- if (executable == NULL) {
- error(RC_NO_MEMORY, L"A memory allocation failed");
- }
- cch_actual = MultiByteToWideChar(CP_UTF8, 0, start, len, executable, cch);
- if (!cch_actual) {
- error(RC_BAD_VENV_CFG, L"Cannot decode home path in '%ls'",
- venv_cfg_path);
- }
- if (executable[cch_actual - 1] != L'\\') {
- executable[cch_actual++] = L'\\';
- executable[cch_actual] = L'\0';
- }
- if (wcscat_s(executable, cch, PYTHON_EXECUTABLE)) {
- error(RC_BAD_VENV_CFG, L"Cannot create executable path from '%ls'",
- venv_cfg_path);
- }
- if (GetFileAttributesW(executable) == INVALID_FILE_ATTRIBUTES) {
- error(RC_NO_PYTHON, L"No Python at '%ls'", executable);
- }
- if (!SetEnvironmentVariableW(L"__PYVENV_LAUNCHER__", argv0)) {
- error(0, L"Failed to set launcher environment");
- }
- valid = 1;
- }
-#else
- if (argc <= 1) {
- valid = FALSE;
- p = NULL;
- }
- else {
- p = argv[1];
- if ((argc == 2) && // list version args
- (!wcsncmp(p, L"-0", wcslen(L"-0")) ||
- !wcsncmp(p, L"--list", wcslen(L"--list"))))
- {
- show_python_list(argv);
- return rc;
- }
- valid = valid && (*p == L'-') && validate_version(&p[1]);
- if (valid) {
- ip = locate_python(&p[1], FALSE);
- if (ip == NULL)
- {
- fwprintf(stdout, \
- L"Python %ls not found!\n", &p[1]);
- valid = show_python_list(argv);
- error(RC_NO_PYTHON, L"Requested Python version (%ls) not \
-installed, use -0 for available pythons", &p[1]);
- }
- executable = ip->executable;
- command += wcslen(p);
- command = skip_whitespace(command);
- }
- else {
- for (index = 1; index < argc; ++index) {
- if (*argv[index] != L'-')
- break;
- }
- if (index < argc) {
- read_commands();
- maybe_handle_shebang(&argv[index], command);
- }
- }
- }
-#endif
-
- if (!valid) {
- if ((argc == 2) && (!_wcsicmp(p, L"-h") || !_wcsicmp(p, L"--help")))
- show_help_text(argv);
- if ((argc == 2) &&
- (!_wcsicmp(p, L"-0") || !_wcsicmp(p, L"--list") ||
- !_wcsicmp(p, L"-0p") || !_wcsicmp(p, L"--list-paths")))
- {
- executable = NULL; /* Info call only */
- }
- else {
- /* look for the default Python */
- ip = locate_python(L"", FALSE);
- if (ip == NULL)
- error(RC_NO_PYTHON, L"Can't find a default Python.");
- executable = ip->executable;
- }
- }
- if (executable != NULL)
- invoke_child(executable, NULL, command);
- else
- rc = RC_NO_PYTHON;
- return rc;
-}
-
-#if defined(_WINDOWS)
-
-int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
- LPWSTR lpstrCmd, int nShow)
-{
- return process(__argc, __wargv);
-}
-
-#else
-
-int cdecl wmain(int argc, wchar_t ** argv)
-{
- return process(argc, argv);
-}
-
-#endif
diff --git a/PC/layout/__init__.py b/PC/layout/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/PC/layout/__init__.py
+++ /dev/null
diff --git a/PC/layout/__main__.py b/PC/layout/__main__.py
deleted file mode 100644
index f7aa1e6..0000000
--- a/PC/layout/__main__.py
+++ /dev/null
@@ -1,14 +0,0 @@
-import sys
-
-try:
- import layout
-except ImportError:
- # Failed to import our package, which likely means we were started directly
- # Add the additional search path needed to locate our module.
- from pathlib import Path
-
- sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
-
-from layout.main import main
-
-sys.exit(int(main() or 0))
diff --git a/PC/layout/main.py b/PC/layout/main.py
deleted file mode 100644
index 305cb51..0000000
--- a/PC/layout/main.py
+++ /dev/null
@@ -1,652 +0,0 @@
-"""
-Generates a layout of Python for Windows from a build.
-
-See python make_layout.py --help for usage.
-"""
-
-__author__ = "Steve Dower <steve.dower@python.org>"
-__version__ = "3.8"
-
-import argparse
-import functools
-import os
-import re
-import shutil
-import subprocess
-import sys
-import tempfile
-import zipfile
-
-from pathlib import Path
-
-if __name__ == "__main__":
- # Started directly, so enable relative imports
- __path__ = [str(Path(__file__).resolve().parent)]
-
-from .support.appxmanifest import *
-from .support.catalog import *
-from .support.constants import *
-from .support.filesets import *
-from .support.logging import *
-from .support.options import *
-from .support.pip import *
-from .support.props import *
-from .support.nuspec import *
-
-BDIST_WININST_FILES_ONLY = FileNameSet("wininst-*", "bdist_wininst.py")
-BDIST_WININST_STUB = "PC/layout/support/distutils.command.bdist_wininst.py"
-
-TEST_PYDS_ONLY = FileStemSet("xxlimited", "_ctypes_test", "_test*")
-TEST_DIRS_ONLY = FileNameSet("test", "tests")
-
-IDLE_DIRS_ONLY = FileNameSet("idlelib")
-
-TCLTK_PYDS_ONLY = FileStemSet("tcl*", "tk*", "_tkinter")
-TCLTK_DIRS_ONLY = FileNameSet("tkinter", "turtledemo")
-TCLTK_FILES_ONLY = FileNameSet("turtle.py")
-
-VENV_DIRS_ONLY = FileNameSet("venv", "ensurepip")
-
-EXCLUDE_FROM_PYDS = FileStemSet("python*", "pyshellext", "vcruntime*")
-EXCLUDE_FROM_LIB = FileNameSet("*.pyc", "__pycache__", "*.pickle")
-EXCLUDE_FROM_PACKAGED_LIB = FileNameSet("readme.txt")
-EXCLUDE_FROM_COMPILE = FileNameSet("badsyntax_*", "bad_*")
-EXCLUDE_FROM_CATALOG = FileSuffixSet(".exe", ".pyd", ".dll")
-
-REQUIRED_DLLS = FileStemSet("libcrypto*", "libssl*", "libffi*")
-
-LIB2TO3_GRAMMAR_FILES = FileNameSet("Grammar.txt", "PatternGrammar.txt")
-
-PY_FILES = FileSuffixSet(".py")
-PYC_FILES = FileSuffixSet(".pyc")
-CAT_FILES = FileSuffixSet(".cat")
-CDF_FILES = FileSuffixSet(".cdf")
-
-DATA_DIRS = FileNameSet("data")
-
-TOOLS_DIRS = FileNameSet("scripts", "i18n", "pynche", "demo", "parser")
-TOOLS_FILES = FileSuffixSet(".py", ".pyw", ".txt")
-
-
-def copy_if_modified(src, dest):
- try:
- dest_stat = os.stat(dest)
- except FileNotFoundError:
- do_copy = True
- else:
- src_stat = os.stat(src)
- do_copy = (
- src_stat.st_mtime != dest_stat.st_mtime
- or src_stat.st_size != dest_stat.st_size
- )
-
- if do_copy:
- shutil.copy2(src, dest)
-
-
-def get_lib_layout(ns):
- def _c(f):
- if f in EXCLUDE_FROM_LIB:
- return False
- if f.is_dir():
- if f in TEST_DIRS_ONLY:
- return ns.include_tests
- if f in TCLTK_DIRS_ONLY:
- return ns.include_tcltk
- if f in IDLE_DIRS_ONLY:
- return ns.include_idle
- if f in VENV_DIRS_ONLY:
- return ns.include_venv
- else:
- if f in TCLTK_FILES_ONLY:
- return ns.include_tcltk
- if f in BDIST_WININST_FILES_ONLY:
- return ns.include_bdist_wininst
- return True
-
- for dest, src in rglob(ns.source / "Lib", "**/*", _c):
- yield dest, src
-
- if not ns.include_bdist_wininst:
- src = ns.source / BDIST_WININST_STUB
- yield Path("distutils/command/bdist_wininst.py"), src
-
-
-def get_tcltk_lib(ns):
- if not ns.include_tcltk:
- return
-
- tcl_lib = os.getenv("TCL_LIBRARY")
- if not tcl_lib or not os.path.isdir(tcl_lib):
- try:
- with open(ns.build / "TCL_LIBRARY.env", "r", encoding="utf-8-sig") as f:
- tcl_lib = f.read().strip()
- except FileNotFoundError:
- pass
- if not tcl_lib or not os.path.isdir(tcl_lib):
- log_warning("Failed to find TCL_LIBRARY")
- return
-
- for dest, src in rglob(Path(tcl_lib).parent, "**/*"):
- yield "tcl/{}".format(dest), src
-
-
-def get_layout(ns):
- def in_build(f, dest="", new_name=None):
- n, _, x = f.rpartition(".")
- n = new_name or n
- src = ns.build / f
- if ns.debug and src not in REQUIRED_DLLS:
- if not src.stem.endswith("_d"):
- src = src.parent / (src.stem + "_d" + src.suffix)
- if not n.endswith("_d"):
- n += "_d"
- f = n + "." + x
- yield dest + n + "." + x, src
- if ns.include_symbols:
- pdb = src.with_suffix(".pdb")
- if pdb.is_file():
- yield dest + n + ".pdb", pdb
- if ns.include_dev:
- lib = src.with_suffix(".lib")
- if lib.is_file():
- yield "libs/" + n + ".lib", lib
-
- if ns.include_appxmanifest:
- yield from in_build("python_uwp.exe", new_name="python{}".format(VER_DOT))
- yield from in_build("pythonw_uwp.exe", new_name="pythonw{}".format(VER_DOT))
- # For backwards compatibility, but we don't reference these ourselves.
- yield from in_build("python_uwp.exe", new_name="python")
- yield from in_build("pythonw_uwp.exe", new_name="pythonw")
- else:
- yield from in_build("python.exe", new_name="python")
- yield from in_build("pythonw.exe", new_name="pythonw")
-
- yield from in_build(PYTHON_DLL_NAME)
-
- if ns.include_launchers and ns.include_appxmanifest:
- if ns.include_pip:
- yield from in_build("python_uwp.exe", new_name="pip{}".format(VER_DOT))
- if ns.include_idle:
- yield from in_build("pythonw_uwp.exe", new_name="idle{}".format(VER_DOT))
-
- if ns.include_stable:
- yield from in_build(PYTHON_STABLE_DLL_NAME)
-
- for dest, src in rglob(ns.build, "vcruntime*.dll"):
- yield dest, src
-
- yield "LICENSE.txt", ns.build / "LICENSE.txt"
-
- for dest, src in rglob(ns.build, ("*.pyd", "*.dll")):
- if src.stem.endswith("_d") != bool(ns.debug) and src not in REQUIRED_DLLS:
- continue
- if src in EXCLUDE_FROM_PYDS:
- continue
- if src in TEST_PYDS_ONLY and not ns.include_tests:
- continue
- if src in TCLTK_PYDS_ONLY and not ns.include_tcltk:
- continue
-
- yield from in_build(src.name, dest="" if ns.flat_dlls else "DLLs/")
-
- if ns.zip_lib:
- zip_name = PYTHON_ZIP_NAME
- yield zip_name, ns.temp / zip_name
- else:
- for dest, src in get_lib_layout(ns):
- yield "Lib/{}".format(dest), src
-
- if ns.include_venv:
- yield from in_build("venvlauncher.exe", "Lib/venv/scripts/nt/", "python")
- yield from in_build("venvwlauncher.exe", "Lib/venv/scripts/nt/", "pythonw")
-
- if ns.include_tools:
-
- def _c(d):
- if d.is_dir():
- return d in TOOLS_DIRS
- return d in TOOLS_FILES
-
- for dest, src in rglob(ns.source / "Tools", "**/*", _c):
- yield "Tools/{}".format(dest), src
-
- if ns.include_underpth:
- yield PYTHON_PTH_NAME, ns.temp / PYTHON_PTH_NAME
-
- if ns.include_dev:
-
- for dest, src in rglob(ns.source / "Include", "**/*.h"):
- yield "include/{}".format(dest), src
- src = ns.source / "PC" / "pyconfig.h"
- yield "include/pyconfig.h", src
-
- for dest, src in get_tcltk_lib(ns):
- yield dest, src
-
- if ns.include_pip:
- for dest, src in get_pip_layout(ns):
- if not isinstance(src, tuple) and (
- src in EXCLUDE_FROM_LIB or src in EXCLUDE_FROM_PACKAGED_LIB
- ):
- continue
- yield dest, src
-
- if ns.include_chm:
- for dest, src in rglob(ns.doc_build / "htmlhelp", PYTHON_CHM_NAME):
- yield "Doc/{}".format(dest), src
-
- if ns.include_html_doc:
- for dest, src in rglob(ns.doc_build / "html", "**/*"):
- yield "Doc/html/{}".format(dest), src
-
- if ns.include_props:
- for dest, src in get_props_layout(ns):
- yield dest, src
-
- if ns.include_nuspec:
- for dest, src in get_nuspec_layout(ns):
- yield dest, src
-
- for dest, src in get_appx_layout(ns):
- yield dest, src
-
- if ns.include_cat:
- if ns.flat_dlls:
- yield ns.include_cat.name, ns.include_cat
- else:
- yield "DLLs/{}".format(ns.include_cat.name), ns.include_cat
-
-
-def _compile_one_py(src, dest, name, optimize, checked=True):
- import py_compile
-
- if dest is not None:
- dest = str(dest)
-
- mode = (
- py_compile.PycInvalidationMode.CHECKED_HASH
- if checked
- else py_compile.PycInvalidationMode.UNCHECKED_HASH
- )
-
- try:
- return Path(
- py_compile.compile(
- str(src),
- dest,
- str(name),
- doraise=True,
- optimize=optimize,
- invalidation_mode=mode,
- )
- )
- except py_compile.PyCompileError:
- log_warning("Failed to compile {}", src)
- return None
-
-
-# name argument added to address bpo-37641
-def _py_temp_compile(src, name, ns, dest_dir=None, checked=True):
- if not ns.precompile or src not in PY_FILES or src.parent in DATA_DIRS:
- return None
- dest = (dest_dir or ns.temp) / (src.stem + ".pyc")
- return _compile_one_py(src, dest, name, optimize=2, checked=checked)
-
-
-def _write_to_zip(zf, dest, src, ns, checked=True):
- pyc = _py_temp_compile(src, dest, ns, checked=checked)
- if pyc:
- try:
- zf.write(str(pyc), dest.with_suffix(".pyc"))
- finally:
- try:
- pyc.unlink()
- except:
- log_exception("Failed to delete {}", pyc)
- return
-
- if src in LIB2TO3_GRAMMAR_FILES:
- from lib2to3.pgen2.driver import load_grammar
-
- tmp = ns.temp / src.name
- try:
- shutil.copy(src, tmp)
- load_grammar(str(tmp))
- for f in ns.temp.glob(src.stem + "*.pickle"):
- zf.write(str(f), str(dest.parent / f.name))
- try:
- f.unlink()
- except:
- log_exception("Failed to delete {}", f)
- except:
- log_exception("Failed to compile {}", src)
- finally:
- try:
- tmp.unlink()
- except:
- log_exception("Failed to delete {}", tmp)
-
- zf.write(str(src), str(dest))
-
-
-def generate_source_files(ns):
- if ns.zip_lib:
- zip_name = PYTHON_ZIP_NAME
- zip_path = ns.temp / zip_name
- if zip_path.is_file():
- zip_path.unlink()
- elif zip_path.is_dir():
- log_error(
- "Cannot create zip file because a directory exists by the same name"
- )
- return
- log_info("Generating {} in {}", zip_name, ns.temp)
- ns.temp.mkdir(parents=True, exist_ok=True)
- with zipfile.ZipFile(zip_path, "w", zipfile.ZIP_DEFLATED) as zf:
- for dest, src in get_lib_layout(ns):
- _write_to_zip(zf, dest, src, ns, checked=False)
-
- if ns.include_underpth:
- log_info("Generating {} in {}", PYTHON_PTH_NAME, ns.temp)
- ns.temp.mkdir(parents=True, exist_ok=True)
- with open(ns.temp / PYTHON_PTH_NAME, "w", encoding="utf-8") as f:
- if ns.zip_lib:
- print(PYTHON_ZIP_NAME, file=f)
- if ns.include_pip:
- print("packages", file=f)
- else:
- print("Lib", file=f)
- print("Lib/site-packages", file=f)
- if not ns.flat_dlls:
- print("DLLs", file=f)
- print(".", file=f)
- print(file=f)
- print("# Uncomment to run site.main() automatically", file=f)
- print("#import site", file=f)
-
- if ns.include_pip:
- log_info("Extracting pip")
- extract_pip_files(ns)
-
-
-def _create_zip_file(ns):
- if not ns.zip:
- return None
-
- if ns.zip.is_file():
- try:
- ns.zip.unlink()
- except OSError:
- log_exception("Unable to remove {}", ns.zip)
- sys.exit(8)
- elif ns.zip.is_dir():
- log_error("Cannot create ZIP file because {} is a directory", ns.zip)
- sys.exit(8)
-
- ns.zip.parent.mkdir(parents=True, exist_ok=True)
- return zipfile.ZipFile(ns.zip, "w", zipfile.ZIP_DEFLATED)
-
-
-def copy_files(files, ns):
- if ns.copy:
- ns.copy.mkdir(parents=True, exist_ok=True)
-
- try:
- total = len(files)
- except TypeError:
- total = None
- count = 0
-
- zip_file = _create_zip_file(ns)
- try:
- need_compile = []
- in_catalog = []
-
- for dest, src in files:
- count += 1
- if count % 10 == 0:
- if total:
- log_info("Processed {:>4} of {} files", count, total)
- else:
- log_info("Processed {} files", count)
- log_debug("Processing {!s}", src)
-
- if isinstance(src, tuple):
- src, content = src
- if ns.copy:
- log_debug("Copy {} -> {}", src, ns.copy / dest)
- (ns.copy / dest).parent.mkdir(parents=True, exist_ok=True)
- with open(ns.copy / dest, "wb") as f:
- f.write(content)
- if ns.zip:
- log_debug("Zip {} into {}", src, ns.zip)
- zip_file.writestr(str(dest), content)
- continue
-
- if (
- ns.precompile
- and src in PY_FILES
- and src not in EXCLUDE_FROM_COMPILE
- and src.parent not in DATA_DIRS
- and os.path.normcase(str(dest)).startswith(os.path.normcase("Lib"))
- ):
- if ns.copy:
- need_compile.append((dest, ns.copy / dest))
- else:
- (ns.temp / "Lib" / dest).parent.mkdir(parents=True, exist_ok=True)
- copy_if_modified(src, ns.temp / "Lib" / dest)
- need_compile.append((dest, ns.temp / "Lib" / dest))
-
- if src not in EXCLUDE_FROM_CATALOG:
- in_catalog.append((src.name, src))
-
- if ns.copy:
- log_debug("Copy {} -> {}", src, ns.copy / dest)
- (ns.copy / dest).parent.mkdir(parents=True, exist_ok=True)
- try:
- copy_if_modified(src, ns.copy / dest)
- except shutil.SameFileError:
- pass
-
- if ns.zip:
- log_debug("Zip {} into {}", src, ns.zip)
- zip_file.write(src, str(dest))
-
- if need_compile:
- for dest, src in need_compile:
- compiled = [
- _compile_one_py(src, None, dest, optimize=0),
- _compile_one_py(src, None, dest, optimize=1),
- _compile_one_py(src, None, dest, optimize=2),
- ]
- for c in compiled:
- if not c:
- continue
- cdest = Path(dest).parent / Path(c).relative_to(src.parent)
- if ns.zip:
- log_debug("Zip {} into {}", c, ns.zip)
- zip_file.write(c, str(cdest))
- in_catalog.append((cdest.name, cdest))
-
- if ns.catalog:
- # Just write out the CDF now. Compilation and signing is
- # an extra step
- log_info("Generating {}", ns.catalog)
- ns.catalog.parent.mkdir(parents=True, exist_ok=True)
- write_catalog(ns.catalog, in_catalog)
-
- finally:
- if zip_file:
- zip_file.close()
-
-
-def main():
- parser = argparse.ArgumentParser()
- parser.add_argument("-v", help="Increase verbosity", action="count")
- parser.add_argument(
- "-s",
- "--source",
- metavar="dir",
- help="The directory containing the repository root",
- type=Path,
- default=None,
- )
- parser.add_argument(
- "-b", "--build", metavar="dir", help="Specify the build directory", type=Path
- )
- parser.add_argument(
- "--arch",
- metavar="architecture",
- help="Specify the target architecture",
- type=str,
- default=None,
- )
- parser.add_argument(
- "--doc-build",
- metavar="dir",
- help="Specify the docs build directory",
- type=Path,
- default=None,
- )
- parser.add_argument(
- "--copy",
- metavar="directory",
- help="The name of the directory to copy an extracted layout to",
- type=Path,
- default=None,
- )
- parser.add_argument(
- "--zip",
- metavar="file",
- help="The ZIP file to write all files to",
- type=Path,
- default=None,
- )
- parser.add_argument(
- "--catalog",
- metavar="file",
- help="The CDF file to write catalog entries to",
- type=Path,
- default=None,
- )
- parser.add_argument(
- "--log",
- metavar="file",
- help="Write all operations to the specified file",
- type=Path,
- default=None,
- )
- parser.add_argument(
- "-t",
- "--temp",
- metavar="file",
- help="A temporary working directory",
- type=Path,
- default=None,
- )
- parser.add_argument(
- "-d", "--debug", help="Include debug build", action="store_true"
- )
- parser.add_argument(
- "-p",
- "--precompile",
- help="Include .pyc files instead of .py",
- action="store_true",
- )
- parser.add_argument(
- "-z", "--zip-lib", help="Include library in a ZIP file", action="store_true"
- )
- parser.add_argument(
- "--flat-dlls", help="Does not create a DLLs directory", action="store_true"
- )
- parser.add_argument(
- "-a",
- "--include-all",
- help="Include all optional components",
- action="store_true",
- )
- parser.add_argument(
- "--include-cat",
- metavar="file",
- help="Specify the catalog file to include",
- type=Path,
- default=None,
- )
- for opt, help in get_argparse_options():
- parser.add_argument(opt, help=help, action="store_true")
-
- ns = parser.parse_args()
- update_presets(ns)
-
- ns.source = ns.source or (Path(__file__).resolve().parent.parent.parent)
- ns.build = ns.build or Path(sys.executable).parent
- ns.temp = ns.temp or Path(tempfile.mkdtemp())
- ns.doc_build = ns.doc_build or (ns.source / "Doc" / "build")
- if not ns.source.is_absolute():
- ns.source = (Path.cwd() / ns.source).resolve()
- if not ns.build.is_absolute():
- ns.build = (Path.cwd() / ns.build).resolve()
- if not ns.temp.is_absolute():
- ns.temp = (Path.cwd() / ns.temp).resolve()
- if not ns.doc_build.is_absolute():
- ns.doc_build = (Path.cwd() / ns.doc_build).resolve()
- if ns.include_cat and not ns.include_cat.is_absolute():
- ns.include_cat = (Path.cwd() / ns.include_cat).resolve()
- if not ns.arch:
- ns.arch = "amd64" if sys.maxsize > 2 ** 32 else "win32"
-
- if ns.copy and not ns.copy.is_absolute():
- ns.copy = (Path.cwd() / ns.copy).resolve()
- if ns.zip and not ns.zip.is_absolute():
- ns.zip = (Path.cwd() / ns.zip).resolve()
- if ns.catalog and not ns.catalog.is_absolute():
- ns.catalog = (Path.cwd() / ns.catalog).resolve()
-
- configure_logger(ns)
-
- log_info(
- """OPTIONS
-Source: {ns.source}
-Build: {ns.build}
-Temp: {ns.temp}
-Arch: {ns.arch}
-
-Copy to: {ns.copy}
-Zip to: {ns.zip}
-Catalog: {ns.catalog}""",
- ns=ns,
- )
-
- if ns.arch not in ("win32", "amd64", "arm32", "arm64"):
- log_error("--arch is not a valid value (win32, amd64, arm32, arm64)")
- return 4
- if ns.arch in ("arm32", "arm64"):
- for n in ("include_idle", "include_tcltk"):
- if getattr(ns, n):
- log_warning(f"Disabling --{n.replace('_', '-')} on unsupported platform")
- setattr(ns, n, False)
-
- if ns.include_idle and not ns.include_tcltk:
- log_warning("Assuming --include-tcltk to support --include-idle")
- ns.include_tcltk = True
-
- try:
- generate_source_files(ns)
- files = list(get_layout(ns))
- copy_files(files, ns)
- except KeyboardInterrupt:
- log_info("Interrupted by Ctrl+C")
- return 3
- except SystemExit:
- raise
- except:
- log_exception("Unhandled error")
-
- if error_was_logged():
- log_error("Errors occurred.")
- return 1
-
-
-if __name__ == "__main__":
- sys.exit(int(main() or 0))
diff --git a/PC/layout/support/__init__.py b/PC/layout/support/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/PC/layout/support/__init__.py
+++ /dev/null
diff --git a/PC/layout/support/appxmanifest.py b/PC/layout/support/appxmanifest.py
deleted file mode 100644
index 9a7439d..0000000
--- a/PC/layout/support/appxmanifest.py
+++ /dev/null
@@ -1,506 +0,0 @@
-"""
-File generation for APPX/MSIX manifests.
-"""
-
-__author__ = "Steve Dower <steve.dower@python.org>"
-__version__ = "3.8"
-
-
-import collections
-import ctypes
-import io
-import os
-import sys
-
-from pathlib import Path, PureWindowsPath
-from xml.etree import ElementTree as ET
-
-from .constants import *
-
-__all__ = ["get_appx_layout"]
-
-
-APPX_DATA = dict(
- Name="PythonSoftwareFoundation.Python.{}".format(VER_DOT),
- Version="{}.{}.{}.0".format(VER_MAJOR, VER_MINOR, VER_FIELD3),
- Publisher=os.getenv(
- "APPX_DATA_PUBLISHER", "CN=4975D53F-AA7E-49A5-8B49-EA4FDC1BB66B"
- ),
- DisplayName="Python {}".format(VER_DOT),
- Description="The Python {} runtime and console.".format(VER_DOT),
-)
-
-APPX_PLATFORM_DATA = dict(
- _keys=("ProcessorArchitecture",),
- win32=("x86",),
- amd64=("x64",),
- arm32=("arm",),
- arm64=("arm64",),
-)
-
-PYTHON_VE_DATA = dict(
- DisplayName="Python {}".format(VER_DOT),
- Description="Python interactive console",
- Square150x150Logo="_resources/pythonx150.png",
- Square44x44Logo="_resources/pythonx44.png",
- BackgroundColor="transparent",
-)
-
-PYTHONW_VE_DATA = dict(
- DisplayName="Python {} (Windowed)".format(VER_DOT),
- Description="Python windowed app launcher",
- Square150x150Logo="_resources/pythonwx150.png",
- Square44x44Logo="_resources/pythonwx44.png",
- BackgroundColor="transparent",
- AppListEntry="none",
-)
-
-PIP_VE_DATA = dict(
- DisplayName="pip (Python {})".format(VER_DOT),
- Description="pip package manager for Python {}".format(VER_DOT),
- Square150x150Logo="_resources/pythonx150.png",
- Square44x44Logo="_resources/pythonx44.png",
- BackgroundColor="transparent",
- AppListEntry="none",
-)
-
-IDLE_VE_DATA = dict(
- DisplayName="IDLE (Python {})".format(VER_DOT),
- Description="IDLE editor for Python {}".format(VER_DOT),
- Square150x150Logo="_resources/pythonwx150.png",
- Square44x44Logo="_resources/pythonwx44.png",
- BackgroundColor="transparent",
-)
-
-PY_PNG = "_resources/py.png"
-
-APPXMANIFEST_NS = {
- "": "http://schemas.microsoft.com/appx/manifest/foundation/windows10",
- "m": "http://schemas.microsoft.com/appx/manifest/foundation/windows10",
- "uap": "http://schemas.microsoft.com/appx/manifest/uap/windows10",
- "rescap": "http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities",
- "rescap4": "http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities/4",
- "desktop4": "http://schemas.microsoft.com/appx/manifest/desktop/windows10/4",
- "desktop6": "http://schemas.microsoft.com/appx/manifest/desktop/windows10/6",
- "uap3": "http://schemas.microsoft.com/appx/manifest/uap/windows10/3",
- "uap4": "http://schemas.microsoft.com/appx/manifest/uap/windows10/4",
- "uap5": "http://schemas.microsoft.com/appx/manifest/uap/windows10/5",
-}
-
-APPXMANIFEST_TEMPLATE = """<?xml version="1.0" encoding="utf-8"?>
-<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
- xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
- xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
- xmlns:rescap4="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities/4"
- xmlns:desktop4="http://schemas.microsoft.com/appx/manifest/desktop/windows10/4"
- xmlns:uap4="http://schemas.microsoft.com/appx/manifest/uap/windows10/4"
- xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5">
- <Identity Name=""
- Version=""
- Publisher=""
- ProcessorArchitecture="" />
- <Properties>
- <DisplayName></DisplayName>
- <PublisherDisplayName>Python Software Foundation</PublisherDisplayName>
- <Description></Description>
- <Logo>_resources/pythonx50.png</Logo>
- </Properties>
- <Resources>
- <Resource Language="en-US" />
- </Resources>
- <Dependencies>
- <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="" />
- </Dependencies>
- <Capabilities>
- <rescap:Capability Name="runFullTrust"/>
- </Capabilities>
- <Applications>
- </Applications>
- <Extensions>
- </Extensions>
-</Package>"""
-
-
-RESOURCES_XML_TEMPLATE = r"""<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<!--This file is input for makepri.exe. It should be excluded from the final package.-->
-<resources targetOsVersion="10.0.0" majorVersion="1">
- <packaging>
- <autoResourcePackage qualifier="Language"/>
- <autoResourcePackage qualifier="Scale"/>
- <autoResourcePackage qualifier="DXFeatureLevel"/>
- </packaging>
- <index root="\" startIndexAt="\">
- <default>
- <qualifier name="Language" value="en-US"/>
- <qualifier name="Contrast" value="standard"/>
- <qualifier name="Scale" value="100"/>
- <qualifier name="HomeRegion" value="001"/>
- <qualifier name="TargetSize" value="256"/>
- <qualifier name="LayoutDirection" value="LTR"/>
- <qualifier name="Theme" value="dark"/>
- <qualifier name="AlternateForm" value=""/>
- <qualifier name="DXFeatureLevel" value="DX9"/>
- <qualifier name="Configuration" value=""/>
- <qualifier name="DeviceFamily" value="Universal"/>
- <qualifier name="Custom" value=""/>
- </default>
- <indexer-config type="folder" foldernameAsQualifier="true" filenameAsQualifier="true" qualifierDelimiter="$"/>
- <indexer-config type="resw" convertDotsToSlashes="true" initialPath=""/>
- <indexer-config type="resjson" initialPath=""/>
- <indexer-config type="PRI"/>
- </index>
-</resources>"""
-
-
-SCCD_FILENAME = "PC/classicAppCompat.sccd"
-
-SPECIAL_LOOKUP = object()
-
-REGISTRY = {
- "HKCU\\Software\\Python\\PythonCore": {
- VER_DOT: {
- "DisplayName": APPX_DATA["DisplayName"],
- "SupportUrl": "https://www.python.org/",
- "SysArchitecture": SPECIAL_LOOKUP,
- "SysVersion": VER_DOT,
- "Version": "{}.{}.{}".format(VER_MAJOR, VER_MINOR, VER_MICRO),
- "InstallPath": {
- "": "[{AppVPackageRoot}]",
- "ExecutablePath": "[{{AppVPackageRoot}}]\\python{}.exe".format(VER_DOT),
- "WindowedExecutablePath": "[{{AppVPackageRoot}}]\\pythonw{}.exe".format(
- VER_DOT
- ),
- },
- "Help": {
- "Main Python Documentation": {
- "_condition": lambda ns: ns.include_chm,
- "": "[{{AppVPackageRoot}}]\\Doc\\{}".format(PYTHON_CHM_NAME),
- },
- "Local Python Documentation": {
- "_condition": lambda ns: ns.include_html_doc,
- "": "[{AppVPackageRoot}]\\Doc\\html\\index.html",
- },
- "Online Python Documentation": {
- "": "https://docs.python.org/{}".format(VER_DOT)
- },
- },
- "Idle": {
- "_condition": lambda ns: ns.include_idle,
- "": "[{AppVPackageRoot}]\\Lib\\idlelib\\idle.pyw",
- },
- }
- }
-}
-
-
-def get_packagefamilyname(name, publisher_id):
- class PACKAGE_ID(ctypes.Structure):
- _fields_ = [
- ("reserved", ctypes.c_uint32),
- ("processorArchitecture", ctypes.c_uint32),
- ("version", ctypes.c_uint64),
- ("name", ctypes.c_wchar_p),
- ("publisher", ctypes.c_wchar_p),
- ("resourceId", ctypes.c_wchar_p),
- ("publisherId", ctypes.c_wchar_p),
- ]
- _pack_ = 4
-
- pid = PACKAGE_ID(0, 0, 0, name, publisher_id, None, None)
- result = ctypes.create_unicode_buffer(256)
- result_len = ctypes.c_uint32(256)
- r = ctypes.windll.kernel32.PackageFamilyNameFromId(
- pid, ctypes.byref(result_len), result
- )
- if r:
- raise OSError(r, "failed to get package family name")
- return result.value[: result_len.value]
-
-
-def _fixup_sccd(ns, sccd, new_hash=None):
- if not new_hash:
- return sccd
-
- NS = dict(s="http://schemas.microsoft.com/appx/2016/sccd")
- with open(sccd, "rb") as f:
- xml = ET.parse(f)
-
- pfn = get_packagefamilyname(APPX_DATA["Name"], APPX_DATA["Publisher"])
-
- ae = xml.find("s:AuthorizedEntities", NS)
- ae.clear()
-
- e = ET.SubElement(ae, ET.QName(NS["s"], "AuthorizedEntity"))
- e.set("AppPackageFamilyName", pfn)
- e.set("CertificateSignatureHash", new_hash)
-
- for e in xml.findall("s:Catalog", NS):
- e.text = "FFFF"
-
- sccd = ns.temp / sccd.name
- sccd.parent.mkdir(parents=True, exist_ok=True)
- with open(sccd, "wb") as f:
- xml.write(f, encoding="utf-8")
-
- return sccd
-
-
-def find_or_add(xml, element, attr=None, always_add=False):
- if always_add:
- e = None
- else:
- q = element
- if attr:
- q += "[@{}='{}']".format(*attr)
- e = xml.find(q, APPXMANIFEST_NS)
- if e is None:
- prefix, _, name = element.partition(":")
- name = ET.QName(APPXMANIFEST_NS[prefix or ""], name)
- e = ET.SubElement(xml, name)
- if attr:
- e.set(*attr)
- return e
-
-
-def _get_app(xml, appid):
- if appid:
- app = xml.find(
- "m:Applications/m:Application[@Id='{}']".format(appid), APPXMANIFEST_NS
- )
- if app is None:
- raise LookupError(appid)
- else:
- app = xml
- return app
-
-
-def add_visual(xml, appid, data):
- app = _get_app(xml, appid)
- e = find_or_add(app, "uap:VisualElements")
- for i in data.items():
- e.set(*i)
- return e
-
-
-def add_alias(xml, appid, alias, subsystem="windows"):
- app = _get_app(xml, appid)
- e = find_or_add(app, "m:Extensions")
- e = find_or_add(e, "uap5:Extension", ("Category", "windows.appExecutionAlias"))
- e = find_or_add(e, "uap5:AppExecutionAlias")
- e.set(ET.QName(APPXMANIFEST_NS["desktop4"], "Subsystem"), subsystem)
- e = find_or_add(e, "uap5:ExecutionAlias", ("Alias", alias))
-
-
-def add_file_type(xml, appid, name, suffix, parameters='"%1"', info=None, logo=None):
- app = _get_app(xml, appid)
- e = find_or_add(app, "m:Extensions")
- e = find_or_add(e, "uap3:Extension", ("Category", "windows.fileTypeAssociation"))
- e = find_or_add(e, "uap3:FileTypeAssociation", ("Name", name))
- e.set("Parameters", parameters)
- if info:
- find_or_add(e, "uap:DisplayName").text = info
- if logo:
- find_or_add(e, "uap:Logo").text = logo
- e = find_or_add(e, "uap:SupportedFileTypes")
- if isinstance(suffix, str):
- suffix = [suffix]
- for s in suffix:
- ET.SubElement(e, ET.QName(APPXMANIFEST_NS["uap"], "FileType")).text = s
-
-
-def add_application(
- ns, xml, appid, executable, aliases, visual_element, subsystem, file_types
-):
- node = xml.find("m:Applications", APPXMANIFEST_NS)
- suffix = "_d.exe" if ns.debug else ".exe"
- app = ET.SubElement(
- node,
- ET.QName(APPXMANIFEST_NS[""], "Application"),
- {
- "Id": appid,
- "Executable": executable + suffix,
- "EntryPoint": "Windows.FullTrustApplication",
- ET.QName(APPXMANIFEST_NS["desktop4"], "SupportsMultipleInstances"): "true",
- },
- )
- if visual_element:
- add_visual(app, None, visual_element)
- for alias in aliases:
- add_alias(app, None, alias + suffix, subsystem)
- if file_types:
- add_file_type(app, None, *file_types)
- return app
-
-
-def _get_registry_entries(ns, root="", d=None):
- r = root if root else PureWindowsPath("")
- if d is None:
- d = REGISTRY
- for key, value in d.items():
- if key == "_condition":
- continue
- if value is SPECIAL_LOOKUP:
- if key == "SysArchitecture":
- value = {
- "win32": "32bit",
- "amd64": "64bit",
- "arm32": "32bit",
- "arm64": "64bit",
- }[ns.arch]
- else:
- raise ValueError(f"Key '{key}' unhandled for special lookup")
- if isinstance(value, dict):
- cond = value.get("_condition")
- if cond and not cond(ns):
- continue
- fullkey = r
- for part in PureWindowsPath(key).parts:
- fullkey /= part
- if len(fullkey.parts) > 1:
- yield str(fullkey), None, None
- yield from _get_registry_entries(ns, fullkey, value)
- elif len(r.parts) > 1:
- yield str(r), key, value
-
-
-def add_registry_entries(ns, xml):
- e = find_or_add(xml, "m:Extensions")
- e = find_or_add(e, "rescap4:Extension")
- e.set("Category", "windows.classicAppCompatKeys")
- e.set("EntryPoint", "Windows.FullTrustApplication")
- e = ET.SubElement(e, ET.QName(APPXMANIFEST_NS["rescap4"], "ClassicAppCompatKeys"))
- for name, valuename, value in _get_registry_entries(ns):
- k = ET.SubElement(
- e, ET.QName(APPXMANIFEST_NS["rescap4"], "ClassicAppCompatKey")
- )
- k.set("Name", name)
- if value:
- k.set("ValueName", valuename)
- k.set("Value", value)
- k.set("ValueType", "REG_SZ")
-
-
-def disable_registry_virtualization(xml):
- e = find_or_add(xml, "m:Properties")
- e = find_or_add(e, "desktop6:RegistryWriteVirtualization")
- e.text = "disabled"
- e = find_or_add(xml, "m:Capabilities")
- e = find_or_add(e, "rescap:Capability", ("Name", "unvirtualizedResources"))
-
-
-def get_appxmanifest(ns):
- for k, v in APPXMANIFEST_NS.items():
- ET.register_namespace(k, v)
- ET.register_namespace("", APPXMANIFEST_NS["m"])
-
- xml = ET.parse(io.StringIO(APPXMANIFEST_TEMPLATE))
- NS = APPXMANIFEST_NS
- QN = ET.QName
-
- data = dict(APPX_DATA)
- for k, v in zip(APPX_PLATFORM_DATA["_keys"], APPX_PLATFORM_DATA[ns.arch]):
- data[k] = v
-
- node = xml.find("m:Identity", NS)
- for k in node.keys():
- value = data.get(k)
- if value:
- node.set(k, value)
-
- for node in xml.find("m:Properties", NS):
- value = data.get(node.tag.rpartition("}")[2])
- if value:
- node.text = value
-
- winver = sys.getwindowsversion()[:3]
- if winver < (10, 0, 17763):
- winver = 10, 0, 17763
- find_or_add(xml, "m:Dependencies/m:TargetDeviceFamily").set(
- "MaxVersionTested", "{}.{}.{}.0".format(*winver)
- )
-
- if winver > (10, 0, 17763):
- disable_registry_virtualization(xml)
-
- app = add_application(
- ns,
- xml,
- "Python",
- "python{}".format(VER_DOT),
- ["python", "python{}".format(VER_MAJOR), "python{}".format(VER_DOT)],
- PYTHON_VE_DATA,
- "console",
- ("python.file", [".py"], '"%1"', "Python File", PY_PNG),
- )
-
- add_application(
- ns,
- xml,
- "PythonW",
- "pythonw{}".format(VER_DOT),
- ["pythonw", "pythonw{}".format(VER_MAJOR), "pythonw{}".format(VER_DOT)],
- PYTHONW_VE_DATA,
- "windows",
- ("python.windowedfile", [".pyw"], '"%1"', "Python File (no console)", PY_PNG),
- )
-
- if ns.include_pip and ns.include_launchers:
- add_application(
- ns,
- xml,
- "Pip",
- "pip{}".format(VER_DOT),
- ["pip", "pip{}".format(VER_MAJOR), "pip{}".format(VER_DOT)],
- PIP_VE_DATA,
- "console",
- ("python.wheel", [".whl"], 'install "%1"', "Python Wheel"),
- )
-
- if ns.include_idle and ns.include_launchers:
- add_application(
- ns,
- xml,
- "Idle",
- "idle{}".format(VER_DOT),
- ["idle", "idle{}".format(VER_MAJOR), "idle{}".format(VER_DOT)],
- IDLE_VE_DATA,
- "windows",
- None,
- )
-
- if (ns.source / SCCD_FILENAME).is_file():
- add_registry_entries(ns, xml)
- node = xml.find("m:Capabilities", NS)
- node = ET.SubElement(node, QN(NS["uap4"], "CustomCapability"))
- node.set("Name", "Microsoft.classicAppCompat_8wekyb3d8bbwe")
-
- buffer = io.BytesIO()
- xml.write(buffer, encoding="utf-8", xml_declaration=True)
- return buffer.getbuffer()
-
-
-def get_resources_xml(ns):
- return RESOURCES_XML_TEMPLATE.encode("utf-8")
-
-
-def get_appx_layout(ns):
- if not ns.include_appxmanifest:
- return
-
- yield "AppxManifest.xml", ("AppxManifest.xml", get_appxmanifest(ns))
- yield "_resources.xml", ("_resources.xml", get_resources_xml(ns))
- icons = ns.source / "PC" / "icons"
- for px in [44, 50, 150]:
- src = icons / "pythonx{}.png".format(px)
- yield f"_resources/pythonx{px}.png", src
- yield f"_resources/pythonx{px}$targetsize-{px}_altform-unplated.png", src
- for px in [44, 150]:
- src = icons / "pythonwx{}.png".format(px)
- yield f"_resources/pythonwx{px}.png", src
- yield f"_resources/pythonwx{px}$targetsize-{px}_altform-unplated.png", src
- yield f"_resources/py.png", icons / "py.png"
- sccd = ns.source / SCCD_FILENAME
- if sccd.is_file():
- # This should only be set for side-loading purposes.
- sccd = _fixup_sccd(ns, sccd, os.getenv("APPX_DATA_SHA256"))
- yield sccd.name, sccd
diff --git a/PC/layout/support/catalog.py b/PC/layout/support/catalog.py
deleted file mode 100644
index 4312118..0000000
--- a/PC/layout/support/catalog.py
+++ /dev/null
@@ -1,44 +0,0 @@
-"""
-File generation for catalog signing non-binary contents.
-"""
-
-__author__ = "Steve Dower <steve.dower@python.org>"
-__version__ = "3.8"
-
-
-import sys
-
-__all__ = ["PYTHON_CAT_NAME", "PYTHON_CDF_NAME"]
-
-
-def public(f):
- __all__.append(f.__name__)
- return f
-
-
-PYTHON_CAT_NAME = "python.cat"
-PYTHON_CDF_NAME = "python.cdf"
-
-
-CATALOG_TEMPLATE = r"""[CatalogHeader]
-Name={target.stem}.cat
-ResultDir={target.parent}
-PublicVersion=1
-CatalogVersion=2
-HashAlgorithms=SHA256
-PageHashes=false
-EncodingType=
-
-[CatalogFiles]
-"""
-
-
-def can_sign(file):
- return file.is_file() and file.stat().st_size
-
-
-@public
-def write_catalog(target, files):
- with target.open("w", encoding="utf-8") as cat:
- cat.write(CATALOG_TEMPLATE.format(target=target))
- cat.writelines("<HASH>{}={}\n".format(n, f) for n, f in files if can_sign(f))
diff --git a/PC/layout/support/constants.py b/PC/layout/support/constants.py
deleted file mode 100644
index 6cf0fe1..0000000
--- a/PC/layout/support/constants.py
+++ /dev/null
@@ -1,42 +0,0 @@
-"""
-Constants for generating the layout.
-"""
-
-__author__ = "Steve Dower <steve.dower@python.org>"
-__version__ = "3.8"
-
-import os
-import re
-import struct
-import sys
-
-
-def _unpack_hexversion():
- try:
- hexversion = int(os.getenv("PYTHON_HEXVERSION"), 16)
- except (TypeError, ValueError):
- hexversion = sys.hexversion
- return struct.pack(">i", sys.hexversion)
-
-
-def _get_suffix(field4):
- name = {0xA0: "a", 0xB0: "b", 0xC0: "rc"}.get(field4 & 0xF0, "")
- if name:
- serial = field4 & 0x0F
- return f"{name}{serial}"
- return ""
-
-
-VER_MAJOR, VER_MINOR, VER_MICRO, VER_FIELD4 = _unpack_hexversion()
-VER_SUFFIX = _get_suffix(VER_FIELD4)
-VER_FIELD3 = VER_MICRO << 8 | VER_FIELD4
-VER_DOT = "{}.{}".format(VER_MAJOR, VER_MINOR)
-
-PYTHON_DLL_NAME = "python{}{}.dll".format(VER_MAJOR, VER_MINOR)
-PYTHON_STABLE_DLL_NAME = "python{}.dll".format(VER_MAJOR)
-PYTHON_ZIP_NAME = "python{}{}.zip".format(VER_MAJOR, VER_MINOR)
-PYTHON_PTH_NAME = "python{}{}._pth".format(VER_MAJOR, VER_MINOR)
-
-PYTHON_CHM_NAME = "python{}{}{}{}.chm".format(
- VER_MAJOR, VER_MINOR, VER_MICRO, VER_SUFFIX
-)
diff --git a/PC/layout/support/distutils.command.bdist_wininst.py b/PC/layout/support/distutils.command.bdist_wininst.py
deleted file mode 100644
index 6e9b49f..0000000
--- a/PC/layout/support/distutils.command.bdist_wininst.py
+++ /dev/null
@@ -1,25 +0,0 @@
-"""distutils.command.bdist_wininst
-
-Suppress the 'bdist_wininst' command, while still allowing
-setuptools to import it without breaking."""
-
-from distutils.core import Command
-from distutils.errors import DistutilsPlatformError
-
-
-class bdist_wininst(Command):
- description = "create an executable installer for MS Windows"
-
- # Marker for tests that we have the unsupported bdist_wininst
- _unsupported = True
-
- def initialize_options(self):
- pass
-
- def finalize_options(self):
- pass
-
- def run(self):
- raise DistutilsPlatformError(
- "bdist_wininst is not supported in this Python distribution"
- )
diff --git a/PC/layout/support/filesets.py b/PC/layout/support/filesets.py
deleted file mode 100644
index 47f727c..0000000
--- a/PC/layout/support/filesets.py
+++ /dev/null
@@ -1,100 +0,0 @@
-"""
-File sets and globbing helper for make_layout.
-"""
-
-__author__ = "Steve Dower <steve.dower@python.org>"
-__version__ = "3.8"
-
-import os
-
-
-class FileStemSet:
- def __init__(self, *patterns):
- self._names = set()
- self._prefixes = []
- self._suffixes = []
- for p in map(os.path.normcase, patterns):
- if p.endswith("*"):
- self._prefixes.append(p[:-1])
- elif p.startswith("*"):
- self._suffixes.append(p[1:])
- else:
- self._names.add(p)
-
- def _make_name(self, f):
- return os.path.normcase(f.stem)
-
- def __contains__(self, f):
- bn = self._make_name(f)
- return (
- bn in self._names
- or any(map(bn.startswith, self._prefixes))
- or any(map(bn.endswith, self._suffixes))
- )
-
-
-class FileNameSet(FileStemSet):
- def _make_name(self, f):
- return os.path.normcase(f.name)
-
-
-class FileSuffixSet:
- def __init__(self, *patterns):
- self._names = set()
- self._prefixes = []
- self._suffixes = []
- for p in map(os.path.normcase, patterns):
- if p.startswith("*."):
- self._names.add(p[1:])
- elif p.startswith("*"):
- self._suffixes.append(p[1:])
- elif p.endswith("*"):
- self._prefixes.append(p[:-1])
- elif p.startswith("."):
- self._names.add(p)
- else:
- self._names.add("." + p)
-
- def _make_name(self, f):
- return os.path.normcase(f.suffix)
-
- def __contains__(self, f):
- bn = self._make_name(f)
- return (
- bn in self._names
- or any(map(bn.startswith, self._prefixes))
- or any(map(bn.endswith, self._suffixes))
- )
-
-
-def _rglob(root, pattern, condition):
- dirs = [root]
- recurse = pattern[:3] in {"**/", "**\\"}
- if recurse:
- pattern = pattern[3:]
-
- while dirs:
- d = dirs.pop(0)
- if recurse:
- dirs.extend(
- filter(
- condition, (type(root)(f2) for f2 in os.scandir(d) if f2.is_dir())
- )
- )
- yield from (
- (f.relative_to(root), f)
- for f in d.glob(pattern)
- if f.is_file() and condition(f)
- )
-
-
-def _return_true(f):
- return True
-
-
-def rglob(root, patterns, condition=None):
- if isinstance(patterns, tuple):
- for p in patterns:
- yield from _rglob(root, p, condition or _return_true)
- else:
- yield from _rglob(root, patterns, condition or _return_true)
diff --git a/PC/layout/support/logging.py b/PC/layout/support/logging.py
deleted file mode 100644
index 30869b9..0000000
--- a/PC/layout/support/logging.py
+++ /dev/null
@@ -1,93 +0,0 @@
-"""
-Logging support for make_layout.
-"""
-
-__author__ = "Steve Dower <steve.dower@python.org>"
-__version__ = "3.8"
-
-import logging
-import sys
-
-__all__ = []
-
-LOG = None
-HAS_ERROR = False
-
-
-def public(f):
- __all__.append(f.__name__)
- return f
-
-
-@public
-def configure_logger(ns):
- global LOG
- if LOG:
- return
-
- LOG = logging.getLogger("make_layout")
- LOG.level = logging.DEBUG
-
- if ns.v:
- s_level = max(logging.ERROR - ns.v * 10, logging.DEBUG)
- f_level = max(logging.WARNING - ns.v * 10, logging.DEBUG)
- else:
- s_level = logging.ERROR
- f_level = logging.INFO
-
- handler = logging.StreamHandler(sys.stdout)
- handler.setFormatter(logging.Formatter("{levelname:8s} {message}", style="{"))
- handler.setLevel(s_level)
- LOG.addHandler(handler)
-
- if ns.log:
- handler = logging.FileHandler(ns.log, encoding="utf-8", delay=True)
- handler.setFormatter(
- logging.Formatter("[{asctime}]{levelname:8s}: {message}", style="{")
- )
- handler.setLevel(f_level)
- LOG.addHandler(handler)
-
-
-class BraceMessage:
- def __init__(self, fmt, *args, **kwargs):
- self.fmt = fmt
- self.args = args
- self.kwargs = kwargs
-
- def __str__(self):
- return self.fmt.format(*self.args, **self.kwargs)
-
-
-@public
-def log_debug(msg, *args, **kwargs):
- return LOG.debug(BraceMessage(msg, *args, **kwargs))
-
-
-@public
-def log_info(msg, *args, **kwargs):
- return LOG.info(BraceMessage(msg, *args, **kwargs))
-
-
-@public
-def log_warning(msg, *args, **kwargs):
- return LOG.warning(BraceMessage(msg, *args, **kwargs))
-
-
-@public
-def log_error(msg, *args, **kwargs):
- global HAS_ERROR
- HAS_ERROR = True
- return LOG.error(BraceMessage(msg, *args, **kwargs))
-
-
-@public
-def log_exception(msg, *args, **kwargs):
- global HAS_ERROR
- HAS_ERROR = True
- return LOG.exception(BraceMessage(msg, *args, **kwargs))
-
-
-@public
-def error_was_logged():
- return HAS_ERROR
diff --git a/PC/layout/support/nuspec.py b/PC/layout/support/nuspec.py
deleted file mode 100644
index b85095c..0000000
--- a/PC/layout/support/nuspec.py
+++ /dev/null
@@ -1,72 +0,0 @@
-"""
-Provides .props file.
-"""
-
-import os
-
-from .constants import *
-
-__all__ = ["get_nuspec_layout"]
-
-PYTHON_NUSPEC_NAME = "python.nuspec"
-
-NUSPEC_DATA = {
- "PYTHON_TAG": VER_DOT,
- "PYTHON_VERSION": os.getenv("PYTHON_NUSPEC_VERSION"),
- "FILELIST": r' <file src="**\*" target="tools" />',
-}
-
-NUSPEC_PLATFORM_DATA = dict(
- _keys=("PYTHON_BITNESS", "PACKAGENAME", "PACKAGETITLE"),
- win32=("32-bit", "pythonx86", "Python (32-bit)"),
- amd64=("64-bit", "python", "Python"),
- arm32=("ARM", "pythonarm", "Python (ARM)"),
- arm64=("ARM64", "pythonarm64", "Python (ARM64)"),
-)
-
-if not NUSPEC_DATA["PYTHON_VERSION"]:
- NUSPEC_DATA["PYTHON_VERSION"] = "{}.{}{}{}".format(
- VER_DOT, VER_MICRO, "-" if VER_SUFFIX else "", VER_SUFFIX
- )
-
-FILELIST_WITH_PROPS = r""" <file src="**\*" exclude="python.props" target="tools" />
- <file src="python.props" target="build\native" />"""
-
-NUSPEC_TEMPLATE = r"""<?xml version="1.0"?>
-<package>
- <metadata>
- <id>{PACKAGENAME}</id>
- <title>{PACKAGETITLE}</title>
- <version>{PYTHON_VERSION}</version>
- <authors>Python Software Foundation</authors>
- <license type="file">tools\LICENSE.txt</license>
- <projectUrl>https://www.python.org/</projectUrl>
- <description>Installs {PYTHON_BITNESS} Python for use in build scenarios.</description>
- <iconUrl>https://www.python.org/static/favicon.ico</iconUrl>
- <tags>python</tags>
- </metadata>
- <files>
-{FILELIST}
- </files>
-</package>
-"""
-
-
-def _get_nuspec_data_overrides(ns):
- for k, v in zip(NUSPEC_PLATFORM_DATA["_keys"], NUSPEC_PLATFORM_DATA[ns.arch]):
- ev = os.getenv("PYTHON_NUSPEC_" + k)
- if ev:
- yield k, ev
- yield k, v
-
-
-def get_nuspec_layout(ns):
- if ns.include_all or ns.include_nuspec:
- data = dict(NUSPEC_DATA)
- for k, v in _get_nuspec_data_overrides(ns):
- if not data.get(k):
- data[k] = v
- if ns.include_all or ns.include_props:
- data["FILELIST"] = FILELIST_WITH_PROPS
- nuspec = NUSPEC_TEMPLATE.format_map(data)
- yield "python.nuspec", ("python.nuspec", nuspec.encode("utf-8"))
diff --git a/PC/layout/support/options.py b/PC/layout/support/options.py
deleted file mode 100644
index 5e1543b..0000000
--- a/PC/layout/support/options.py
+++ /dev/null
@@ -1,135 +0,0 @@
-"""
-List of optional components.
-"""
-
-__author__ = "Steve Dower <steve.dower@python.org>"
-__version__ = "3.8"
-
-
-__all__ = []
-
-
-def public(f):
- __all__.append(f.__name__)
- return f
-
-
-OPTIONS = {
- "stable": {"help": "stable ABI stub"},
- "pip": {"help": "pip"},
- "pip-user": {"help": "pip.ini file for default --user"},
- "distutils": {"help": "distutils"},
- "tcltk": {"help": "Tcl, Tk and tkinter"},
- "idle": {"help": "Idle"},
- "tests": {"help": "test suite"},
- "tools": {"help": "tools"},
- "venv": {"help": "venv"},
- "dev": {"help": "headers and libs"},
- "symbols": {"help": "symbols"},
- "bdist-wininst": {"help": "bdist_wininst support"},
- "underpth": {"help": "a python._pth file", "not-in-all": True},
- "launchers": {"help": "specific launchers"},
- "appxmanifest": {"help": "an appxmanifest"},
- "props": {"help": "a python.props file"},
- "nuspec": {"help": "a python.nuspec file"},
- "chm": {"help": "the CHM documentation"},
- "html-doc": {"help": "the HTML documentation"},
-}
-
-
-PRESETS = {
- "appx": {
- "help": "APPX package",
- "options": [
- "stable",
- "pip",
- "pip-user",
- "distutils",
- "tcltk",
- "idle",
- "venv",
- "dev",
- "launchers",
- "appxmanifest",
- # XXX: Disabled for now "precompile",
- ],
- },
- "nuget": {
- "help": "nuget package",
- "options": [
- "dev",
- "tools",
- "pip",
- "stable",
- "distutils",
- "venv",
- "props",
- "nuspec",
- ],
- },
- "iot": {"help": "Windows IoT Core", "options": ["stable", "pip"]},
- "default": {
- "help": "development kit package",
- "options": [
- "stable",
- "pip",
- "distutils",
- "tcltk",
- "idle",
- "tests",
- "tools",
- "venv",
- "dev",
- "symbols",
- "bdist-wininst",
- "chm",
- ],
- },
- "embed": {
- "help": "embeddable package",
- "options": ["stable", "zip-lib", "flat-dlls", "underpth", "precompile"],
- },
-}
-
-
-@public
-def get_argparse_options():
- for opt, info in OPTIONS.items():
- help = "When specified, includes {}".format(info["help"])
- if info.get("not-in-all"):
- help = "{}. Not affected by --include-all".format(help)
-
- yield "--include-{}".format(opt), help
-
- for opt, info in PRESETS.items():
- help = "When specified, includes default options for {}".format(info["help"])
- yield "--preset-{}".format(opt), help
-
-
-def ns_get(ns, key, default=False):
- return getattr(ns, key.replace("-", "_"), default)
-
-
-def ns_set(ns, key, value=True):
- k1 = key.replace("-", "_")
- k2 = "include_{}".format(k1)
- if hasattr(ns, k2):
- setattr(ns, k2, value)
- elif hasattr(ns, k1):
- setattr(ns, k1, value)
- else:
- raise AttributeError("no argument named '{}'".format(k1))
-
-
-@public
-def update_presets(ns):
- for preset, info in PRESETS.items():
- if ns_get(ns, "preset-{}".format(preset)):
- for opt in info["options"]:
- ns_set(ns, opt)
-
- if ns.include_all:
- for opt in OPTIONS:
- if OPTIONS[opt].get("not-in-all"):
- continue
- ns_set(ns, opt)
diff --git a/PC/layout/support/pip.py b/PC/layout/support/pip.py
deleted file mode 100644
index c54acb2..0000000
--- a/PC/layout/support/pip.py
+++ /dev/null
@@ -1,94 +0,0 @@
-"""
-Extraction and file list generation for pip.
-"""
-
-__author__ = "Steve Dower <steve.dower@python.org>"
-__version__ = "3.8"
-
-
-import os
-import shutil
-import subprocess
-import sys
-
-from .filesets import *
-
-__all__ = ["extract_pip_files", "get_pip_layout"]
-
-
-def get_pip_dir(ns):
- if ns.copy:
- if ns.zip_lib:
- return ns.copy / "packages"
- return ns.copy / "Lib" / "site-packages"
- else:
- return ns.temp / "packages"
-
-
-def get_pip_layout(ns):
- pip_dir = get_pip_dir(ns)
- if not pip_dir.is_dir():
- log_warning("Failed to find {} - pip will not be included", pip_dir)
- else:
- pkg_root = "packages/{}" if ns.zip_lib else "Lib/site-packages/{}"
- for dest, src in rglob(pip_dir, "**/*"):
- yield pkg_root.format(dest), src
- if ns.include_pip_user:
- content = "\n".join(
- "[{}]\nuser=yes".format(n)
- for n in ["install", "uninstall", "freeze", "list"]
- )
- yield "pip.ini", ("pip.ini", content.encode())
-
-
-def extract_pip_files(ns):
- dest = get_pip_dir(ns)
- try:
- dest.mkdir(parents=True, exist_ok=False)
- except IOError:
- return
-
- src = ns.source / "Lib" / "ensurepip" / "_bundled"
-
- ns.temp.mkdir(parents=True, exist_ok=True)
- wheels = [shutil.copy(whl, ns.temp) for whl in src.glob("*.whl")]
- search_path = os.pathsep.join(wheels)
- if os.environ.get("PYTHONPATH"):
- search_path += ";" + os.environ["PYTHONPATH"]
-
- env = os.environ.copy()
- env["PYTHONPATH"] = search_path
-
- output = subprocess.check_output(
- [
- sys.executable,
- "-m",
- "pip",
- "--no-color",
- "install",
- "pip",
- "setuptools",
- "--upgrade",
- "--target",
- str(dest),
- "--no-index",
- "--no-compile",
- "--no-cache-dir",
- "-f",
- str(src),
- "--only-binary",
- ":all:",
- ],
- env=env,
- )
-
- try:
- shutil.rmtree(dest / "bin")
- except OSError:
- pass
-
- for file in wheels:
- try:
- os.remove(file)
- except OSError:
- pass
diff --git a/PC/layout/support/props.py b/PC/layout/support/props.py
deleted file mode 100644
index b1560b5..0000000
--- a/PC/layout/support/props.py
+++ /dev/null
@@ -1,100 +0,0 @@
-"""
-Provides .props file.
-"""
-
-import os
-
-from .constants import *
-
-__all__ = ["get_props_layout"]
-
-PYTHON_PROPS_NAME = "python.props"
-
-PROPS_DATA = {
- "PYTHON_TAG": VER_DOT,
- "PYTHON_VERSION": os.getenv("PYTHON_NUSPEC_VERSION"),
- "PYTHON_PLATFORM": os.getenv("PYTHON_PROPS_PLATFORM"),
- "PYTHON_TARGET": "",
-}
-
-if not PROPS_DATA["PYTHON_VERSION"]:
- PROPS_DATA["PYTHON_VERSION"] = "{}.{}{}{}".format(
- VER_DOT, VER_MICRO, "-" if VER_SUFFIX else "", VER_SUFFIX
- )
-
-PROPS_DATA["PYTHON_TARGET"] = "_GetPythonRuntimeFilesDependsOn{}{}_{}".format(
- VER_MAJOR, VER_MINOR, PROPS_DATA["PYTHON_PLATFORM"]
-)
-
-PROPS_TEMPLATE = r"""<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Condition="$(Platform) == '{PYTHON_PLATFORM}'">
- <PythonHome Condition="$(Configuration) == 'Debug'">$([msbuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), "python_d.exe")</PythonHome>
- <PythonHome Condition="$(PythonHome) == ''">$([msbuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), "python.exe")</PythonHome>
- <PythonInclude>$(PythonHome)\include</PythonInclude>
- <PythonLibs>$(PythonHome)\libs</PythonLibs>
- <PythonTag>{PYTHON_TAG}</PythonTag>
- <PythonVersion>{PYTHON_VERSION}</PythonVersion>
-
- <IncludePythonExe Condition="$(IncludePythonExe) == ''">true</IncludePythonExe>
- <IncludeDistutils Condition="$(IncludeDistutils) == ''">false</IncludeDistutils>
- <IncludeLib2To3 Condition="$(IncludeLib2To3) == ''">false</IncludeLib2To3>
- <IncludeVEnv Condition="$(IncludeVEnv) == ''">false</IncludeVEnv>
-
- <GetPythonRuntimeFilesDependsOn>{PYTHON_TARGET};$(GetPythonRuntimeFilesDependsOn)</GetPythonRuntimeFilesDependsOn>
- </PropertyGroup>
-
- <ItemDefinitionGroup Condition="$(Platform) == '{PYTHON_PLATFORM}'">
- <ClCompile>
- <AdditionalIncludeDirectories>$(PythonInclude);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- </ClCompile>
- <Link>
- <AdditionalLibraryDirectories>$(PythonLibs);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- </Link>
- </ItemDefinitionGroup>
-
- <Target Name="GetPythonRuntimeFiles" Returns="@(PythonRuntime)" DependsOnTargets="$(GetPythonRuntimeFilesDependsOn)" />
-
- <Target Name="{PYTHON_TARGET}" Returns="@(PythonRuntime)">
- <ItemGroup>
- <_PythonRuntimeExe Include="$(PythonHome)\python*.dll" />
- <_PythonRuntimeExe Include="$(PythonHome)\python*.exe" Condition="$(IncludePythonExe) == 'true'" />
- <_PythonRuntimeExe>
- <Link>%(Filename)%(Extension)</Link>
- </_PythonRuntimeExe>
- <_PythonRuntimeDlls Include="$(PythonHome)\DLLs\*.pyd" />
- <_PythonRuntimeDlls Include="$(PythonHome)\DLLs\*.dll" />
- <_PythonRuntimeDlls>
- <Link>DLLs\%(Filename)%(Extension)</Link>
- </_PythonRuntimeDlls>
- <_PythonRuntimeLib Include="$(PythonHome)\Lib\**\*" Exclude="$(PythonHome)\Lib\**\*.pyc;$(PythonHome)\Lib\site-packages\**\*" />
- <_PythonRuntimeLib Remove="$(PythonHome)\Lib\distutils\**\*" Condition="$(IncludeDistutils) != 'true'" />
- <_PythonRuntimeLib Remove="$(PythonHome)\Lib\lib2to3\**\*" Condition="$(IncludeLib2To3) != 'true'" />
- <_PythonRuntimeLib Remove="$(PythonHome)\Lib\ensurepip\**\*" Condition="$(IncludeVEnv) != 'true'" />
- <_PythonRuntimeLib Remove="$(PythonHome)\Lib\venv\**\*" Condition="$(IncludeVEnv) != 'true'" />
- <_PythonRuntimeLib>
- <Link>Lib\%(RecursiveDir)%(Filename)%(Extension)</Link>
- </_PythonRuntimeLib>
- <PythonRuntime Include="@(_PythonRuntimeExe);@(_PythonRuntimeDlls);@(_PythonRuntimeLib)" />
- </ItemGroup>
-
- <Message Importance="low" Text="Collected Python runtime from $(PythonHome):%0D%0A@(PythonRuntime->' %(Link)','%0D%0A')" />
- </Target>
-</Project>
-"""
-
-
-def get_props_layout(ns):
- if ns.include_all or ns.include_props:
- # TODO: Filter contents of props file according to included/excluded items
- d = dict(PROPS_DATA)
- if not d.get("PYTHON_PLATFORM"):
- d["PYTHON_PLATFORM"] = {
- "win32": "Win32",
- "amd64": "X64",
- "arm32": "ARM",
- "arm64": "ARM64",
- }[ns.arch]
- props = PROPS_TEMPLATE.format_map(d)
- yield "python.props", ("python.props", props.encode("utf-8"))
diff --git a/PC/layout/support/python.props b/PC/layout/support/python.props
deleted file mode 100644
index 4cc7008..0000000
--- a/PC/layout/support/python.props
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Condition="$(Platform) == '$$PYTHON_PLATFORM$$'">
- <PythonHome>$(MSBuildThisFileDirectory)\..\..\tools</PythonHome>
- <PythonInclude>$(PythonHome)\include</PythonInclude>
- <PythonLibs>$(PythonHome)\libs</PythonLibs>
- <PythonTag>$$PYTHON_TAG$$</PythonTag>
- <PythonVersion>$$PYTHON_VERSION$$</PythonVersion>
-
- <IncludePythonExe Condition="$(IncludePythonExe) == ''">true</IncludePythonExe>
- <IncludeDistutils Condition="$(IncludeDistutils) == ''">false</IncludeDistutils>
- <IncludeLib2To3 Condition="$(IncludeLib2To3) == ''">false</IncludeLib2To3>
- <IncludeVEnv Condition="$(IncludeVEnv) == ''">false</IncludeVEnv>
-
- <GetPythonRuntimeFilesDependsOn>$$PYTHON_TARGET$$;$(GetPythonRuntimeFilesDependsOn)</GetPythonRuntimeFilesDependsOn>
- </PropertyGroup>
-
- <ItemDefinitionGroup Condition="$(Platform) == '$$PYTHON_PLATFORM$$'">
- <ClCompile>
- <AdditionalIncludeDirectories>$(PythonInclude);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- </ClCompile>
- <Link>
- <AdditionalLibraryDirectories>$(PythonLibs);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- </Link>
- </ItemDefinitionGroup>
-
- <Target Name="GetPythonRuntimeFiles" Returns="@(PythonRuntime)" DependsOnTargets="$(GetPythonRuntimeFilesDependsOn)" />
-
- <Target Name="$$PYTHON_TARGET$$" Returns="@(PythonRuntime)">
- <ItemGroup>
- <_PythonRuntimeExe Include="$(PythonHome)\python*.dll" />
- <_PythonRuntimeExe Include="$(PythonHome)\vcruntime140.dll" />
- <_PythonRuntimeExe Include="$(PythonHome)\python*.exe" Condition="$(IncludePythonExe) == 'true'" />
- <_PythonRuntimeExe>
- <Link>%(Filename)%(Extension)</Link>
- </_PythonRuntimeExe>
- <_PythonRuntimeDlls Include="$(PythonHome)\DLLs\*.pyd" />
- <_PythonRuntimeDlls Include="$(PythonHome)\DLLs\*.dll" />
- <_PythonRuntimeDlls>
- <Link>DLLs\%(Filename)%(Extension)</Link>
- </_PythonRuntimeDlls>
- <_PythonRuntimeLib Include="$(PythonHome)\Lib\**\*" Exclude="$(PythonHome)\Lib\**\*.pyc;$(PythonHome)\Lib\site-packages\**\*" />
- <_PythonRuntimeLib Remove="$(PythonHome)\Lib\distutils\**\*" Condition="$(IncludeDistutils) != 'true'" />
- <_PythonRuntimeLib Remove="$(PythonHome)\Lib\lib2to3\**\*" Condition="$(IncludeLib2To3) != 'true'" />
- <_PythonRuntimeLib Remove="$(PythonHome)\Lib\ensurepip\**\*" Condition="$(IncludeVEnv) != 'true'" />
- <_PythonRuntimeLib Remove="$(PythonHome)\Lib\venv\**\*" Condition="$(IncludeVEnv) != 'true'" />
- <_PythonRuntimeLib>
- <Link>Lib\%(RecursiveDir)%(Filename)%(Extension)</Link>
- </_PythonRuntimeLib>
- <PythonRuntime Include="@(_PythonRuntimeExe);@(_PythonRuntimeDlls);@(_PythonRuntimeLib)" />
- </ItemGroup>
-
- <Message Importance="low" Text="Collected Python runtime from $(PythonHome):%0D%0A@(PythonRuntime->' %(Link)','%0D%0A')" />
- </Target>
-</Project>
diff --git a/PC/make_versioninfo.c b/PC/make_versioninfo.c
new file mode 100644
index 0000000..e969671
--- /dev/null
+++ b/PC/make_versioninfo.c
@@ -0,0 +1,38 @@
+#include <stdio.h>
+#include "patchlevel.h"
+/*
+ * This program prints out an include file containing fields required to build
+ * the version info resource of pythonxx.dll because the resource compiler
+ * cannot do the arithmetic.
+ */
+/*
+ * FIELD3 is the third field of the version number.
+ * This is what we'd like FIELD3 to be:
+ *
+ * #define FIELD3 (PY_MICRO_VERSION*1000 + PY_RELEASE_LEVEL*10 + PY_RELEASE_SERIAL)
+ *
+ * but that neither gives an error nor comes anywhere close to working.
+ *
+ * For 2.4a0,
+ * PY_MICRO_VERSION = 0
+ * PY_RELEASE_LEVEL = 'alpha' = 0xa
+ * PY_RELEASE_SERIAL = 0
+ *
+ * gives FIELD3 = 0*1000 + 10*10 + 0 = 100
+ */
+int main(int argc, char **argv)
+{
+ printf("/* This file created by make_versioninfo.exe */\n");
+ printf("#define FIELD3 %d\n",
+ PY_MICRO_VERSION*1000 + PY_RELEASE_LEVEL*10 + PY_RELEASE_SERIAL);
+ printf("#define MS_DLL_ID \"%d.%d\"\n",
+ PY_MAJOR_VERSION, PY_MINOR_VERSION);
+ printf("#ifndef _DEBUG\n");
+ printf("#define PYTHON_DLL_NAME \"python%d%d.dll\"\n",
+ PY_MAJOR_VERSION, PY_MINOR_VERSION);
+ printf("#else\n");
+ printf("#define PYTHON_DLL_NAME \"python%d%d_d.dll\"\n",
+ PY_MAJOR_VERSION, PY_MINOR_VERSION);
+ printf("#endif\n");
+ return 0;
+}
diff --git a/PC/msvcrtmodule.c b/PC/msvcrtmodule.c
index c4113e5..44c82e4 100644
--- a/PC/msvcrtmodule.c
+++ b/PC/msvcrtmodule.c
@@ -21,521 +21,347 @@
#include <io.h>
#include <conio.h>
#include <sys/locking.h>
-#include <crtdbg.h>
-#include <windows.h>
#ifdef _MSC_VER
#if _MSC_VER >= 1500 && _MSC_VER < 1600
#include <crtassem.h>
-#elif _MSC_VER >= 1600
-#include <crtversion.h>
#endif
#endif
-/*[python input]
-class HANDLE_converter(CConverter):
- type = 'void *'
- format_unit = '"_Py_PARSE_UINTPTR"'
-
-class HANDLE_return_converter(CReturnConverter):
- type = 'void *'
-
- def render(self, function, data):
- self.declare(data)
- self.err_occurred_if(
- "_return_value == NULL || _return_value == INVALID_HANDLE_VALUE",
- data)
- data.return_conversion.append(
- 'return_value = PyLong_FromVoidPtr(_return_value);\n')
-
-class byte_char_return_converter(CReturnConverter):
- type = 'int'
-
- def render(self, function, data):
- data.declarations.append('char s[1];')
- data.return_value = 's[0]'
- data.return_conversion.append(
- 'return_value = PyBytes_FromStringAndSize(s, 1);\n')
-
-class wchar_t_return_converter(CReturnConverter):
- type = 'wchar_t'
-
- def render(self, function, data):
- self.declare(data)
- data.return_conversion.append(
- 'return_value = PyUnicode_FromOrdinal(_return_value);\n')
-[python start generated code]*/
-/*[python end generated code: output=da39a3ee5e6b4b0d input=d102511df3cda2eb]*/
-
-/*[clinic input]
-module msvcrt
-[clinic start generated code]*/
-/*[clinic end generated code: output=da39a3ee5e6b4b0d input=f31a87a783d036cd]*/
-
-#include "clinic/msvcrtmodule.c.h"
-
-/*[clinic input]
-msvcrt.heapmin
-
-Minimize the malloc() heap.
-
-Force the malloc() heap to clean itself up and return unused blocks
-to the operating system. On failure, this raises OSError.
-[clinic start generated code]*/
-
+// Force the malloc heap to clean itself up, and free unused blocks
+// back to the OS. (According to the docs, only works on NT.)
static PyObject *
-msvcrt_heapmin_impl(PyObject *module)
-/*[clinic end generated code: output=1ba00f344782dc19 input=82e1771d21bde2d8]*/
+msvcrt_heapmin(PyObject *self, PyObject *args)
{
+ if (!PyArg_ParseTuple(args, ":heapmin"))
+ return NULL;
+
if (_heapmin() != 0)
- return PyErr_SetFromErrno(PyExc_OSError);
+ return PyErr_SetFromErrno(PyExc_IOError);
- Py_RETURN_NONE;
+ Py_INCREF(Py_None);
+ return Py_None;
}
-/*[clinic input]
-msvcrt.locking
- fd: int
- mode: int
- nbytes: long
- /
-
-Lock part of a file based on file descriptor fd from the C runtime.
-
-Raises OSError on failure. The locked region of the file extends from
-the current file position for nbytes bytes, and may continue beyond
-the end of the file. mode must be one of the LK_* constants listed
-below. Multiple regions in a file may be locked at the same time, but
-may not overlap. Adjacent regions are not merged; they must be unlocked
-individually.
-[clinic start generated code]*/
+PyDoc_STRVAR(heapmin_doc,
+"heapmin() -> None\n\
+\n\
+Force the malloc() heap to clean itself up and return unused blocks\n\
+to the operating system. On failure, this raises IOError.");
+// Perform locking operations on a C runtime file descriptor.
static PyObject *
-msvcrt_locking_impl(PyObject *module, int fd, int mode, long nbytes)
-/*[clinic end generated code: output=a4a90deca9785a03 input=e97bd15fc4a04fef]*/
+msvcrt_locking(PyObject *self, PyObject *args)
{
+ int fd;
+ int mode;
+ long nbytes;
int err;
+ if (!PyArg_ParseTuple(args, "iil:locking", &fd, &mode, &nbytes))
+ return NULL;
+
Py_BEGIN_ALLOW_THREADS
- _Py_BEGIN_SUPPRESS_IPH
err = _locking(fd, mode, nbytes);
- _Py_END_SUPPRESS_IPH
Py_END_ALLOW_THREADS
if (err != 0)
- return PyErr_SetFromErrno(PyExc_OSError);
+ return PyErr_SetFromErrno(PyExc_IOError);
- Py_RETURN_NONE;
+ Py_INCREF(Py_None);
+ return Py_None;
}
-/*[clinic input]
-msvcrt.setmode -> long
-
- fd: int
- mode as flags: int
- /
-
-Set the line-end translation mode for the file descriptor fd.
-
-To set it to text mode, flags should be os.O_TEXT; for binary, it
-should be os.O_BINARY.
-
-Return value is the previous mode.
-[clinic start generated code]*/
-
-static long
-msvcrt_setmode_impl(PyObject *module, int fd, int flags)
-/*[clinic end generated code: output=24a9be5ea07ccb9b input=76e7c01f6b137f75]*/
+PyDoc_STRVAR(locking_doc,
+"locking(fd, mode, nbytes) -> None\n\
+\n\
+Lock part of a file based on file descriptor fd from the C runtime.\n\
+Raises IOError on failure. The locked region of the file extends from\n\
+the current file position for nbytes bytes, and may continue beyond\n\
+the end of the file. mode must be one of the LK_* constants listed\n\
+below. Multiple regions in a file may be locked at the same time, but\n\
+may not overlap. Adjacent regions are not merged; they must be unlocked\n\
+individually.");
+
+// Set the file translation mode for a C runtime file descriptor.
+static PyObject *
+msvcrt_setmode(PyObject *self, PyObject *args)
{
- _Py_BEGIN_SUPPRESS_IPH
+ int fd;
+ int flags;
+ if (!PyArg_ParseTuple(args,"ii:setmode", &fd, &flags))
+ return NULL;
+
flags = _setmode(fd, flags);
- _Py_END_SUPPRESS_IPH
if (flags == -1)
- PyErr_SetFromErrno(PyExc_OSError);
+ return PyErr_SetFromErrno(PyExc_IOError);
- return flags;
+ return PyInt_FromLong(flags);
}
-/*[clinic input]
-msvcrt.open_osfhandle -> long
-
- handle: HANDLE
- flags: int
- /
-
-Create a C runtime file descriptor from the file handle handle.
-
-The flags parameter should be a bitwise OR of os.O_APPEND, os.O_RDONLY,
-and os.O_TEXT. The returned file descriptor may be used as a parameter
-to os.fdopen() to create a file object.
-[clinic start generated code]*/
+PyDoc_STRVAR(setmode_doc,
+"setmode(fd, mode) -> Previous mode\n\
+\n\
+Set the line-end translation mode for the file descriptor fd. To set\n\
+it to text mode, flags should be os.O_TEXT; for binary, it should be\n\
+os.O_BINARY.");
-static long
-msvcrt_open_osfhandle_impl(PyObject *module, void *handle, int flags)
-/*[clinic end generated code: output=b2fb97c4b515e4e6 input=d5db190a307cf4bb]*/
+// Convert an OS file handle to a C runtime file descriptor.
+static PyObject *
+msvcrt_open_osfhandle(PyObject *self, PyObject *args)
{
+ long handle;
+ int flags;
int fd;
- _Py_BEGIN_SUPPRESS_IPH
- fd = _open_osfhandle((intptr_t)handle, flags);
- _Py_END_SUPPRESS_IPH
+ if (!PyArg_ParseTuple(args, "li:open_osfhandle", &handle, &flags))
+ return NULL;
+
+ fd = _open_osfhandle(handle, flags);
if (fd == -1)
- PyErr_SetFromErrno(PyExc_OSError);
+ return PyErr_SetFromErrno(PyExc_IOError);
- return fd;
+ return PyInt_FromLong(fd);
}
-/*[clinic input]
-msvcrt.get_osfhandle -> HANDLE
-
- fd: int
- /
+PyDoc_STRVAR(open_osfhandle_doc,
+"open_osfhandle(handle, flags) -> file descriptor\n\
+\n\
+Create a C runtime file descriptor from the file handle handle. The\n\
+flags parameter should be a bitwise OR of os.O_APPEND, os.O_RDONLY,\n\
+and os.O_TEXT. The returned file descriptor may be used as a parameter\n\
+to os.fdopen() to create a file object.");
-Return the file handle for the file descriptor fd.
+// Convert a C runtime file descriptor to an OS file handle.
+static PyObject *
+msvcrt_get_osfhandle(PyObject *self, PyObject *args)
+{
+ int fd;
+ Py_intptr_t handle;
-Raises OSError if fd is not recognized.
-[clinic start generated code]*/
+ if (!PyArg_ParseTuple(args,"i:get_osfhandle", &fd))
+ return NULL;
-static void *
-msvcrt_get_osfhandle_impl(PyObject *module, int fd)
-/*[clinic end generated code: output=aca01dfe24637374 input=5fcfde9b17136aa2]*/
-{
- intptr_t handle = -1;
+ if (!_PyVerify_fd(fd))
+ return PyErr_SetFromErrno(PyExc_IOError);
- _Py_BEGIN_SUPPRESS_IPH
handle = _get_osfhandle(fd);
- _Py_END_SUPPRESS_IPH
if (handle == -1)
- PyErr_SetFromErrno(PyExc_OSError);
+ return PyErr_SetFromErrno(PyExc_IOError);
- return (HANDLE)handle;
+ /* technically 'handle' is not a pointer, but an integer as
+ large as a pointer, Python's *VoidPtr interface is the
+ most appropriate here */
+ return PyLong_FromVoidPtr((void*)handle);
}
-/* Console I/O */
-/*[clinic input]
-msvcrt.kbhit -> long
+PyDoc_STRVAR(get_osfhandle_doc,
+"get_osfhandle(fd) -> file handle\n\
+\n\
+Return the file handle for the file descriptor fd. Raises IOError\n\
+if fd is not recognized.");
-Return true if a keypress is waiting to be read.
-[clinic start generated code]*/
+/* Console I/O */
-static long
-msvcrt_kbhit_impl(PyObject *module)
-/*[clinic end generated code: output=940dfce6587c1890 input=e70d678a5c2f6acc]*/
+static PyObject *
+msvcrt_kbhit(PyObject *self, PyObject *args)
{
- return _kbhit();
-}
+ int ok;
-/*[clinic input]
-msvcrt.getch -> byte_char
+ if (!PyArg_ParseTuple(args, ":kbhit"))
+ return NULL;
-Read a keypress and return the resulting character as a byte string.
+ ok = _kbhit();
+ return PyInt_FromLong(ok);
+}
-Nothing is echoed to the console. This call will block if a keypress is
-not already available, but will not wait for Enter to be pressed. If the
-pressed key was a special function key, this will return '\000' or
-'\xe0'; the next call will return the keycode. The Control-C keypress
-cannot be read with this function.
-[clinic start generated code]*/
+PyDoc_STRVAR(kbhit_doc,
+"kbhit() -> bool\n\
+\n\
+Return true if a keypress is waiting to be read.");
-static int
-msvcrt_getch_impl(PyObject *module)
-/*[clinic end generated code: output=a4e51f0565064a7d input=37a40cf0ed0d1153]*/
+static PyObject *
+msvcrt_getch(PyObject *self, PyObject *args)
{
int ch;
+ char s[1];
+
+ if (!PyArg_ParseTuple(args, ":getch"))
+ return NULL;
Py_BEGIN_ALLOW_THREADS
ch = _getch();
Py_END_ALLOW_THREADS
- return ch;
+ s[0] = ch;
+ return PyString_FromStringAndSize(s, 1);
}
-/*[clinic input]
-msvcrt.getwch -> wchar_t
-
-Wide char variant of getch(), returning a Unicode value.
-[clinic start generated code]*/
-
-static wchar_t
-msvcrt_getwch_impl(PyObject *module)
-/*[clinic end generated code: output=be9937494e22f007 input=27b3dec8ad823d7c]*/
+PyDoc_STRVAR(getch_doc,
+"getch() -> key character\n\
+\n\
+Read a keypress and return the resulting character. Nothing is echoed to\n\
+the console. This call will block if a keypress is not already\n\
+available, but will not wait for Enter to be pressed. If the pressed key\n\
+was a special function key, this will return '\\000' or '\\xe0'; the next\n\
+call will return the keycode. The Control-C keypress cannot be read with\n\
+this function.");
+
+#ifdef _WCONIO_DEFINED
+static PyObject *
+msvcrt_getwch(PyObject *self, PyObject *args)
{
- wchar_t ch;
+ Py_UNICODE ch;
+ Py_UNICODE u[1];
+
+ if (!PyArg_ParseTuple(args, ":getwch"))
+ return NULL;
Py_BEGIN_ALLOW_THREADS
ch = _getwch();
Py_END_ALLOW_THREADS
- return ch;
+ u[0] = ch;
+ return PyUnicode_FromUnicode(u, 1);
}
-/*[clinic input]
-msvcrt.getche -> byte_char
-
-Similar to getch(), but the keypress will be echoed if possible.
-[clinic start generated code]*/
+PyDoc_STRVAR(getwch_doc,
+"getwch() -> Unicode key character\n\
+\n\
+Wide char variant of getch(), returning a Unicode value.");
+#endif
-static int
-msvcrt_getche_impl(PyObject *module)
-/*[clinic end generated code: output=d8f7db4fd2990401 input=43311ade9ed4a9c0]*/
+static PyObject *
+msvcrt_getche(PyObject *self, PyObject *args)
{
int ch;
+ char s[1];
+
+ if (!PyArg_ParseTuple(args, ":getche"))
+ return NULL;
Py_BEGIN_ALLOW_THREADS
ch = _getche();
Py_END_ALLOW_THREADS
- return ch;
+ s[0] = ch;
+ return PyString_FromStringAndSize(s, 1);
}
-/*[clinic input]
-msvcrt.getwche -> wchar_t
+PyDoc_STRVAR(getche_doc,
+"getche() -> key character\n\
+\n\
+Similar to getch(), but the keypress will be echoed if it represents\n\
+a printable character.");
-Wide char variant of getche(), returning a Unicode value.
-[clinic start generated code]*/
-
-static wchar_t
-msvcrt_getwche_impl(PyObject *module)
-/*[clinic end generated code: output=d0dae5ba3829d596 input=49337d59d1a591f8]*/
+#ifdef _WCONIO_DEFINED
+static PyObject *
+msvcrt_getwche(PyObject *self, PyObject *args)
{
- wchar_t ch;
+ Py_UNICODE ch;
+ Py_UNICODE s[1];
+
+ if (!PyArg_ParseTuple(args, ":getwche"))
+ return NULL;
Py_BEGIN_ALLOW_THREADS
ch = _getwche();
Py_END_ALLOW_THREADS
- return ch;
-}
-
-/*[clinic input]
-msvcrt.putch
-
- char: char
- /
-
-Print the byte string char to the console without buffering.
-[clinic start generated code]*/
-
-static PyObject *
-msvcrt_putch_impl(PyObject *module, char char_value)
-/*[clinic end generated code: output=92ec9b81012d8f60 input=ec078dd10cb054d6]*/
-{
- _Py_BEGIN_SUPPRESS_IPH
- _putch(char_value);
- _Py_END_SUPPRESS_IPH
- Py_RETURN_NONE;
-}
-
-/*[clinic input]
-msvcrt.putwch
-
- unicode_char: int(accept={str})
- /
-
-Wide char variant of putch(), accepting a Unicode value.
-[clinic start generated code]*/
-
-static PyObject *
-msvcrt_putwch_impl(PyObject *module, int unicode_char)
-/*[clinic end generated code: output=a3bd1a8951d28eee input=996ccd0bbcbac4c3]*/
-{
- _Py_BEGIN_SUPPRESS_IPH
- _putwch(unicode_char);
- _Py_END_SUPPRESS_IPH
- Py_RETURN_NONE;
-
+ s[0] = ch;
+ return PyUnicode_FromUnicode(s, 1);
}
-/*[clinic input]
-msvcrt.ungetch
-
- char: char
- /
-
-Opposite of getch.
-
-Cause the byte string char to be "pushed back" into the
-console buffer; it will be the next character read by
-getch() or getche().
-[clinic start generated code]*/
+PyDoc_STRVAR(getwche_doc,
+"getwche() -> Unicode key character\n\
+\n\
+Wide char variant of getche(), returning a Unicode value.");
+#endif
static PyObject *
-msvcrt_ungetch_impl(PyObject *module, char char_value)
-/*[clinic end generated code: output=c6942a0efa119000 input=22f07ee9001bbf0f]*/
+msvcrt_putch(PyObject *self, PyObject *args)
{
- int res;
+ char ch;
- _Py_BEGIN_SUPPRESS_IPH
- res = _ungetch(char_value);
- _Py_END_SUPPRESS_IPH
+ if (!PyArg_ParseTuple(args, "c:putch", &ch))
+ return NULL;
- if (res == EOF)
- return PyErr_SetFromErrno(PyExc_OSError);
- Py_RETURN_NONE;
+ _putch(ch);
+ Py_INCREF(Py_None);
+ return Py_None;
}
-/*[clinic input]
-msvcrt.ungetwch
-
- unicode_char: int(accept={str})
- /
-
-Wide char variant of ungetch(), accepting a Unicode value.
-[clinic start generated code]*/
+PyDoc_STRVAR(putch_doc,
+"putch(char) -> None\n\
+\n\
+Print the character char to the console without buffering.");
+#ifdef _WCONIO_DEFINED
static PyObject *
-msvcrt_ungetwch_impl(PyObject *module, int unicode_char)
-/*[clinic end generated code: output=e63af05438b8ba3d input=83ec0492be04d564]*/
+msvcrt_putwch(PyObject *self, PyObject *args)
{
- int res;
+ Py_UNICODE *ch;
+ int size;
- _Py_BEGIN_SUPPRESS_IPH
- res = _ungetwch(unicode_char);
- _Py_END_SUPPRESS_IPH
+ if (!PyArg_ParseTuple(args, "u#:putwch", &ch, &size))
+ return NULL;
- if (res == WEOF)
- return PyErr_SetFromErrno(PyExc_OSError);
+ if (size == 0) {
+ PyErr_SetString(PyExc_ValueError,
+ "Expected unicode string of length 1");
+ return NULL;
+ }
+ _putwch(*ch);
Py_RETURN_NONE;
-}
-
-#ifdef _DEBUG
-/*[clinic input]
-msvcrt.CrtSetReportFile -> HANDLE
-
- type: int
- file: HANDLE
- /
-
-Wrapper around _CrtSetReportFile.
-
-Only available on Debug builds.
-[clinic start generated code]*/
-
-static void *
-msvcrt_CrtSetReportFile_impl(PyObject *module, int type, void *file)
-/*[clinic end generated code: output=9393e8c77088bbe9 input=290809b5f19e65b9]*/
-{
- HANDLE res;
-
- _Py_BEGIN_SUPPRESS_IPH
- res = _CrtSetReportFile(type, file);
- _Py_END_SUPPRESS_IPH
-
- return res;
-}
-
-/*[clinic input]
-msvcrt.CrtSetReportMode -> long
-
- type: int
- mode: int
- /
-
-Wrapper around _CrtSetReportMode.
-
-Only available on Debug builds.
-[clinic start generated code]*/
-static long
-msvcrt_CrtSetReportMode_impl(PyObject *module, int type, int mode)
-/*[clinic end generated code: output=b2863761523de317 input=9319d29b4319426b]*/
-{
- int res;
-
- _Py_BEGIN_SUPPRESS_IPH
- res = _CrtSetReportMode(type, mode);
- _Py_END_SUPPRESS_IPH
- if (res == -1)
- PyErr_SetFromErrno(PyExc_OSError);
- return res;
}
-/*[clinic input]
-msvcrt.set_error_mode -> long
-
- mode: int
- /
-
-Wrapper around _set_error_mode.
-
-Only available on Debug builds.
-[clinic start generated code]*/
+PyDoc_STRVAR(putwch_doc,
+"putwch(unicode_char) -> None\n\
+\n\
+Wide char variant of putch(), accepting a Unicode value.");
+#endif
-static long
-msvcrt_set_error_mode_impl(PyObject *module, int mode)
-/*[clinic end generated code: output=ac4a09040d8ac4e3 input=046fca59c0f20872]*/
+static PyObject *
+msvcrt_ungetch(PyObject *self, PyObject *args)
{
- long res;
+ char ch;
- _Py_BEGIN_SUPPRESS_IPH
- res = _set_error_mode(mode);
- _Py_END_SUPPRESS_IPH
+ if (!PyArg_ParseTuple(args, "c:ungetch", &ch))
+ return NULL;
- return res;
+ if (_ungetch(ch) == EOF)
+ return PyErr_SetFromErrno(PyExc_IOError);
+ Py_INCREF(Py_None);
+ return Py_None;
}
-#endif /* _DEBUG */
-
-/*[clinic input]
-msvcrt.SetErrorMode
-
- mode: unsigned_int(bitwise=True)
- /
-Wrapper around SetErrorMode.
-[clinic start generated code]*/
+PyDoc_STRVAR(ungetch_doc,
+"ungetch(char) -> None\n\
+\n\
+Cause the character char to be \"pushed back\" into the console buffer;\n\
+it will be the next character read by getch() or getche().");
+#ifdef _WCONIO_DEFINED
static PyObject *
-msvcrt_SetErrorMode_impl(PyObject *module, unsigned int mode)
-/*[clinic end generated code: output=01d529293f00da8f input=d8b167258d32d907]*/
+msvcrt_ungetwch(PyObject *self, PyObject *args)
{
- unsigned int res;
+ Py_UNICODE ch;
- _Py_BEGIN_SUPPRESS_IPH
- res = SetErrorMode(mode);
- _Py_END_SUPPRESS_IPH
+ if (!PyArg_ParseTuple(args, "u:ungetwch", &ch))
+ return NULL;
- return PyLong_FromUnsignedLong(res);
+ if (_ungetch(ch) == EOF)
+ return PyErr_SetFromErrno(PyExc_IOError);
+ Py_INCREF(Py_None);
+ return Py_None;
}
-/*[clinic input]
-[clinic start generated code]*/
-/*[clinic end generated code: output=da39a3ee5e6b4b0d input=da39a3ee5e6b4b0d]*/
-
-/* List of functions exported by this module */
-static struct PyMethodDef msvcrt_functions[] = {
- MSVCRT_HEAPMIN_METHODDEF
- MSVCRT_LOCKING_METHODDEF
- MSVCRT_SETMODE_METHODDEF
- MSVCRT_OPEN_OSFHANDLE_METHODDEF
- MSVCRT_GET_OSFHANDLE_METHODDEF
- MSVCRT_KBHIT_METHODDEF
- MSVCRT_GETCH_METHODDEF
- MSVCRT_GETCHE_METHODDEF
- MSVCRT_PUTCH_METHODDEF
- MSVCRT_UNGETCH_METHODDEF
- MSVCRT_SETERRORMODE_METHODDEF
- MSVCRT_CRTSETREPORTFILE_METHODDEF
- MSVCRT_CRTSETREPORTMODE_METHODDEF
- MSVCRT_SET_ERROR_MODE_METHODDEF
- MSVCRT_GETWCH_METHODDEF
- MSVCRT_GETWCHE_METHODDEF
- MSVCRT_PUTWCH_METHODDEF
- MSVCRT_UNGETWCH_METHODDEF
- {NULL, NULL}
-};
-
-
-static struct PyModuleDef msvcrtmodule = {
- PyModuleDef_HEAD_INIT,
- "msvcrt",
- NULL,
- -1,
- msvcrt_functions,
- NULL,
- NULL,
- NULL,
- NULL
-};
+PyDoc_STRVAR(ungetwch_doc,
+"ungetwch(unicode_char) -> None\n\
+\n\
+Wide char variant of ungetch(), accepting a Unicode value.");
+#endif
static void
insertint(PyObject *d, char *name, int value)
{
- PyObject *v = PyLong_FromLong((long) value);
+ PyObject *v = PyInt_FromLong((long) value);
if (v == NULL) {
/* Don't bother reporting this error */
PyErr_Clear();
@@ -546,28 +372,36 @@ insertint(PyObject *d, char *name, int value)
}
}
-static void
-insertptr(PyObject *d, char *name, void *value)
-{
- PyObject *v = PyLong_FromVoidPtr(value);
- if (v == NULL) {
- /* Don't bother reporting this error */
- PyErr_Clear();
- }
- else {
- PyDict_SetItemString(d, name, v);
- Py_DECREF(v);
- }
-}
+
+/* List of functions exported by this module */
+static struct PyMethodDef msvcrt_functions[] = {
+ {"heapmin", msvcrt_heapmin, METH_VARARGS, heapmin_doc},
+ {"locking", msvcrt_locking, METH_VARARGS, locking_doc},
+ {"setmode", msvcrt_setmode, METH_VARARGS, setmode_doc},
+ {"open_osfhandle", msvcrt_open_osfhandle, METH_VARARGS, open_osfhandle_doc},
+ {"get_osfhandle", msvcrt_get_osfhandle, METH_VARARGS, get_osfhandle_doc},
+ {"kbhit", msvcrt_kbhit, METH_VARARGS, kbhit_doc},
+ {"getch", msvcrt_getch, METH_VARARGS, getch_doc},
+ {"getche", msvcrt_getche, METH_VARARGS, getche_doc},
+ {"putch", msvcrt_putch, METH_VARARGS, putch_doc},
+ {"ungetch", msvcrt_ungetch, METH_VARARGS, ungetch_doc},
+#ifdef _WCONIO_DEFINED
+ {"getwch", msvcrt_getwch, METH_VARARGS, getwch_doc},
+ {"getwche", msvcrt_getwche, METH_VARARGS, getwche_doc},
+ {"putwch", msvcrt_putwch, METH_VARARGS, putwch_doc},
+ {"ungetwch", msvcrt_ungetwch, METH_VARARGS, ungetwch_doc},
+#endif
+ {NULL, NULL}
+};
PyMODINIT_FUNC
-PyInit_msvcrt(void)
+initmsvcrt(void)
{
int st;
- PyObject *d, *version;
- PyObject *m = PyModule_Create(&msvcrtmodule);
+ PyObject *d;
+ PyObject *m = Py_InitModule("msvcrt", msvcrt_functions);
if (m == NULL)
- return NULL;
+ return;
d = PyModule_GetDict(m);
/* constants for the locking() function's mode argument */
@@ -576,51 +410,21 @@ PyInit_msvcrt(void)
insertint(d, "LK_NBRLCK", _LK_NBRLCK);
insertint(d, "LK_RLCK", _LK_RLCK);
insertint(d, "LK_UNLCK", _LK_UNLCK);
- insertint(d, "SEM_FAILCRITICALERRORS", SEM_FAILCRITICALERRORS);
- insertint(d, "SEM_NOALIGNMENTFAULTEXCEPT", SEM_NOALIGNMENTFAULTEXCEPT);
- insertint(d, "SEM_NOGPFAULTERRORBOX", SEM_NOGPFAULTERRORBOX);
- insertint(d, "SEM_NOOPENFILEERRORBOX", SEM_NOOPENFILEERRORBOX);
-#ifdef _DEBUG
- insertint(d, "CRT_WARN", _CRT_WARN);
- insertint(d, "CRT_ERROR", _CRT_ERROR);
- insertint(d, "CRT_ASSERT", _CRT_ASSERT);
- insertint(d, "CRTDBG_MODE_DEBUG", _CRTDBG_MODE_DEBUG);
- insertint(d, "CRTDBG_MODE_FILE", _CRTDBG_MODE_FILE);
- insertint(d, "CRTDBG_MODE_WNDW", _CRTDBG_MODE_WNDW);
- insertint(d, "CRTDBG_REPORT_MODE", _CRTDBG_REPORT_MODE);
- insertptr(d, "CRTDBG_FILE_STDERR", _CRTDBG_FILE_STDERR);
- insertptr(d, "CRTDBG_FILE_STDOUT", _CRTDBG_FILE_STDOUT);
- insertptr(d, "CRTDBG_REPORT_FILE", _CRTDBG_REPORT_FILE);
-#endif
/* constants for the crt versions */
#ifdef _VC_ASSEMBLY_PUBLICKEYTOKEN
st = PyModule_AddStringConstant(m, "VC_ASSEMBLY_PUBLICKEYTOKEN",
_VC_ASSEMBLY_PUBLICKEYTOKEN);
- if (st < 0) return NULL;
+ if (st < 0)return;
#endif
#ifdef _CRT_ASSEMBLY_VERSION
st = PyModule_AddStringConstant(m, "CRT_ASSEMBLY_VERSION",
_CRT_ASSEMBLY_VERSION);
- if (st < 0) return NULL;
+ if (st < 0)return;
#endif
#ifdef __LIBRARIES_ASSEMBLY_NAME_PREFIX
st = PyModule_AddStringConstant(m, "LIBRARIES_ASSEMBLY_NAME_PREFIX",
__LIBRARIES_ASSEMBLY_NAME_PREFIX);
- if (st < 0) return NULL;
-#endif
-
- /* constants for the 2010 crt versions */
-#if defined(_VC_CRT_MAJOR_VERSION) && defined (_VC_CRT_MINOR_VERSION) && defined(_VC_CRT_BUILD_VERSION) && defined(_VC_CRT_RBUILD_VERSION)
- version = PyUnicode_FromFormat("%d.%d.%d.%d", _VC_CRT_MAJOR_VERSION,
- _VC_CRT_MINOR_VERSION,
- _VC_CRT_BUILD_VERSION,
- _VC_CRT_RBUILD_VERSION);
- st = PyModule_AddObject(m, "CRT_ASSEMBLY_VERSION", version);
- if (st < 0) return NULL;
+ if (st < 0)return;
#endif
- /* make compiler warning quiet if st is unused */
- (void)st;
-
- return m;
}
diff --git a/PC/os2emx/Makefile b/PC/os2emx/Makefile
new file mode 100644
index 0000000..613da64
--- /dev/null
+++ b/PC/os2emx/Makefile
@@ -0,0 +1,702 @@
+#####################==================----------------
+#
+# Top-Level Makefile for Building Python 2.6 for OS/2 using GCC/EMX
+# Originally written by Andrew Zabolotny, <bit@eltech.ru> for Python 1.5.2
+# Modified by Andrew MacIntyre, <andymac@pcug.org.au> for Python 2.6
+#
+# This makefile was developed for use with [P]GCC/EMX compiler any
+# version and GNU Make.
+#
+# The output of the build is a largish Python26.DLL containing the
+# essential modules of Python and a small Python.exe program to start
+# the interpreter. When embedding Python within another program, only
+# Python26.DLL is needed. We also build python_s.a static library (which
+# can be converted into OMF (.lib) format using emxomf tool) and both
+# python.a and python.lib import libraries. Then the optional
+# extension modules, which are OS/2 DLLs renamed with a PYD file extension.
+#
+# Recommended build order:
+# make depend (if you have makedep)
+# make all
+# make lx (if you have lxlite)
+# make test (optional)
+#
+#####################==================----------------
+
+# === Compilation mode: debug or release ===
+MODE= optimize
+#MODE= debug
+# === Assert() enabled ===
+ASSERTIONS=no
+#ASSERTIONS=yes
+# === Hard-wire installation location ===
+FIXED_PYHOME=no
+#FIXED_PYHOME=yes
+
+# === Optional modules ===
+# Do you have the InfoZip compression library installed?
+HAVE_ZLIB= no
+# Do you have the Ultra Fast Crypt (UFC) library installed?
+HAVE_UFC= no
+# Do you have the Tcl/Tk library installed?
+HAVE_TCLTK= no
+# Do you have the GNU readline library installed?
+# NOTE: I'm using a modified version of Kai Uwe Rommel's port that
+# - is compiled with multithreading enabled
+# - is linked statically
+# I have had no success trying to use a DLL version, even when
+# compiled with multithreading enabled.
+HAVE_GREADLINE= no
+# Do you have the BSD DB library (v1.85) as included in the EMXBSD package?
+# NOTE: this library needs to be recompiled with a structure member
+# renamed to avoid problems with the multithreaded errno support
+# (there is a structure member called errno, used for shadowing the
+# real errno, which conflicts with the errno redefinition of -Zmt)
+HAVE_BSDDB= no
+# Do you have the ncurses library installed? EMX's BSD curses aren't enough!
+HAVE_NCURSES= no
+# Do you have the GDBM library installed?
+HAVE_GDBM= no
+# Do you have the BZ2 compression library installed?
+HAVE_BZ2= no
+# Do you have the OpenSSL libraries installed
+HAVE_OPENSSL= no
+
+# === install locations ===
+# default value of PYTHONHOME
+LIB_DIR=C:/Python26
+# default is to have everything in or under PYTHONHOME
+EXE_DIR=$(LIB_DIR)
+DLL_DIR=$(EXE_DIR)
+
+
+# === The Tools ===
+CC= gcc
+CFLAGS= -Zmt -Wall $(INCLUDE)
+CFLAGS.LIB= $(CFLAGS)
+LD= gcc
+LDFLAGS= -Zmt -Zcrtdll -L. -lgcc
+LDFLAGS.EXE= $(LDFLAGS)
+LDFLAGS.DLL= $(LDFLAGS) -Zdll
+LDFLAGS.A= $(LDFLAGS) $(LIBS)
+ARFLAGS= crs
+IMPLIB= emximp
+EXPLIB= emxexp
+EXEOPT= emxbind
+PY_DEF= -DPy_BUILD_CORE
+
+
+# adjust C compiler settings based on build options
+ifeq ($(MODE),debug)
+ CFLAGS+= -g -O
+ LDFLAGS+= -g
+else
+ CFLAGS+= -s -O3 -fomit-frame-pointer -mprobe
+ LDFLAGS+= -s
+endif
+CFLAGS+= $(PY_DEF)
+ifeq ($(ASSERTIONS),no)
+ CFLAGS+= -DNDEBUG
+endif
+ifeq ($(FIXED_PYHOME),yes)
+ CFLAGS+= -DPREFIX=$(DQUOTE)$(LIB_DIR)$(DQUOTE)
+endif
+
+# We're using the OMF format since EMX's ld has an obscure bug
+# because of which it sometimes fails to build relocations
+# in .data segment that point to another .data locations
+# (except for the final linking if the .EXEs)
+OMF= yes
+
+# if fork() support is required, the main executable must be linked with ld
+EXEOMF= no
+
+# File extensions
+MODULE.EXT= .pyd
+MODLIB.EXT= .dll
+ifeq ($(OMF),yes)
+ O= .obj
+ A= .lib
+ AR= emxomfar
+ CFLAGS+= -Zomf
+ LDFLAGS+= -Zomf
+ ifeq ($(MODE),debug)
+ ARFLAGS= -p64 crs
+ else
+ ARFLAGS= -p32 crs
+ endif
+else
+ O= .o
+ A= .a
+ AR= ar
+endif
+
+
+# === Build time resource settings ===
+
+# EMX's default number of file handles is 40, which is sometimes insufficient
+# (the tempfile regression test tries to create 100 temporary files)
+NFILES=250
+
+# The default stack size for child threads is 64k bytes, which is
+# insufficient for some applications which do a lot of work in threads
+# (such as Zope, especially in conjunction with Plone).
+# Note that this setting is distinct from the stack size for the main
+# thread, which is set via the %.def rule below.
+# EMX documents that the thread stack size should be at least 32768 bytes;
+# for Zope/Plone at least 128k bytes is recommended.
+# Uncomment & adjust the next line to override the default stack size:
+#CFLAGS+= -DTHREAD_STACK_SIZE=0x20000
+
+
+# === The environment ===
+
+# Source file paths
+SRCPATH=.;../../Python;../../Parser;../../Objects;../../Include;../../Modules
+# Python contains the central core, containing the builtins and interpreter.
+# Parser contains Python's Internal Parser and
+# Standalone Parser Generator Program (Shares Some of Python's Modules)
+# Objects contains Python Object Types
+# Modules contains extension Modules (Built-In or as Separate DLLs)
+
+# Unix shells tend to use "$" as delimiter for variable names.
+# Test for this behaviour and set $(BUCK) variable correspondigly ...
+__TMP__:=$(shell echo $$$$)
+ifeq ($(__TMP__),$$$$)
+ BUCK= $$
+ BRO= (
+ BRC= )
+else
+ BUCK= \$$
+ BRO= \(
+ BRC= \)
+endif
+# Compute the "double quote" variable
+__TMP__:=$(shell echo "")
+ifeq ($(__TMP__),"")
+ DQUOTE= "
+else
+ DQUOTE= \"
+endif
+
+# Include paths
+#INCLUDE= -I$(subst ;, -I, $(SRCPATH))
+INCLUDE= -I. -I../../Include
+
+# Path to search for .c files
+vpath %.c .;..;$(SRCPATH)
+
+# Top of the package tree
+TOP= ../../
+
+# Directory for output files
+OUTBASE= out/
+OUT= $(OUTBASE)$(MODE)/
+
+# Additional libraries
+LIBS= -lsocket
+
+# Utility macro: replacement for $^
+^^= $(filter-out %$A,$^)
+# Use $(L^) to link with all libraries specified as dependencies
+L^= $(addprefix -l,$(basename $(notdir $(filter %$A,$+))))
+
+# Build rules
+$(OUT)%$O: %.c
+ $(CC) $(CFLAGS.LIB) -c $< -o $@
+
+%.a:
+ $(LD) $(LDFLAGS.A) -o $@ $(^^) $(L^)
+
+%.dll:
+ $(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
+
+%.pyd: $(OUT)%module$O $(OUT)%_m.def
+ $(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(PYTHON.IMPLIB) $(LIBS)
+
+%.exe:
+ $(LD) $(LDFLAGS.EXE) -o $@ $(^^) $(L^)
+
+%_m.def:
+ @echo Creating .DEF file: $@
+ @echo LIBRARY $(notdir $*) INITINSTANCE TERMINSTANCE >$@
+ ifeq ($(DESCRIPTION.$(notdir $*)$(MODULE.EXT)),)
+ @echo DESCRIPTION $(DQUOTE)Python standard module $(notdir $*)$(DQUOTE) >>$@
+ else
+ @echo DESCRIPTION $(DQUOTE)$(DESCRIPTION.$(notdir $*)$(MODULE.EXT))$(DQUOTE) >>$@
+ endif
+ @echo DATA MULTIPLE NONSHARED >>$@
+ @echo EXPORTS >>$@
+ @echo init$(notdir $*) >>$@
+
+%.def:
+ @echo Creating .DEF file: $@
+ @echo NAME $(notdir $*) $(EXETYPE.$(notdir $*).exe) >$@
+ @echo DESCRIPTION $(DQUOTE)$(DESCRIPTION.$(notdir $*).exe)$(DQUOTE) >>$@
+ @echo STACKSIZE 2097152 >>$@
+
+# Output file names
+PYTHON_VER= 2.6
+PYTHON_LIB= python27
+PYTHON.LIB= $(PYTHON_LIB)_s$A
+PYTHON.IMPLIB= $(PYTHON_LIB)$A
+ifeq ($(EXEOMF),yes)
+ PYTHON.EXEIMP= $(PYTHON.IMPLIB)
+ LDMODE.EXE= -Zomf
+else
+ PYTHON.EXEIMP= $(PYTHON_LIB).a
+ LDMODE.EXE =
+endif
+PYTHON.DLL= $(PYTHON_LIB).dll
+PYTHON.DEF= $(PYTHON_LIB).def
+PYTHON.EXE= python.exe
+PYTHONPM.EXE= pythonpm.exe
+PGEN.EXE= pgen.exe
+LIBRARY= $(PYTHON.LIB)
+LD_LIBRARY= $(PYTHON.IMPLIB)
+
+# Additional executable parameters
+EXETYPE.$(PYTHON.EXE)= WINDOWCOMPAT
+EXETYPE.$(PYTHONPM.EXE)= WINDOWAPI
+EXETYPE.$(PGEN.EXE)= WINDOWCOMPAT
+DESCRIPTION.$(PYTHON.EXE)= Python object-oriented programming language interpreter for OS/2
+DESCRIPTION.$(PYTHONPM.EXE)= $(DESCRIPTION.$(PYTHON.EXE))
+DESCRIPTION.$(PGEN.EXE)= Python object-oriented programming language parser generator for OS/2
+
+# Module descriptions
+DESCRIPTION.zlib$(MODULE.EXT)= Python Extension DLL for accessing the InfoZip compression library
+DESCRIPTION.crypt$(MODULE.EXT)= Python Extension DLL implementing the crypt$(BRO)$(BRC) function
+DESCRIPTION._tkinter$(MODULE.EXT)= Python Extension DLL for access to Tcl/Tk Environment
+DESCRIPTION.readline$(MODULE.EXT)= Python Extension DLL for access to GNU ReadLine library
+DESCRIPTION.bsddb185$(MODULE.EXT)= Python Extension DLL for access to BSD DB (v1.85) library
+DESCRIPTION._curses$(MODLIB.EXT)= Python Extension DLL for access to ncurses library
+DESCRIPTION.pyexpat$(MODULE.EXT)= Python Extension DLL for access to expat library
+DESCRIPTION.bz2$(MODULE.EXT)= Python Extension DLL for accessing the bz2 compression library
+
+# Source files
+SRC.OS2EMX= config.c dlfcn.c getpathp.c
+SRC.MAIN= $(addprefix $(TOP), \
+ Modules/getbuildinfo.c \
+ Modules/main.c)
+SRC.MODULES= $(addprefix $(TOP), \
+ Modules/gcmodule.c \
+ Modules/signalmodule.c \
+ Modules/posixmodule.c \
+ Modules/threadmodule.c \
+ Modules/arraymodule.c \
+ Modules/binascii.c \
+ Modules/cmathmodule.c \
+ Modules/_codecsmodule.c \
+ Modules/_collectionsmodule.c \
+ Modules/cPickle.c \
+ Modules/cStringIO.c \
+ Modules/_csv.c \
+ Modules/datetimemodule.c \
+ Modules/dlmodule.c \
+ Modules/errnomodule.c \
+ Modules/fcntlmodule.c \
+ Modules/_fileio.c \
+ Modules/_functoolsmodule.c \
+ Modules/_heapqmodule.c \
+ Modules/imageop.c \
+ Modules/itertoolsmodule.c \
+ Modules/_localemodule.c \
+ Modules/mathmodule.c \
+ Modules/md5.c \
+ Modules/md5module.c \
+ Modules/operator.c \
+ Modules/_randommodule.c \
+ Modules/shamodule.c \
+ Modules/sha256module.c \
+ Modules/sha512module.c \
+ Modules/_sre.c \
+ Modules/stropmodule.c \
+ Modules/_struct.c \
+ Modules/symtablemodule.c \
+ Modules/termios.c \
+ Modules/timemodule.c \
+ Modules/timingmodule.c \
+ Modules/_weakref.c \
+ Modules/xxsubtype.c \
+ Modules/zipimport.c)
+SRC.PARSE1= $(addprefix $(TOP), \
+ Parser/acceler.c \
+ Parser/grammar1.c \
+ Parser/listnode.c \
+ Parser/node.c \
+ Parser/parser.c \
+ Parser/parsetok.c \
+ Parser/bitset.c \
+ Parser/metagrammar.c)
+SRC.PARSE2= $(addprefix $(TOP), \
+ Parser/tokenizer.c \
+ Parser/myreadline.c)
+SRC.PARSER= $(SRC.PARSE1) \
+ $(SRC.PARSE2)
+SRC.PYTHON= $(addprefix $(TOP), \
+ Python/Python-ast.c \
+ Python/asdl.c \
+ Python/ast.c \
+ Python/bltinmodule.c \
+ Python/exceptions.c \
+ Python/ceval.c \
+ Python/compile.c \
+ Python/codecs.c \
+ Python/errors.c \
+ Python/formatter_string.c \
+ Python/formatter_unicode.c \
+ Python/frozen.c \
+ Python/frozenmain.c \
+ Python/future.c \
+ Python/getargs.c \
+ Python/getcompiler.c \
+ Python/getcopyright.c \
+ Python/getplatform.c \
+ Python/getversion.c \
+ Python/graminit.c \
+ Python/import.c \
+ Python/importdl.c \
+ Python/marshal.c \
+ Python/modsupport.c \
+ Python/mysnprintf.c \
+ Python/mystrtoul.c \
+ Python/peephole.c \
+ Python/pyarena.c \
+ Python/pyctype.c \
+ Python/pyfpe.c \
+ Python/pymath.c \
+ Python/pystate.c \
+ Python/pystrtod.c \
+ Python/pythonrun.c \
+ Python/structmember.c \
+ Python/symtable.c \
+ Python/sysmodule.c \
+ Python/traceback.c \
+ Python/getopt.c \
+ Python/dynload_shlib.c \
+ Python/thread.c \
+ Python/_warnings.c)
+SRC.OBJECT= $(addprefix $(TOP), \
+ Objects/abstract.c \
+ Objects/boolobject.c \
+ Objects/bufferobject.c \
+ Objects/bytearrayobject.c \
+ Objects/bytes_methods.c \
+ Objects/cellobject.c \
+ Objects/classobject.c \
+ Objects/capsule.c \
+ Objects/cobject.c \
+ Objects/codeobject.c \
+ Objects/complexobject.c \
+ Objects/descrobject.c \
+ Objects/dictobject.c \
+ Objects/enumobject.c \
+ Objects/fileobject.c \
+ Objects/floatobject.c \
+ Objects/frameobject.c \
+ Objects/funcobject.c \
+ Objects/genobject.c \
+ Objects/intobject.c \
+ Objects/iterobject.c \
+ Objects/listobject.c \
+ Objects/longobject.c \
+ Objects/methodobject.c \
+ Objects/moduleobject.c \
+ Objects/object.c \
+ Objects/obmalloc.c \
+ Objects/rangeobject.c \
+ Objects/setobject.c \
+ Objects/sliceobject.c \
+ Objects/stringobject.c \
+ Objects/structseq.c \
+ Objects/tupleobject.c \
+ Objects/typeobject.c \
+ Objects/unicodeobject.c \
+ Objects/unicodectype.c \
+ Objects/weakrefobject.c)
+
+SRC.LIB= $(SRC.OS2EMX) \
+ $(SRC.MAIN) \
+ $(SRC.PARSER) \
+ $(SRC.OBJECT) \
+ $(SRC.PYTHON) \
+ $(SRC.MODULES)
+OBJ.LIB= $(addprefix $(OUT),$(notdir $(SRC.LIB:.c=$O)))
+
+SRC.PGEN= $(SRC.PARSE1) \
+ $(addprefix $(TOP), \
+ Objects/obmalloc.c) \
+ $(addprefix $(TOP), \
+ Python/mysnprintf.c) \
+ $(addprefix $(TOP), \
+ Parser/tokenizer_pgen.c \
+ Parser/pgenmain.c \
+ Parser/pgen.c \
+ Parser/printgrammar.c \
+ Parser/grammar.c \
+ Parser/firstsets.c) \
+
+OBJ.PGEN= $(addprefix $(OUT),$(notdir $(SRC.PGEN:.c=$O)))
+
+SRC.EXE= $(TOP)Modules/python.c
+SRC.PMEXE= pythonpm.c
+
+# Python modules to be dynamically loaded that:
+# 1) have only single source file and require no extra libs
+# 2) use the standard module naming convention
+# (the 'module' in ?????module.c is assumed)
+# - these can be built with implicit rules
+EASYEXTMODULES= fpectl \
+ fpetest \
+ parser \
+ pwd \
+ select
+
+# Python modules to be dynamically loaded that need explicit build rules
+# (either multiple source files and/or non-standard module naming)
+# (NOTE: use shortened names for modules affected by 8 char name limit)
+HARDEXTMODULES= _hotshot \
+ _socket \
+ _testcap \
+ unicoded
+
+# Python modules that are used as libraries and therefore must use
+# a .DLL extension
+LIBEXTMODULES=
+
+# Python external ($(MODULE.EXT)) modules - can be EASY or HARD
+ifeq ($(HAVE_ZLIB),yes)
+ HARDEXTMODULES+= zlib
+endif
+ifeq ($(HAVE_UFC),yes)
+ HARDEXTMODULES+= crypt
+endif
+ifeq ($(HAVE_TCLTK),yes)
+ HARDEXTMODULES+= _tkinter
+ CFLAGS+= -DHAS_DIRENT -I/TclTk80/include
+ TK_LIBS+= -L/TclTk80/lib -ltcl80 -ltk80
+endif
+ifeq ($(HAVE_GREADLINE),yes)
+ HARDEXTMODULES+= readline
+endif
+ifeq ($(HAVE_BSDDB),yes)
+ HARDEXTMODULES+= bsddb185
+endif
+ifeq ($(HAVE_NCURSES),yes)
+ LIBEXTMODULES+= _curses
+ HARDEXTMODULES+= _curses_
+endif
+ifeq ($(HAVE_GDBM),yes)
+ HARDEXTMODULES+= gdbm dbm
+endif
+ifeq ($(HAVE_BZ2),yes)
+ HARDEXTMODULES+= bz2
+endif
+ifeq ($(HAVE_OPENSSL),yes)
+ HARDEXTMODULES+= _ssl
+endif
+
+# Expat is now distributed with the Python source
+HARDEXTMODULES+= pyexpat
+EXPAT.INC= -I../../Modules/expat
+EXPAT.DEF= -DHAVE_EXPAT_H -DXML_NS=1 -DXML_DTD=1 -DXML_BYTE_ORDER=12 \
+ -DXML_CONTENT_BYTES=1024 -DHAVE_MEMMOVE=1 -DHAVE_BCOPY=1
+EXPAT.SRC= $(addprefix ../../Modules/expat/, \
+ xmlparse.c \
+ xmlrole.c \
+ xmltok.c)
+
+# all the external modules
+EXTERNDLLS= $(addsuffix $(MODULE.EXT),$(patsubst %module,%,$(EASYEXTMODULES)))
+EXTERNDLLS+= $(addsuffix $(MODULE.EXT),$(patsubst %module,%,$(HARDEXTMODULES)))
+EXTERNDLLS+= $(addsuffix $(MODLIB.EXT),$(patsubst %module,%,$(LIBEXTMODULES)))
+
+# Targets
+all: $(OUT) $(PYTHON.LIB) $(PYTHON.DEF) $(PYTHON.IMPLIB) $(PYTHON.DLL) \
+ python_noncore
+
+python_noncore:
+ make PY_DEF= $(PYTHON.EXE) $(PYTHONPM.EXE) $(PGEN.EXE) $(EXTERNDLLS)
+
+clean:
+ rm -f $(OUT)*
+ rm -f $(PYTHON.LIB) $(PYTHON.IMPLIB) $(PYTHON.EXEIMP) $(PYTHON.DLL) \
+ $(PYTHON.EXE) $(PYTHONPM.EXE) $(PGEN.EXE) *$(MODULE.EXT) *.dll
+ find ../../Lib -name "*.py[co]" -exec rm {} ";"
+
+lx:
+ @echo Packing everything with lxLite...
+ lxlite $(PYTHON.DLL) $(PYTHON.EXE) $(PYTHONPM.EXE) $(PGEN.EXE)
+
+depend: $(OUTBASE)
+ makedep -f $(OUTBASE)python.dep -o $(BUCK)O -p $(BUCK)\(OUT\) \
+ -r -c $(INCLUDE) $(SRC.LIB) $(SRC.PGEN)
+
+$(OUT): $(OUTBASE)
+
+$(OUT) $(OUTBASE):
+ mkdir.exe $@
+
+$(PYTHON.LIB): $(OBJ.LIB)
+ rm.exe -f $@
+ $(AR) $(ARFLAGS) $@ $^
+
+# the Python core DLL .def file needs to have a number of non-static
+# symbols that aren't part of the Python C API removed (commented out)
+# from the DLL export list.
+$(PYTHON.DEF): $(PYTHON.LIB)
+ @echo Creating .DEF file: $@
+ @echo LIBRARY $(PYTHON_LIB) INITINSTANCE TERMINSTANCE >$@
+ @echo DESCRIPTION $(DQUOTE)Python $(PYTHON_VER) Core DLL$(DQUOTE) >>$@
+ @echo PROTMODE >>$@
+ @echo DATA MULTIPLE NONSHARED >>$@
+ @echo EXPORTS >>$@
+ $(EXPLIB) -u $(PYTHON.LIB) |\
+ sed -e "/^ .init.*/s/^ /; /" \
+ -e "/^ .pcre_.*/s/^ /; /" \
+ -e "/^ .array_methods/s/^ /; /" \
+ -e "/^ .fast_save_leave/s/^ /; /" \
+ -e "/^ .dlopen/s/^ /; /" \
+ -e "/^ .dlsym/s/^ /; /" \
+ -e "/^ .dlclose/s/^ /; /" \
+ -e "/^ .dlerror/s/^ /; /" \
+ -e "/^ ._Py_re_.*/s/^ /; /" \
+ -e "/^ ._Py_MD5.*/s/^ /; /" >>$@
+
+$(PYTHON.IMPLIB): $(PYTHON.DEF)
+ $(IMPLIB) -o $@ $^
+
+$(PYTHON.EXEIMP): $(PYTHON.DEF)
+ $(IMPLIB) -o $@ $^
+
+$(PYTHON.DLL): $(OUT)dllentry$O $(PYTHON.LIB) $(PYTHON.DEF)
+
+# Explicit make targets for the .EXEs to be able to use LD to link
+# (so that fork() will work if required)
+
+$(PYTHON.EXE): $(SRC.EXE) $(PYTHON.EXEIMP) $(OUT)python.def
+ $(CC) -Zmt $(LDMODE.EXE) -Zcrtdll -Wall $(INCLUDE) -L. -lgcc -o $@ $(SRC.EXE) $(PYTHON.EXEIMP) $(LIBS) $(OUT)python.def
+ $(EXEOPT) -aq $(PYTHON.EXE) -h$(NFILES)
+
+$(PYTHONPM.EXE): $(SRC.PMEXE) $(PYTHON.EXEIMP) $(OUT)pythonpm.def
+ $(CC) -Zmt $(LDMODE.EXE) -Zcrtdll -Wall $(INCLUDE) -L. -lgcc -o $@ $(SRC.PMEXE) $(PYTHON.EXEIMP) $(LIBS) $(OUT)pythonpm.def
+ $(EXEOPT) -aq $(PYTHONPM.EXE) -h$(NFILES)
+
+$(PGEN.EXE): $(OBJ.PGEN) $(OUT)pgen.def
+
+# Explicit building instructions for those external modules that require
+# awkward handling (due e.g. to non-std naming, or multiple source files)
+# - standard modules
+
+_hotshot$(MODULE.EXT): $(OUT)_hotshot$O $(OUT)_hotshot_m.def $(PYTHON.IMPLIB)
+ $(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
+
+_socket$(MODULE.EXT): $(OUT)socketmodule$O $(OUT)_socket_m.def $(PYTHON.IMPLIB)
+ $(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
+
+# _testcapi needs to be renamed to be useful
+_testcapi$(MODULE.EXT): $(OUT)_testcapimodule$O $(OUT)_testcapi_m.def $(PYTHON.IMPLIB)
+ $(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
+
+_testcap$(MODULE.EXT): _testcapi$(MODULE.EXT)
+ cp $^ $@
+
+# unicodedata needs to be renamed to be useful
+unicodedata$(MODULE.EXT): $(OUT)unicodedata$O $(OUT)unicodedata_m.def $(PYTHON.IMPLIB)
+ $(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS) $(MODULE_LIBS)
+
+unicoded$(MODULE.EXT): unicodedata$(MODULE.EXT)
+ cp $^ $@
+
+# - optional modules (requiring other software to be installed)
+bsddb185$(MODULE.EXT): $(OUT)bsddbmodule$O $(OUT)bsddb185_m.def $(PYTHON.IMPLIB)
+ $(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) -ldb $(LIBS)
+
+crypt$(MODULE.EXT): $(OUT)cryptmodule$O $(OUT)crypt_m.def $(PYTHON.IMPLIB)
+ $(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) -lufc $(LIBS)
+
+# The _curses_panel module requires a couple of ncurses library entry
+# points, which are best exposed as exports from the _curses module DLL
+$(OUT)_curses_m.def:
+ @echo Creating .DEF file: $@
+ @echo LIBRARY $(notdir $*) INITINSTANCE TERMINSTANCE >$@
+ @echo DESCRIPTION $(DQUOTE)$(DESCRIPTION.$(notdir $*)$(MODLIB.EXT))$(DQUOTE) >>$@
+ @echo DATA MULTIPLE NONSHARED >>$@
+ @echo EXPORTS >>$@
+ @echo init_curses >>$@
+ @echo wnoutrefresh >>$@
+ @echo _nc_panelhook >>$@
+ @echo is_linetouched >>$@
+ @echo mvwin >>$@
+ @echo stdscr >>$@
+ @echo wtouchln >>$@
+
+$(OUT)_curses_panel_m.def:
+ @echo Creating .DEF file: $@
+ @echo LIBRARY $(notdir $*) INITINSTANCE TERMINSTANCE >$@
+ @echo DESCRIPTION $(DQUOTE)Python standard module $(notdir $*)$(DQUOTE) >>$@
+ @echo DATA MULTIPLE NONSHARED >>$@
+ @echo IMPORTS >>$@
+ @echo _curses.wnoutrefresh >>$@
+ @echo _curses._nc_panelhook >>$@
+ @echo _curses.is_linetouched >>$@
+ @echo _curses.mvwin >>$@
+ @echo _curses.stdscr >>$@
+ @echo _curses.wtouchln >>$@
+ @echo EXPORTS >>$@
+ @echo init_curses_panel >>$@
+
+_curses$(MODLIB.EXT): $(OUT)_cursesmodule$O $(OUT)_curses_m.def $(PYTHON.IMPLIB)
+ $(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS) -lncurses
+
+# curses_panel needs to be renamed to be useful
+_curses_panel$(MODULE.EXT): $(OUT)_curses_panel$O $(OUT)_curses_panel_m.def $(PYTHON.IMPLIB)
+ $(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS) -lpanel
+
+_curses_$(MODULE.EXT): _curses_panel$(MODULE.EXT)
+ cp $^ $@
+
+dbm$(MODULE.EXT): $(OUT)dbmmodule$O $(OUT)dbm_m.def $(PYTHON.IMPLIB)
+ $(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS) -lgdbm
+
+gdbm$(MODULE.EXT): $(OUT)gdbmmodule$O $(OUT)gdbm_m.def $(PYTHON.IMPLIB)
+ $(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS) -lgdbm
+
+
+# Expat is now distributed with Python, so use the included version
+$(OUT)pyexpat$O: ../../Modules/pyexpat.c
+ $(CC) $(CFLAGS) $(EXPAT.INC) -c -o $@ $^
+$(OUT)xmlparse$O: ../../Modules/expat/xmlparse.c
+ $(CC) $(CFLAGS) $(EXPAT.INC) $(EXPAT.DEF) -c -o $@ $^
+$(OUT)xmlrole$O: ../../Modules/expat/xmlrole.c
+ $(CC) $(CFLAGS) $(EXPAT.INC) $(EXPAT.DEF) -c -o $@ $^
+$(OUT)xmltok$O: ../../Modules/expat/xmltok.c
+ $(CC) $(CFLAGS) $(EXPAT.INC) $(EXPAT.DEF) -c -o $@ $^
+pyexpat$(MODULE.EXT): $(OUT)pyexpat$O $(OUT)xmlparse$O $(OUT)xmlrole$O \
+ $(OUT)xmltok$O $(OUT)pyexpat_m.def $(PYTHON.IMPLIB)
+ $(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
+
+readline$(MODULE.EXT): $(OUT)readline$O $(OUT)readline_m.def $(PYTHON.IMPLIB)
+ $(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS) -lreadline -lncurses
+
+#_tkinter$(MODULE.EXT): $(OUT)_tkinter$O $(OUT)tclNotify$O $(OUT)tkappinit$O
+_tkinter$(MODULE.EXT): $(OUT)_tkinter$O $(OUT)tclNotify$O \
+ $(OUT)_tkinter_m.def $(PYTHON.IMPLIB)
+ $(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS) $(TK_LIBS)
+
+zlib$(MODULE.EXT): $(OUT)zlibmodule$O $(OUT)zlib_m.def $(PYTHON.IMPLIB)
+ $(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS) -lz
+
+bz2$(MODULE.EXT): $(OUT)bz2module$O $(OUT)bz2_m.def $(PYTHON.IMPLIB)
+ $(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS) -lbz2
+
+_ssl$(MODULE.EXT): $(OUT)_ssl$O $(OUT)_ssl_m.def $(PYTHON.IMPLIB)
+ $(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS) -lssl -lcrypto
+
+# the test target
+test:
+ -find ../../Lib -name "*.py[co]" -exec rm {} ";"
+ -./python -E -tt ../../lib/test/regrtest.py -l -u "network"
+ ./python -E -tt ../../lib/test/regrtest.py -l -u "network"
+
+-include $(OUTBASE)python.dep
diff --git a/PC/os2emx/README.os2emx b/PC/os2emx/README.os2emx
new file mode 100644
index 0000000..0894a50
--- /dev/null
+++ b/PC/os2emx/README.os2emx
@@ -0,0 +1,701 @@
+This is a port of Python 2.6 to OS/2 using the EMX development tools
+=========================================================================
+
+What's new since the previous release
+-------------------------------------
+
+Another day, another version...
+
+
+Licenses and info about Python and EMX
+--------------------------------------
+
+Please read the file README.Python-2.6 included in this package for
+information about Python 2.6. This file is the README file from the
+Python 2.6 source distribution available via http://www.python.org/
+and its mirrors. The file LICENCE.Python-2.6 is the text of the Licence
+from the Python 2.6 source distribution.
+
+Note that the EMX package that this package depends on is released under
+the GNU General Public Licence. Please refer to the documentation
+accompanying the EMX Runtime libraries for more information about the
+implications of this. A copy of version 2 of the GPL is included as the
+file COPYING.gpl2.
+
+Readline and GDBM are covered by the GNU General Public Licence. I think
+Eberhard Mattes' porting changes to BSD DB v1.85 are also GPL'ed (BSD DB
+itself is BSD Licenced). ncurses and expat appear to be covered by MIT
+style licences - please refer to the source distributions for more detail.
+zlib is distributable under a very free license. GNU UFC is under the
+GNU LGPL (see file COPYING.lib).
+
+My patches to the Python-2.x source distributions, and any other packages
+used in this port, are placed in the public domain.
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the author be held liable for any damages arising from the
+use of the software.
+
+I do hope however that it proves useful to someone.
+
+
+Other ports
+-----------
+
+There have been ports of previous versions of Python to OS/2.
+
+The best known would be that by Jeff Rush, most recently of version
+1.5.2. Jeff used IBM's Visual Age C++ (v3) for his ports, and his
+patches have been included in the Python 2.6 source distribution.
+
+Andy Zabolotny implemented a port of Python v1.5.2 using the EMX
+development tools. His patches against the Python v1.5.2 source
+distribution have become the core of this port, and without his efforts
+this port wouldn't exist. Andy's port also appears to have been
+compiled with his port of gcc 2.95.2 to EMX, which I have but have
+chosen not to use for the binary distribution of this port (see item 16
+of the "YOU HAVE BEEN WARNED" section below).
+
+It is possible to have these earlier ports still usable after installing
+this port - see the README.os2emx.multiple_versions file, contributed by
+Dr David Mertz, for a suggested approach to achieving this.
+
+
+Software requirements
+---------------------
+
+This package requires the EMX Runtime package, available from the
+Hobbes (http://hobbes.nmsu.edu/) and LEO (http://archiv.leo.org/)
+archives of OS/2 software. I have used EMX version 0.9d fix04 in
+developing this port.
+
+My development system is running OS/2 v4 with fixpack 12.
+
+3rd party software which has been linked into dynamically loaded modules:
+- ncurses (see http://dickey.his.com/ for more info, v5.2)
+- GNU Readline (Kai Uwe Rommel's port available from Hobbes or LEO, v2.1)
+- GNU GDBM (Kai Uwe Rommel's port available from Hobbes or LEO, v1.7.3)
+- zlib (derived from Hung-Chi Chu's port of v1.1.3, v1.1.4)
+- expat (distributed with Python, v1.95.6)
+- GNU UFC (Kai Uwe Rommel's port available from LEO, v2.0.4)
+
+
+About this port
+---------------
+
+I have attempted to make this port as complete and functional as I can,
+notwithstanding the issues in the "YOU HAVE BEEN WARNED" section below.
+
+Core components:
+
+Python.exe is linked as an a.out executable, ie using EMX method E1
+to compile & link the executable. This is so that fork() works (see
+"YOU HAVE BEEN WARNED" item 1).
+
+Python26.dll is created as a normal OMF DLL, with an OMF import
+library and module definition file. There is also an a.out (.a) import
+library to support linking the DLL to a.out executables. The DLL
+requires the EMX runtime DLLs.
+
+This port has been built with complete support for multithreading.
+
+Modules:
+
+With the exception of modules that have a significant code size, or are
+not recommended or desired for normal use, the standard modules are now
+built into the core DLL rather than configured as dynamically loadable
+modules. This is for both reasons of performance (startup time) and
+memory use (lots of small DLLs fragment the address space).
+
+I haven't yet changed the building of Python's dynamically loadable
+modules over to using the DistUtils.
+
+See "YOU HAVE BEEN WARNED" item 3 for notes about the fcntl module, and
+"YOU HAVE BEEN WARNED" item 10 for notes about the pwd and grp modules.
+
+This port supports case sensitive module import semantics, matching
+the Windows release. This can be deactivated by setting the PYTHONCASEOK
+environment variable (the value doesn't matter) - see "YOU HAVE BEEN WARNED"
+item 12.
+
+Optional modules:
+
+Where I've been able to locate the required 3rd party packages already
+ported to OS/2, I've built and included them.
+
+These include ncurses (_curses, _curses_panel), BSD DB (bsddb185),
+GNU GDBM (gdbm, dbm), zlib (zlib), GNU Readline (readline), and GNU UFC
+(crypt).
+
+Expat is now included in the Python release sourceball, and the pyexpat
+module is always built.
+
+I have built these modules statically linked against the 3rd party
+libraries. Unfortunately my attempts to use the dll version of GNU
+readline have been a dismal failure, in that when the dynamically
+linked readline module is active other modules immediately provoke a
+core dump when imported.
+
+Only the BSD DB package (part of the BSD package distributed with EMX)
+needs source modifications to be used for this port, pertaining to use
+of errno with multithreading.
+
+The other packages, except for ncurses and zlib, needed Makefile changes
+for multithreading support but no source changes.
+
+The _curses_panel module is a potential problem - see "YOU HAVE BEEN
+WARNED" item 13.
+
+Upstream source patches:
+
+No updates to the Python 2.6 release have become available.
+
+Eberhard Mattes' EMXFIX04 update to his EMX 0.9d tools suite includes
+bug fixes for the BSD DB library. The bsddb module included in this
+port incorporates these fixes.
+
+Library and other distributed Python code:
+
+The Python standard library lives in the Lib directory. All the standard
+library code included with the Python 2.6 source distribution is included
+in the binary archive, with the exception of the dos-8x3 and tkinter
+subdirectories which have been omitted to reduce the size of the binary
+archive - the dos-8x3 components are unnecessary duplicates and Tkinter
+is not supported by this port (yet). All the plat-* subdirectories in the
+source distribution have also been omitted, except for the plat-os2emx
+subdirectory.
+
+The Tools and Demo directories contain a collection of Python scripts.
+To reduce the size of the binary archive, the Demo/sgi, Demo/Tix,
+Demo/tkinter, Tools/audiopy and Tools/IDLE subdirectories have been
+omitted as not being supported by this port. The Misc directory has
+also been omitted.
+
+All subdirectories omitted from the binary archive can be reconstituted
+from the Python 2.6 source distribution, if desired.
+
+Support for building Python extensions:
+
+The Config subdirectory contains the files describing the configuration
+of the interpreter and the Makefile, import libraries for the Python DLL,
+and the module definition file used to create the Python DLL. The
+Include subdirectory contains all the standard Python header files
+needed for building extensions.
+
+As I don't have the Visual Age C++ compiler, I've made no attempt to
+have this port support extensions built with that compiler.
+
+
+Packaging
+---------
+
+This port is packaged as follows:
+- python-2.6-os2emx-bin-03????.zip (binaries, library modules)
+- python-2.6-os2emx-src-03???? (patches+makefiles for non-Python code)
+
+As all the Python specific patches for the port are now part of the
+Python release tarball, only the patches and makefiles involved in
+building external libraries for optional extensions are included in
+the source archive.
+
+Documentation for the Python language, as well as the Python 2.6
+source distibution, can be obtained from the Python website
+(http://www.python.org/) or the Python project pages at Sourceforge
+(http://sf.net/projects/python/).
+
+
+Installation
+------------
+
+Obtain and install, as per the included instructions, the EMX runtime
+package.
+
+Unpack this archive, preserving the subdirectories, in the root directory
+of the drive where you want Python to live.
+
+Add the Python directory (eg C:\Python26) to the PATH and LIBPATH
+variables in CONFIG.SYS.
+
+You should then set the PYTHONHOME and PYTHONPATH environment variables
+in CONFIG.SYS.
+
+PYTHONHOME should be set to Python's top level directory. PYTHONPATH
+should be set to the semicolon separated list of principal Python library
+directories.
+I use:
+ SET PYTHONHOME=F:/Python26
+ SET PYTHONPATH=F:/Python26/Lib;F:/Python26/Lib/plat-os2emx;
+ F:/Python26/Lib/lib-dynload;F:/Python26/Lib/site-packages
+
+NOTE!: the PYTHONPATH setting above is linewrapped for this document - it
+should all be on one line in CONFIG.SYS!
+
+If you wish to use the curses module, you should set the TERM and TERMINFO
+environment variables appropriately.
+
+If you don't already have ncurses installed, I have included a copy of the
+EMX subset of the Terminfo database included with the ncurses-5.2 source
+distribution. This can be used by setting the TERMINFO environment variable
+to the path of the Terminfo subdirectory below the Python home directory.
+On my system this looks like:
+ SET TERMINFO=F:/Python26/Terminfo
+
+For the TERM environment variable, I would try one of the following:
+ SET TERM=ansi
+ SET TERM=os2
+ SET TERM=window
+
+You will have to reboot your system for these changes to CONFIG.SYS to take
+effect.
+
+If you wish to compile all the included Python library modules to bytecode,
+you can change into the Python home directory and run the COMPILEALL.CMD
+batch file.
+
+You can execute the regression tests included with the Python 2.6 source
+distribution by changing to the Python 2.6 home directory and executing the
+REGRTEST.CMD batch file. The following tests are known to fail at this
+time:
+- test_mhlib (I don't know of any port of MH to OS/2);
+- test_strptime (see "YOU HAVE BEEN WARNED" item 22);
+- test_time (see "YOU HAVE BEEN WARNED" item 22);
+- test_posixpath (see "YOU HAVE BEEN WARNED" item 23).
+
+Note that some of the network related tests expect the loopback interface
+(interface "lo", with IP address 127.0.0.1) to be enabled, which from my
+experience is not the default configuration. Additionally, test_popen2
+expects the "cat" utility (such as found in ports of the GNU tools) to
+be installed.
+
+
+Building from source
+--------------------
+
+With the EMX port now checked into Python's CVS repository, the build
+infrastructure is part of the Python release sourceball.
+
+Prerequisites
+
+First and foremost, you need an operational EMX development installation -
+EMX v0.9d with fix04 (the latest at time of writing) & the gcc 2.8.1
+compiler released by Eberhard Mattes is the recommended setup.
+
+If you have a different version of gcc installed, see "YOU HAVE BEEN
+WARNED" item 16.
+
+Other items of software required:-
+
+- GNU make (I'm using v3.76.1)
+- rm, cp, mkdir from the GNU file utilities package
+- GNU find
+- GNU sed
+
+Procedure
+
+0. all changes mentioned apply to files in the PC/os2emx subdirectory
+ of the Python release source tree. make is also executed from this
+ directory, so change into this directory before proceeding.
+
+1. decide if you need to change the location of the Python installation.
+ If you wish to do this, set the value of the Makefile variable LIB_DIR
+ to the directory you wish to use for PYTHONHOME
+ (eg /usr/local/lib/python2.6).
+
+ If you want Python to find its library without the PYTHONHOME
+ environment variable set, set the value of the Makefile variable
+ FIXED_PYHOME to "yes" (uncomment the appropriate line).
+
+2. If you wish the Python executables (python.exe, pythonpm.exe & pgen.exe)
+ to be installed in a directory other than the PYTHONHOME directory, set
+ the value of the Makefile variable EXE_DIR to the appropriate directory.
+
+3. If you wish the Python core DLL (python27.dll) to be installed in a
+ directory other than the directory in which the Python executables are
+ installed (by default, the PYTHONHOME directory), set the value of the
+ Makefile variable DLL_DIR to the appropriate directory. This DLL must
+ be placed in a directory on the system's LIBPATH, or that gets set
+ with BEGINLIBPATH or ENDLIBPATH.
+
+4. If you have installed any of the libraries that can be used to build
+ optional Python modules, set the value of the relevant HAVE_<package>
+ Makefile variable to "yes". The Makefile currently supports:
+
+ library Makefile variable
+ ........................................
+ zlib (1.1.4) HAVE_ZLIB
+ GNU UltraFast Crypt HAVE_UFC
+ Tcl/Tk HAVE_TCLTK (not known to work)
+ GNU Readline HAVE_GREADLINE
+ BSD DB (v1.85) HAVE_BSDDB
+ ncurses HAVE_NCURSES
+ GNU gdbm HAVE_GDBM
+ libbz2 HAVE_BZ2
+ OpenSSL HAVE_OPENSSL
+
+ Please note that you need to check that what you have installed
+ is compatible with Python's build options. In particular, the
+ BSD DB v1.85 library needs to be rebuilt with a source patch for
+ multithread support (doesn't change the library's reentrant status
+ but allows it to be linked to Python which is multithreaded).
+ Widely available binary packages of other librarys & DLLs are
+ not built/linked with multithread support. Beware!
+
+ Also note that the Makefile currently expects any libraries to be
+ found with the default library search path. You may need to add
+ -L switches to the LDFLAGS Makefile variable if you have installed
+ libraries in directories not in the default search path (which can
+ be controlled by the LIBRARY_PATH environment variable used by EMX).
+
+5. make
+
+ It is usually a good idea to redirect the stdout and stderr streams
+ of the make process to log files, so that you can review any messages.
+
+6. make test
+
+ This runs the Python regression tests, and completion is a sign of
+ a usable build. You should check the list of skipped modules to
+ ensure that any optional modules you selected have been built;
+ checking the list of failures against the list of known failures
+ elsewhere in this document is also prudent.
+
+7. make install
+ >>>>>> NOT YET COMPLETE <<<<<<
+
+8. change to a directory outside the Python source tree and start Python.
+ Check the version and build date to confirm satisfactory installation.
+
+
+YOU HAVE BEEN WARNED!!
+----------------------
+
+I know about a number of nasties in this port.
+
+1. Eberhard Mattes, author of EMX, writes in his documentation that fork()
+is very inefficient in the OS/2 environment. It also requires that the
+executable be linked in a.out format rather than OMF. Use the os.exec
+and/or the os.spawn family of functions where possible.
+
+2. In the absence of GNU Readline, terminating the interpreter requires a
+control-Z (^Z) followed by a carriage return. Jeff Rush documented this
+problem in his Python 1.5.2 port. With Readline, a control-D (^D) works
+as per the standard Unix environment.
+
+3. EMX only has a partial implementation of fcntl(). The fcntl module
+in this port supports what EMX supports. If fcntl is important to you,
+please review the EMX C Library Reference (included in .INF format in the
+EMXVIEW.ZIP archive as part of the complete EMX development tools suite).
+Because of other side-effects I have modified the test_fcntl.py test
+script to deactivate the exercising of the missing functionality.
+
+4. the PyBSDDB3 module has been imported into the Python standard
+library, with the intent of superceding the BSDDB 1.85 module (bsddb).
+As I don't yet have a satisfactory port of Sleepcat's more recent DB
+library (3.3.x/4.0.x/4.1.x), I haven't included a binary of this
+module. I have left the Python part of the PyBSDDB package in this
+distribution for completeness.
+
+5. As a consequence of the PyBSDDB3 module being imported, the former
+BSD DB (bsddb) module, linked against the DB v1.85 library from EMX,
+has been renamed bsddb185. The bsddb185 module will not be built by
+default on most platforms, but in the absence of a PyBSDDB3 module I
+have retained it in the EMX port.
+
+Version 1.85 of the DB library is widely known to have bugs, although
+some patches have become available (and are incorporated into the
+included bsddb185 module). Unless you have problems with software
+licenses which would rule out GDBM (and the dbm module because it is
+linked against the GDBM library) or need it for file format compatibility,
+you may be better off deleting it and relying on GDBM.
+
+Any code you have which uses the v1.85 bsddb module can be modified to
+use the renamed module by changing
+
+ import bsddb
+
+to
+
+ import bsddb185 as bsddb
+
+6. The readline module has been linked against ncurses rather than the
+termcap library supplied with EMX.
+
+7. I have configured this port to use "/" as the preferred path separator
+character, rather than "\" ('\\'), in line with the convention supported
+by EMX. Backslashes are still supported of course, and still appear in
+unexpected places due to outside sources that don't get normalised.
+
+8. While the DistUtils components are now functional, other
+packaging/binary handling tools and utilities such as those included in
+the Demo and Tools directories - freeze in particular - are unlikely to
+work. If you do get them going, I'd like to know about your success.
+
+9. I haven't set out to support the [BEGIN|END]LIBPATH functionality
+supported by one of the earlier ports (Rush's??). If it works let me know.
+
+10. As a result of the limitations imposed by EMX's library routines, the
+standard extension module pwd only synthesises a simple passwd database,
+and the grp module cannot be supported at all.
+
+I have written pure Python substitutes for pwd and grp, which can process
+real passwd and group files for those applications (such as MailMan) that
+require more than EMX emulates. I have placed pwd.py and grp.py in
+Lib/plat-os2emx, which is usually before Lib/lib-dynload (which contains
+pwd.pyd) in the PYTHONPATH. If you have become attached to what pwd.pyd
+supports, you can put Lib/lib-dynload before Lib/plat-os2emx in PYTHONPATH
+or delete/rename pwd.py & grp.py.
+
+pwd.py & grp.py support locating their data files by looking in the
+environment for them in the following sequence:
+pwd.py: $ETC_PASSWD (%ETC_PASSWD%)
+ $ETC/passwd (%ETC%/passwd)
+ $PYTHONHOME/Etc/passwd (%PYTHONHOME%/Etc/passwd)
+grp.py: $ETC_GROUP (%ETC_GROUP%)
+ $ETC/group (%ETC%/group)
+ $PYTHONHOME/Etc/group (%PYTHONHOME%/Etc/group)
+
+The ETC_PASSWD and ETC_GROUP environment variables are intended to allow
+support for multiple passwd/grp files, where other applications may not
+support as wide a variety of input variations (drive remappings,
+separators etc).
+
+Both modules support using either the ":" character (Unix standard) or
+";" (OS/2, DOS, Windows standard) field separator character, and pwd.py
+implements the following drive letter conversions for the home_directory and
+shell fields (for the ":" separator only):
+ $x -> x:
+ x; -> x:
+
+Example versions of passwd and group are in the Etc subdirectory. The
+regression tests (test_pwd and test_grp) will fail if valid password and
+group files cannot be found, but should pass otherwise.
+
+Be aware that Python's pwd & group modules are for reading password and
+group information only.
+
+11. EMX's termios routines don't support all of the functionality now
+exposed by the termios module - refer to the EMX documentation to find
+out what is supported.
+
+12. The case sensitive import semantics introduced in Python 2.1 for other
+case insensitive but case preserving file/operating systems (Windows etc),
+have been incorporated into this port, and are active by default. Setting
+the PYTHONCASEOK environment variable (to any value) reverts to the
+previous (case insensitive) semantics. This can be an issue with some
+file management utilities that do not preserve the case of file and
+directory names.
+
+13. Because I am statically linking ncurses, the _curses_panel
+module has potential problems arising from separate library data areas.
+To avoid this, I have configured the _curses_.pyd (imported as
+"_curses_panel") to import the ncurses symbols it needs from _curses.dll
+(which is the curses module, but with a .dll extension rather than .pyd
+so that the dynamic loader can actually import the symbols from it as a
+DLL).
+
+The site module (Lib/site.py) has code added to tweak BEGINLIBPATH so
+that _curses.dll is found when _curses_panel is imported. If you have
+problems attempting to use the _curses_panel support please let me know,
+and I'll have another look at this.
+
+14. sys.platform reports "os2emx" instead of "os2". os.name still
+reports "os2". This change was to make it easier to distinguish between
+the VAC++ build (formerly maintained by Michael Muller) and the EMX build
+(this port), principally for DistUtils.
+
+15. it appears that the %W substitution in the EMX strftime() routine has
+an off-by-one bug. strftime was listed as passing the regression tests
+in previous releases, but this fact appears to have been an oversight in
+the regression test suite. To fix this really requires a portable
+strftime routine - I'm looking into using one from FreeBSD, but its not
+ready yet.
+
+16. I have successfully built this port with Andy Zabolotny's ports of
+pgcc 2.95 and gcc 3.2.1, in addition to EM's gcc 2.8.1. To use the
+bsddb185 module with the gcc 3.2.1 build, I had to recompile the DB library
+with gcc 3.2.1 - I don't know why, but trying to import the module built
+against a DB library compiled with gcc 2.8.1 would result in a SYS3175
+error.
+
+I have not attempted to compile Python with any version of gcc prior to
+v2.8.1.
+
+This release sees the default optimisation change to
+"-O3 -fomit-frame-pointer -mprobe". This works fine too for pgcc 2.95
+but not for gcc 3.2.1.
+
+With gcc 3.2.1, -O3 causes 2 unexpected test failures: test_format and
+test_unicode. Both these tests pass if -O2 is instead of -O3 with this
+compiler, and the performance difference is negligible (in contrast to
+gcc 2.8.1 and pgcc 2.95, where the performance difference between the
+2 optimisation settings approaches 10%).
+
+17. os.spawnv() and os.spawnve() expose EMX's library routines rather
+than use the emulation in os.py.
+
+In order to make use of some of the features this makes available in
+the OS/2 environment, you should peruse the relevant EMX documentation
+(EMXLIB.INF in the EMXVIEW.ZIP archive accompanying the EMX archives
+on Hobbes or LEO). Be aware that I have exposed all the "mode" options
+supported by EMX, but there are combinations that either cannot be
+practically used by/in Python or have the potential to compromise your
+system's stability.
+
+18. pythonpm.exe used to be just python.exe with the WINDOWAPI linker
+option set in the pythonpm.def file. In practice, this turns out to do
+nothing useful.
+
+I have written a replacement which wraps the Python DLL in a genuine
+Presentation Manager application. This version actually runs the
+Python interpreter in a separate thread from the PM shell, in order
+that PythonPM has a functioning message queue as good PM apps should.
+In its current state, PythonPM's window is hidden. It can be displayed,
+although it will have no content as nothing is ever written to the
+window. Only the "hide" button is available. Although the code
+has support for shutting PythonPM down when the Python interpreter is
+still busy (via the "control" menu), this is not well tested and given
+comments I've come across in EMX documentation suggesting that the
+thread killing operation has problems I would suggest caution in
+relying on this capability.
+
+PythonPM processes commandline parameters normally. The standard input,
+output and error streams are only useful if redirected, as PythonPM's
+window is not a console in any form and so cannot accept or display
+anything. This means that the -i option is ineffective.
+
+Because the Python thread doesn't create its own message queue, creating
+PM Windows and performing most PM operations is not possible from within
+this thread. How this will affect supporting PM extensions (such as
+Tkinter using a PM port of Tcl/Tk, or wxPython using the PM port of
+WxWindows) is still being researched.
+
+Note that os.fork() _DOES_NOT_WORK_ in PythonPM - SYS3175s are the result
+of trying. os.spawnv() _does_ work. PythonPM passes all regression tests
+that the standard Python interpreter (python.exe) passes, with the exception
+of test_fork1 and test_socket which both attempt to use os.fork().
+
+I very much want feedback on the performance, behaviour and utility of
+PythonPM. I would like to add a PM console capability to it, but that
+will be a non-trivial effort. I may be able to leverage the code in
+Illya Vaes' Tcl/Tk port, which would make it easier.
+
+19. os.chdir() uses EMX's _chdir2(), which supports changing both drive
+and directory at once. Similarly, os.getcwd() uses EMX's _getcwd()
+which returns drive as well as path.
+
+20. pyconfig.h is installed in the Include subdirectory with all
+other include files.
+
+21. the default build explicitly sets the number of file handles
+available to a Python process to 250. EMX default is 40, which is
+insufficient for the tempfile regression test (test_tempfile) which
+tries to create 100 temporary files.
+
+This setting can be overridden via the EMXOPT environment variable:
+ set EMXOPT=-h250
+is equivalent to the setting currently used. The emxbind utility (if you
+have it installed) can also be used to permanently change the setting in
+python.exe - please refer to the EMX documentation for more information.
+
+22. a pure python strptime module is now part of the Python standard
+library, superceding a platform specific extension module. This module
+leverages the strftime module, and as a result test_strptime fails
+due to the EMX strftime bug in item 20 above.
+
+23. test_posixpath attempts to exercise various Posix path related
+functionality. Most of the sub-tests pass, but the "ismount" and
+"samestat" subtests fail:
+- EMX provides not satisfactory mount point emulation, so "ismount"
+ cannot succeed;
+- EMX documents that successive stat() calls will produce different
+ results, so "samestat" cannot succeed.
+
+test_posixpath should skip these tests on EMX.
+
+24. I have reports of BitTorrent not working. It appears that the
+EMX select() emulation, possibly in concert with bugs in the TCP/IP
+stack, runs into problems under the stress imposed by this application.
+I think it suffices to say that BitTorrent is a fair stress test of a
+system's networking capability.
+
+25. In the absence of an EMX implementation of the link() function, I've
+implemented a crude Python emulation, in the file
+Lib/plat-os2emx/_emx_link.py. This is imported into the os module, and
+becomes available as os.link() in the normal way.
+
+The emulation copies the source file in binary mode, and will fail if
+disk space is exhausted. The call fails if the target already exists.
+There are no guarantees to thread safety with this emulation - beware!
+
+The emulation was written to support a link() based file locking system
+used in GNU Mailman.
+
+26. AF_UNIX sockets, otherwise known as Unix domain sockets, are now
+supported. Unfortunately, there are some traps arising from the
+implementation in IBM's TCP/IP stack:-
+- the path name must start with '\\socket\\' ('/socket/' won't work!),
+ with the length of the full path name less than 108 characters;
+- unlike Unix, the socket endpoints don't exist in the filesystem;
+- by default, sockets are in binary mode.
+
+27. As of Python 2.4, the mpz, rotor and xreadlines modules have been
+dropped from the Python source tree.
+
+28. The subprocess module was added to the standard library relatively
+late in the 2.4 development cycle. Unfortunately I haven't had the
+round tuits to adapt the module to the EMX environment yet, and
+test_subprocess has a number of failures as a result.
+
+29. The default stack size for threads has been 64k. This is proving
+insufficient for some codebases, such as Zope. The thread stack size
+still defaults to 64k, but this can now be increased via the stack_size()
+function exposed by the threading & thread modules as well as by defining
+THREAD_STACK_SIZE to an appropriate value in the Makefile (which contains
+a commented out definition for 128kB thread stacks). I have seen
+references to heavy Zope/Plone usage requiring 1MB thread stacks on
+FreeBSD and Linux, but doubt that for most likely usage on OS/2 that
+more than 256kB is necessary. The size of the required stacks (main
+and thread) can vary significantly depending on which version of gcc
+is used along with the compiler optimisations selected. Note that the
+main thread stack size is set during linking and is currently 2MB.
+
+... probably other issues that I've not encountered, or don't remember :-(
+
+If you encounter other difficulties with this port, which can be
+characterised as peculiar to this port rather than to the Python release,
+I would like to hear about them. However I cannot promise to be able to do
+anything to resolve such problems. See the Contact section below...
+
+
+To do...
+--------
+
+In no particular order of apparent importance or likelihood...
+
+- support Tkinter and/or alternative GUI (wxWindows??)
+
+
+Credits
+-------
+
+In addition to people identified above, I'd like to thank:
+- the BDFL, Guido van Rossum, and crew for Python;
+- Dr David Mertz, for trying out a pre-release of this port;
+- the Python-list/comp.lang.python community;
+- John Poltorak, for input about pwd/grp.
+
+Contact
+-------
+
+Constructive feedback, negative or positive, about this port is welcome
+and should be addressed to me at the e-mail addresses below.
+
+I have a private mailing list for announcements of fixes & updates to
+this port. If you wish to receive such e-mail announcments, please send
+me an e-mail requesting that you be added to this list.
+
+Andrew MacIntyre
+E-mail: andymac@bullseye.apana.org.au, or andymac@pcug.org.au
+Web: http://www.andymac.org/
+
+28 January, 2008.
diff --git a/PC/os2emx/config.c b/PC/os2emx/config.c
new file mode 100644
index 0000000..cbab25c
--- /dev/null
+++ b/PC/os2emx/config.c
@@ -0,0 +1,182 @@
+/* -*- C -*- ***********************************************
+Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam,
+The Netherlands.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Stichting Mathematisch
+Centrum or CWI or Corporation for National Research Initiatives or
+CNRI not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+While CWI is the initial source for this software, a modified version
+is made available by the Corporation for National Research Initiatives
+(CNRI) at the Internet address ftp://ftp.python.org.
+
+STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH
+CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+******************************************************************/
+
+/* Module configuration */
+
+/* This file contains the table of built-in modules.
+ See init_builtin() in import.c. */
+
+#include "Python.h"
+
+extern void initos2();
+extern void initsignal();
+#ifdef WITH_THREAD
+extern void initthread();
+#endif
+extern void init_codecs();
+extern void init_csv();
+extern void init_locale();
+extern void init_random();
+extern void init_sre();
+extern void init_symtable();
+extern void init_weakref();
+extern void initarray();
+extern void initbinascii();
+extern void initcPickle();
+extern void initcStringIO();
+extern void init_collections();
+extern void initcmath();
+extern void initdatetime();
+extern void initdl();
+extern void initerrno();
+extern void initfcntl();
+extern void init_fileio();
+extern void init_functools();
+extern void init_heapq();
+extern void initimageop();
+extern void inititertools();
+extern void initmath();
+extern void init_md5();
+extern void initoperator();
+extern void init_sha();
+extern void init_sha256();
+extern void init_sha512();
+extern void initstrop();
+extern void init_struct();
+extern void inittermios();
+extern void inittime();
+extern void inittiming();
+extern void initxxsubtype();
+extern void initzipimport();
+#if !HAVE_DYNAMIC_LOADING
+extern void init_curses();
+extern void init_curses_panel();
+extern void init_hotshot();
+extern void init_testcapi();
+extern void initbsddb185();
+extern void initbz2();
+extern void initfpectl();
+extern void initfpetest();
+extern void initparser();
+extern void initpwd();
+extern void initunicodedata();
+extern void initzlib();
+#ifdef USE_SOCKET
+extern void init_socket();
+extern void initselect();
+#endif
+#endif
+/* -- ADDMODULE MARKER 1 -- */
+
+extern void PyMarshal_Init();
+extern void initimp();
+extern void initgc();
+
+struct _inittab _PyImport_Inittab[] = {
+
+ {"os2", initos2},
+ {"signal", initsignal},
+#ifdef WITH_THREAD
+ {"thread", initthread},
+#endif
+ {"_codecs", init_codecs},
+ {"_csv", init_csv},
+ {"_locale", init_locale},
+ {"_random", init_random},
+ {"_sre", init_sre},
+ {"_symtable", init_symtable},
+ {"_weakref", init_weakref},
+ {"array", initarray},
+ {"binascii", initbinascii},
+ {"cPickle", initcPickle},
+ {"cStringIO", initcStringIO},
+ {"_collections", init_collections},
+ {"cmath", initcmath},
+ {"datetime", initdatetime},
+ {"dl", initdl},
+ {"errno", initerrno},
+ {"fcntl", initfcntl},
+ {"_fileio", init_fileio},
+ {"_functools", init_functools},
+ {"_heapq", init_heapq},
+ {"imageop", initimageop},
+ {"itertools", inititertools},
+ {"math", initmath},
+ {"_md5", init_md5},
+ {"operator", initoperator},
+ {"_sha", init_sha},
+ {"_sha256", init_sha256},
+ {"_sha512", init_sha512},
+ {"strop", initstrop},
+ {"_struct", init_struct},
+ {"termios", inittermios},
+ {"time", inittime},
+ {"timing", inittiming},
+ {"xxsubtype", initxxsubtype},
+ {"zipimport", initzipimport},
+#if !HAVE_DYNAMIC_LOADING
+ {"_curses", init_curses},
+ {"_curses_panel", init_curses_panel},
+ {"_hotshot", init_hotshot},
+ {"_testcapi", init_testcapi},
+ {"bsddb185", initbsddb185},
+ {"bz2", initbz2},
+ {"fpectl", initfpectl},
+ {"fpetest", initfpetest},
+ {"parser", initparser},
+ {"pwd", initpwd},
+ {"unicodedata", initunicodedata},
+ {"zlib", initzlib},
+#ifdef USE_SOCKET
+ {"_socket", init_socket},
+ {"select", initselect},
+#endif
+#endif
+/* -- ADDMODULE MARKER 2 -- */
+
+ /* This module "lives in" with marshal.c */
+ {"marshal", PyMarshal_Init},
+
+ /* This lives it with import.c */
+ {"imp", initimp},
+
+ /* These entries are here for sys.builtin_module_names */
+ {"__main__", NULL},
+ {"__builtin__", NULL},
+ {"sys", NULL},
+ {"exceptions", NULL},
+
+ /* This lives in gcmodule.c */
+ {"gc", initgc},
+
+ /* Sentinel */
+ {0, 0}
+};
diff --git a/PC/os2emx/dlfcn.c b/PC/os2emx/dlfcn.c
new file mode 100644
index 0000000..ebda9cd
--- /dev/null
+++ b/PC/os2emx/dlfcn.c
@@ -0,0 +1,223 @@
+/* -*- C -*- ***********************************************
+Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam,
+The Netherlands.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Stichting Mathematisch
+Centrum or CWI or Corporation for National Research Initiatives or
+CNRI not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+While CWI is the initial source for this software, a modified version
+is made available by the Corporation for National Research Initiatives
+(CNRI) at the Internet address ftp://ftp.python.org.
+
+STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH
+CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+******************************************************************/
+
+/* This library implements dlopen() - Unix-like dynamic linking
+ * emulation functions for OS/2 using DosLoadModule() and company.
+ */
+
+#define INCL_DOS
+#define INCL_DOSERRORS
+#define INCL_DOSSESMGR
+#define INCL_WINPROGRAMLIST
+#define INCL_WINFRAMEMGR
+#include <os2.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <malloc.h>
+
+typedef struct _track_rec {
+ char *name;
+ HMODULE handle;
+ void *id;
+ struct _track_rec *next;
+} tDLLchain, *DLLchain;
+
+static DLLchain dlload = NULL; /* A simple chained list of DLL names */
+static char dlerr [256]; /* last error text string */
+static void *last_id;
+
+static DLLchain find_id(void *id)
+{
+ DLLchain tmp;
+
+ for (tmp = dlload; tmp; tmp = tmp->next)
+ if (id == tmp->id)
+ return tmp;
+
+ return NULL;
+}
+
+/* load a dynamic-link library and return handle */
+void *dlopen(char *filename, int flags)
+{
+ HMODULE hm;
+ DLLchain tmp;
+ char err[256];
+ char *errtxt;
+ int rc = 0, set_chain = 0;
+
+ for (tmp = dlload; tmp; tmp = tmp->next)
+ if (strnicmp(tmp->name, filename, 999) == 0)
+ break;
+
+ if (!tmp)
+ {
+ tmp = (DLLchain) malloc(sizeof(tDLLchain));
+ if (!tmp)
+ goto nomem;
+ tmp->name = strdup(filename);
+ tmp->next = dlload;
+ set_chain = 1;
+ }
+
+ switch (rc = DosLoadModule((PSZ)&err, sizeof(err), filename, &hm))
+ {
+ case NO_ERROR:
+ tmp->handle = hm;
+ if (set_chain)
+ {
+ do
+ last_id++;
+ while ((last_id == 0) || (find_id(last_id)));
+ tmp->id = last_id;
+ dlload = tmp;
+ }
+ return tmp->id;
+ case ERROR_FILE_NOT_FOUND:
+ case ERROR_PATH_NOT_FOUND:
+ errtxt = "module `%s' not found";
+ break;
+ case ERROR_TOO_MANY_OPEN_FILES:
+ case ERROR_NOT_ENOUGH_MEMORY:
+ case ERROR_SHARING_BUFFER_EXCEEDED:
+nomem:
+ errtxt = "out of system resources";
+ break;
+ case ERROR_ACCESS_DENIED:
+ errtxt = "access denied";
+ break;
+ case ERROR_BAD_FORMAT:
+ case ERROR_INVALID_SEGMENT_NUMBER:
+ case ERROR_INVALID_ORDINAL:
+ case ERROR_INVALID_MODULETYPE:
+ case ERROR_INVALID_EXE_SIGNATURE:
+ case ERROR_EXE_MARKED_INVALID:
+ case ERROR_ITERATED_DATA_EXCEEDS_64K:
+ case ERROR_INVALID_MINALLOCSIZE:
+ case ERROR_INVALID_SEGDPL:
+ case ERROR_AUTODATASEG_EXCEEDS_64K:
+ case ERROR_RELOCSRC_CHAIN_EXCEEDS_SEGLIMIT:
+ errtxt = "invalid module format";
+ break;
+ case ERROR_INVALID_NAME:
+ errtxt = "filename doesn't match module name";
+ break;
+ case ERROR_SHARING_VIOLATION:
+ case ERROR_LOCK_VIOLATION:
+ errtxt = "sharing violation";
+ break;
+ case ERROR_INIT_ROUTINE_FAILED:
+ errtxt = "module initialization failed";
+ break;
+ default:
+ errtxt = "cause `%s', error code = %d";
+ break;
+ }
+ snprintf(dlerr, sizeof(dlerr), errtxt, &err, rc);
+ if (tmp)
+ {
+ if (tmp->name)
+ free(tmp->name);
+ free(tmp);
+ }
+ return 0;
+}
+
+/* return a pointer to the `symbol' in DLL */
+void *dlsym(void *handle, char *symbol)
+{
+ int rc = 0;
+ PFN addr;
+ char *errtxt;
+ int symord = 0;
+ DLLchain tmp = find_id(handle);
+
+ if (!tmp)
+ goto inv_handle;
+
+ if (*symbol == '#')
+ symord = atoi(symbol + 1);
+
+ switch (rc = DosQueryProcAddr(tmp->handle, symord, symbol, &addr))
+ {
+ case NO_ERROR:
+ return (void *)addr;
+ case ERROR_INVALID_HANDLE:
+inv_handle:
+ errtxt = "invalid module handle";
+ break;
+ case ERROR_PROC_NOT_FOUND:
+ case ERROR_INVALID_NAME:
+ errtxt = "no symbol `%s' in module";
+ break;
+ default:
+ errtxt = "symbol `%s', error code = %d";
+ break;
+ }
+ snprintf(dlerr, sizeof(dlerr), errtxt, symbol, rc);
+ return NULL;
+}
+
+/* free dynamically-linked library */
+int dlclose(void *handle)
+{
+ int rc;
+ DLLchain tmp = find_id(handle);
+
+ if (!tmp)
+ goto inv_handle;
+
+ switch (rc = DosFreeModule(tmp->handle))
+ {
+ case NO_ERROR:
+ free(tmp->name);
+ dlload = tmp->next;
+ free(tmp);
+ return 0;
+ case ERROR_INVALID_HANDLE:
+inv_handle:
+ strcpy(dlerr, "invalid module handle");
+ return -1;
+ case ERROR_INVALID_ACCESS:
+ strcpy(dlerr, "access denied");
+ return -1;
+ default:
+ return -1;
+ }
+}
+
+/* return a string describing last occurred dl error */
+char *dlerror()
+{
+ return dlerr;
+}
diff --git a/PC/os2emx/dlfcn.h b/PC/os2emx/dlfcn.h
new file mode 100644
index 0000000..f73ae69
--- /dev/null
+++ b/PC/os2emx/dlfcn.h
@@ -0,0 +1,51 @@
+/* -*- C -*- ***********************************************
+Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam,
+The Netherlands.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Stichting Mathematisch
+Centrum or CWI or Corporation for National Research Initiatives or
+CNRI not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+While CWI is the initial source for this software, a modified version
+is made available by the Corporation for National Research Initiatives
+(CNRI) at the Internet address ftp://ftp.python.org.
+
+STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH
+CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+******************************************************************/
+
+/* This library implements dlopen() - Unix-like dynamic linking
+ * emulation functions for OS/2 using DosLoadModule() and company.
+ */
+
+#ifndef _DLFCN_H
+#define _DLFCN_H
+
+/* load a dynamic-link library and return handle */
+void *dlopen(char *filename, int flags);
+
+/* return a pointer to the `symbol' in DLL */
+void *dlsym(void *handle, char *symbol);
+
+/* free dynamically-linked library */
+int dlclose(void *handle);
+
+/* return a string describing last occurred dl error */
+char *dlerror(void);
+
+#endif /* !_DLFCN_H */
diff --git a/PC/os2emx/dllentry.c b/PC/os2emx/dllentry.c
new file mode 100644
index 0000000..9ccca1c
--- /dev/null
+++ b/PC/os2emx/dllentry.c
@@ -0,0 +1,42 @@
+/*
+ * This is the entry point for the Python 2.3 core DLL.
+ */
+
+#define NULL 0
+
+#define REF(s) extern void s(); void *____ref_##s = &s;
+
+/* Make references to imported symbols to pull them from static library */
+REF(Py_Main);
+
+#include <signal.h>
+
+extern int _CRT_init(void);
+extern void _CRT_term(void);
+extern void __ctordtorInit(void);
+extern void __ctordtorTerm(void);
+
+unsigned long _DLL_InitTerm(unsigned long mod_handle, unsigned long flag)
+{
+ switch (flag)
+ {
+ case 0:
+ if (_CRT_init())
+ return 0;
+ __ctordtorInit();
+
+ /* Ignore fatal signals */
+ signal(SIGSEGV, SIG_IGN);
+ signal(SIGFPE, SIG_IGN);
+
+ return 1;
+
+ case 1:
+ __ctordtorTerm();
+ _CRT_term();
+ return 1;
+
+ default:
+ return 0;
+ }
+}
diff --git a/PC/os2emx/getpathp.c b/PC/os2emx/getpathp.c
new file mode 100644
index 0000000..4faa505
--- /dev/null
+++ b/PC/os2emx/getpathp.c
@@ -0,0 +1,418 @@
+
+/* Return the initial module search path. */
+/* This version used by OS/2+EMX */
+
+/* ----------------------------------------------------------------
+ PATH RULES FOR OS/2+EMX:
+ This describes how sys.path is formed on OS/2+EMX. It describes the
+ functionality, not the implementation (ie, the order in which these
+ are actually fetched is different)
+
+ * Python always adds an empty entry at the start, which corresponds
+ to the current directory.
+
+ * If the PYTHONPATH env. var. exists, its entries are added next.
+
+ * We attempt to locate the "Python Home" - if the PYTHONHOME env var
+ is set, we believe it. Otherwise, we use the path of our host .EXE's
+ to try and locate our "landmark" (lib\\os.py) and deduce our home.
+ - If we DO have a Python Home: The relevant sub-directories (Lib,
+ plat-win, lib-tk, etc) are based on the Python Home
+ - If we DO NOT have a Python Home, the core Python Path is
+ loaded from the registry. This is the main PythonPath key,
+ and both HKLM and HKCU are combined to form the path)
+
+ * Iff - we can not locate the Python Home, and have not had a PYTHONPATH
+ specified (ie, we have _nothing_ we can assume is a good path), a
+ default path with relative entries is used (eg. .\Lib;.\plat-win, etc)
+
+
+ The end result of all this is:
+ * When running python.exe, or any other .exe in the main Python directory
+ (either an installed version, or directly from the PCbuild directory),
+ the core path is deduced.
+
+ * When Python is hosted in another exe (different directory, embedded via
+ COM, etc), the Python Home will not be deduced, so the core path from
+ the registry is used. Other "application paths "in the registry are
+ always read.
+
+ * If Python can't find its home and there is no registry (eg, frozen
+ exe, some very strange installation setup) you get a path with
+ some default, but relative, paths.
+
+ ---------------------------------------------------------------- */
+
+
+#include "Python.h"
+#include "osdefs.h"
+
+#ifndef PYOS_OS2
+#error This file only compilable on OS/2
+#endif
+
+#define INCL_DOS
+#include <os2.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <string.h>
+
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+
+/* Search in some common locations for the associated Python libraries.
+ *
+ * Py_GetPath() tries to return a sensible Python module search path.
+ *
+ * The approach is an adaptation for Windows of the strategy used in
+ * ../Modules/getpath.c; it uses the Windows Registry as one of its
+ * information sources.
+ */
+
+#ifndef LANDMARK
+#if defined(PYCC_GCC)
+#define LANDMARK "lib/os.py"
+#else
+#define LANDMARK "lib\\os.py"
+#endif
+#endif
+
+static char prefix[MAXPATHLEN+1];
+static char progpath[MAXPATHLEN+1];
+static char *module_search_path = NULL;
+
+
+static int
+is_sep(char ch) /* determine if "ch" is a separator character */
+{
+#ifdef ALTSEP
+ return ch == SEP || ch == ALTSEP;
+#else
+ return ch == SEP;
+#endif
+}
+
+/* assumes 'dir' null terminated in bounds.
+ * Never writes beyond existing terminator.
+ */
+static void
+reduce(char *dir)
+{
+ size_t i = strlen(dir);
+ while (i > 0 && !is_sep(dir[i]))
+ --i;
+ dir[i] = '\0';
+}
+
+static int
+exists(char *filename)
+{
+ struct stat buf;
+ return stat(filename, &buf) == 0;
+}
+
+/* Is module (check for .pyc/.pyo too)
+ * Assumes 'filename' MAXPATHLEN+1 bytes long -
+ * may extend 'filename' by one character.
+ */
+static int
+ismodule(char *filename)
+{
+ if (exists(filename))
+ return 1;
+
+ /* Check for the compiled version of prefix. */
+ if (strlen(filename) < MAXPATHLEN) {
+ strcat(filename, Py_OptimizeFlag ? "o" : "c");
+ if (exists(filename))
+ return 1;
+ }
+ return 0;
+}
+
+/* Add a path component, by appending stuff to buffer.
+ buffer must have at least MAXPATHLEN + 1 bytes allocated, and contain a
+ NUL-terminated string with no more than MAXPATHLEN characters (not counting
+ the trailing NUL). It's a fatal error if it contains a string longer than
+ that (callers must be careful!). If these requirements are met, it's
+ guaranteed that buffer will still be a NUL-terminated string with no more
+ than MAXPATHLEN characters at exit. If stuff is too long, only as much of
+ stuff as fits will be appended.
+*/
+
+static void
+join(char *buffer, char *stuff)
+{
+ size_t n, k;
+ if (is_sep(stuff[0]))
+ n = 0;
+ else {
+ n = strlen(buffer);
+ if (n > 0 && !is_sep(buffer[n-1]) && n < MAXPATHLEN)
+ buffer[n++] = SEP;
+ }
+ if (n > MAXPATHLEN)
+ Py_FatalError("buffer overflow in getpathp.c's joinpath()");
+ k = strlen(stuff);
+ if (n + k > MAXPATHLEN)
+ k = MAXPATHLEN - n;
+ strncpy(buffer+n, stuff, k);
+ buffer[n+k] = '\0';
+}
+
+/* gotlandmark only called by search_for_prefix, which ensures
+ * 'prefix' is null terminated in bounds. join() ensures
+ * 'landmark' can not overflow prefix if too long.
+ */
+static int
+gotlandmark(char *landmark)
+{
+ int n, ok;
+
+ n = strlen(prefix);
+ join(prefix, landmark);
+ ok = ismodule(prefix);
+ prefix[n] = '\0';
+ return ok;
+}
+
+/* assumes argv0_path is MAXPATHLEN+1 bytes long, already \0 term'd.
+ * assumption provided by only caller, calculate_path()
+ */
+static int
+search_for_prefix(char *argv0_path, char *landmark)
+{
+ /* Search from argv0_path, until landmark is found */
+ strcpy(prefix, argv0_path);
+ do {
+ if (gotlandmark(landmark))
+ return 1;
+ reduce(prefix);
+ } while (prefix[0]);
+ return 0;
+}
+
+
+static void
+get_progpath(void)
+{
+ extern char *Py_GetProgramName(void);
+ char *path = getenv("PATH");
+ char *prog = Py_GetProgramName();
+
+ PPIB pib;
+ if ((DosGetInfoBlocks(NULL, &pib) == 0) &&
+ (DosQueryModuleName(pib->pib_hmte, sizeof(progpath), progpath) == 0))
+ return;
+
+ if (prog == NULL || *prog == '\0')
+ prog = "python";
+
+ /* If there is no slash in the argv0 path, then we have to
+ * assume python is on the user's $PATH, since there's no
+ * other way to find a directory to start the search from. If
+ * $PATH isn't exported, you lose.
+ */
+#ifdef ALTSEP
+ if (strchr(prog, SEP) || strchr(prog, ALTSEP))
+#else
+ if (strchr(prog, SEP))
+#endif
+ strncpy(progpath, prog, MAXPATHLEN);
+ else if (path) {
+ while (1) {
+ char *delim = strchr(path, DELIM);
+
+ if (delim) {
+ size_t len = delim - path;
+ /* ensure we can't overwrite buffer */
+#if !defined(PYCC_GCC)
+ len = min(MAXPATHLEN,len);
+#else
+ len = MAXPATHLEN < len ? MAXPATHLEN : len;
+#endif
+ strncpy(progpath, path, len);
+ *(progpath + len) = '\0';
+ }
+ else
+ strncpy(progpath, path, MAXPATHLEN);
+
+ /* join() is safe for MAXPATHLEN+1 size buffer */
+ join(progpath, prog);
+ if (exists(progpath))
+ break;
+
+ if (!delim) {
+ progpath[0] = '\0';
+ break;
+ }
+ path = delim + 1;
+ }
+ }
+ else
+ progpath[0] = '\0';
+}
+
+static void
+calculate_path(void)
+{
+ char argv0_path[MAXPATHLEN+1];
+ char *buf;
+ size_t bufsz;
+ char *pythonhome = Py_GetPythonHome();
+ char *envpath = getenv("PYTHONPATH");
+ char zip_path[MAXPATHLEN+1];
+ size_t len;
+
+ get_progpath();
+ /* progpath guaranteed \0 terminated in MAXPATH+1 bytes. */
+ strcpy(argv0_path, progpath);
+ reduce(argv0_path);
+ if (pythonhome == NULL || *pythonhome == '\0') {
+ if (search_for_prefix(argv0_path, LANDMARK))
+ pythonhome = prefix;
+ else
+ pythonhome = NULL;
+ }
+ else
+ strncpy(prefix, pythonhome, MAXPATHLEN);
+
+ if (envpath && *envpath == '\0')
+ envpath = NULL;
+
+ /* Calculate zip archive path */
+ strncpy(zip_path, progpath, MAXPATHLEN);
+ zip_path[MAXPATHLEN] = '\0';
+ len = strlen(zip_path);
+ if (len > 4) {
+ zip_path[len-3] = 'z'; /* change ending to "zip" */
+ zip_path[len-2] = 'i';
+ zip_path[len-1] = 'p';
+ }
+ else {
+ zip_path[0] = 0;
+ }
+
+ /* We need to construct a path from the following parts.
+ * (1) the PYTHONPATH environment variable, if set;
+ * (2) the zip archive file path;
+ * (3) the PYTHONPATH config macro, with the leading "."
+ * of each component replaced with pythonhome, if set;
+ * (4) the directory containing the executable (argv0_path).
+ * The length calculation calculates #3 first.
+ */
+
+ /* Calculate size of return buffer */
+ if (pythonhome != NULL) {
+ char *p;
+ bufsz = 1;
+ for (p = PYTHONPATH; *p; p++) {
+ if (*p == DELIM)
+ bufsz++; /* number of DELIM plus one */
+ }
+ bufsz *= strlen(pythonhome);
+ }
+ else
+ bufsz = 0;
+ bufsz += strlen(PYTHONPATH) + 1;
+ bufsz += strlen(argv0_path) + 1;
+ bufsz += strlen(zip_path) + 1;
+ if (envpath != NULL)
+ bufsz += strlen(envpath) + 1;
+
+ module_search_path = buf = malloc(bufsz);
+ if (buf == NULL) {
+ /* We can't exit, so print a warning and limp along */
+ fprintf(stderr, "Can't malloc dynamic PYTHONPATH.\n");
+ if (envpath) {
+ fprintf(stderr, "Using environment $PYTHONPATH.\n");
+ module_search_path = envpath;
+ }
+ else {
+ fprintf(stderr, "Using default static path.\n");
+ module_search_path = PYTHONPATH;
+ }
+ return;
+ }
+
+ if (envpath) {
+ strcpy(buf, envpath);
+ buf = strchr(buf, '\0');
+ *buf++ = DELIM;
+ }
+ if (zip_path[0]) {
+ strcpy(buf, zip_path);
+ buf = strchr(buf, '\0');
+ *buf++ = DELIM;
+ }
+
+ if (pythonhome == NULL) {
+ strcpy(buf, PYTHONPATH);
+ buf = strchr(buf, '\0');
+ }
+ else {
+ char *p = PYTHONPATH;
+ char *q;
+ size_t n;
+ for (;;) {
+ q = strchr(p, DELIM);
+ if (q == NULL)
+ n = strlen(p);
+ else
+ n = q-p;
+ if (p[0] == '.' && is_sep(p[1])) {
+ strcpy(buf, pythonhome);
+ buf = strchr(buf, '\0');
+ p++;
+ n--;
+ }
+ strncpy(buf, p, n);
+ buf += n;
+ if (q == NULL)
+ break;
+ *buf++ = DELIM;
+ p = q+1;
+ }
+ }
+ if (argv0_path) {
+ *buf++ = DELIM;
+ strcpy(buf, argv0_path);
+ buf = strchr(buf, '\0');
+ }
+ *buf = '\0';
+}
+
+
+/* External interface */
+
+char *
+Py_GetPath(void)
+{
+ if (!module_search_path)
+ calculate_path();
+ return module_search_path;
+}
+
+char *
+Py_GetPrefix(void)
+{
+ if (!module_search_path)
+ calculate_path();
+ return prefix;
+}
+
+char *
+Py_GetExecPrefix(void)
+{
+ return Py_GetPrefix();
+}
+
+char *
+Py_GetProgramFullPath(void)
+{
+ if (!module_search_path)
+ calculate_path();
+ return progpath;
+}
diff --git a/PC/os2emx/pyconfig.h b/PC/os2emx/pyconfig.h
new file mode 100644
index 0000000..13910dc
--- /dev/null
+++ b/PC/os2emx/pyconfig.h
@@ -0,0 +1,334 @@
+#ifndef Py_CONFIG_H
+#define Py_CONFIG_H
+
+/* config.h.
+ * At some time in the past, generated automatically by/from configure.
+ * now maintained manually.
+ */
+
+/* build environment */
+#define PLATFORM "os2emx"
+#define COMPILER "[EMX GCC " __VERSION__ "]"
+#define PYOS_OS2 1
+#define PYCC_GCC 1
+
+/* default location(s) */
+#ifndef PREFIX
+#define PREFIX ""
+#endif
+#ifndef PYTHONPATH
+#define PYTHONPATH "./Lib;./Lib/plat-" PLATFORM \
+ ";./Lib/lib-dynload;./Lib/site-packages"
+#endif
+
+/* Debugging */
+#ifndef Py_DEBUG
+/*#define Py_DEBUG 1*/
+#endif
+
+/* if building an extension or wrapper executable,
+ * mark Python API symbols "extern" so that symbols
+ * imported from the Python core DLL aren't duplicated.
+ */
+#ifdef Py_BUILD_CORE
+# define PyAPI_FUNC(RTYPE) RTYPE
+#else
+# define PyAPI_FUNC(RTYPE) extern RTYPE
+#endif
+#define PyAPI_DATA(RTYPE) extern RTYPE
+#define PyMODINIT_FUNC void
+
+/* Use OS/2 flavour of threads */
+#define WITH_THREAD 1
+#define OS2_THREADS 1
+
+/* We want sockets */
+#define TCPIPV4 1
+#define USE_SOCKET 1
+#define socklen_t int
+#define FD_SETSIZE 1024
+
+/* enable the Python object allocator */
+#define WITH_PYMALLOC 1
+
+/* enable the GC module */
+#define WITH_CYCLE_GC 1
+
+/* Define if you want documentation strings in extension modules */
+#define WITH_DOC_STRINGS 1
+
+/* Unicode related */
+#define Py_USING_UNICODE 1
+#define PY_UNICODE_TYPE wchar_t
+#define Py_UNICODE_SIZE SIZEOF_SHORT
+
+/* EMX defines ssize_t */
+#define HAVE_SSIZE_T 1
+
+/* system capabilities */
+#define HAVE_TTYNAME 1
+#define HAVE_WAIT 1
+#define HAVE_GETEGID 1
+#define HAVE_GETEUID 1
+#define HAVE_GETGID 1
+#define HAVE_GETPPID 1
+#define HAVE_GETUID 1
+#define HAVE_OPENDIR 1
+#define HAVE_PIPE 1
+#define HAVE_POPEN 1
+#define HAVE_SYSTEM 1
+#define HAVE_TTYNAME 1
+#define HAVE_DYNAMIC_LOADING 1
+
+/* if port of GDBM installed, it includes NDBM emulation */
+#define HAVE_NDBM_H 1
+
+/* need this for spawnv code in posixmodule (cloned from WIN32 def'n) */
+typedef long intptr_t;
+
+/* we don't have tm_zone but do have the external array tzname */
+#define HAVE_TZNAME 1
+
+/* Define as the return type of signal handlers (int or void). */
+#define RETSIGTYPE void
+
+/* Define if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define if you can safely include both <sys/time.h> and <time.h>. */
+#define TIME_WITH_SYS_TIME 1
+
+/* Define this if you have the type long long. */
+#define HAVE_LONG_LONG 1
+
+/* Define if your compiler supports function prototypes. */
+#define HAVE_PROTOTYPES 1
+
+/* Define if your compiler supports variable length function prototypes
+ * (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>.
+ */
+#define HAVE_STDARG_PROTOTYPES 1
+
+/* Define if malloc(0) returns a NULL pointer. */
+#define MALLOC_ZERO_RETURNS_NULL 1
+
+/* Define to force use of thread-safe errno, h_errno, and other functions. */
+#define _REENTRANT 1
+
+/* Define if you can safely include both <sys/select.h> and <sys/time.h>
+ * (which you can't on SCO ODT 3.0).
+ */
+#define SYS_SELECT_WITH_SYS_TIME 1
+
+/* The number of bytes in an off_t. */
+#define SIZEOF_OFF_T 4
+
+/* The number of bytes in an time_t. */
+#define SIZEOF_TIME_T 4
+
+/* The number of bytes in a short. */
+#define SIZEOF_SHORT 2
+
+/* The number of bytes in a int. */
+#define SIZEOF_INT 4
+
+/* The number of bytes in a long. */
+#define SIZEOF_LONG 4
+
+/* The number of bytes in a long long. */
+#define SIZEOF_LONG_LONG 8
+
+/* The number of bytes in a void *. */
+#define SIZEOF_VOID_P 4
+
+/* The number of bytes in a size_t. */
+#define SIZEOF_SIZE_T 4
+
+/* Define if you have the alarm function. */
+#define HAVE_ALARM 1
+
+/* Define if you have the clock function. */
+#define HAVE_CLOCK 1
+
+/* Define if you have the dup2 function. */
+#define HAVE_DUP2 1
+
+/* Define if you have the execv function. */
+#define HAVE_EXECV 1
+
+/* Define if you have the spawnv function. */
+#define HAVE_SPAWNV 1
+
+/* Define if you have the flock function. */
+#define HAVE_FLOCK 1
+
+/* Define if you have the fork function. */
+#define HAVE_FORK 1
+
+/* Define if you have the fsync function. */
+#define HAVE_FSYNC 1
+
+/* Define if you have the ftime function. */
+#define HAVE_FTIME 1
+
+/* Define if you have the ftruncate function. */
+#define HAVE_FTRUNCATE 1
+
+/* Define if you have the getcwd function. */
+#define HAVE_GETCWD 1
+
+/* Define if you have the getpeername function. */
+#define HAVE_GETPEERNAME 1
+
+/* Define if you have the getpgrp function. */
+#define HAVE_GETPGRP 1
+
+/* Define if you have the getpid function. */
+#define HAVE_GETPID 1
+
+/* Define if you have the getpwent function. */
+#define HAVE_GETPWENT 1
+
+/* Define if you have the gettimeofday function. */
+#define HAVE_GETTIMEOFDAY 1
+
+/* Define if you have the getwd function. */
+#define HAVE_GETWD 1
+
+/* Define if you have the hypot function. */
+#define HAVE_HYPOT 1
+
+/* Define if you have the kill function. */
+#define HAVE_KILL 1
+
+/* Define if you have the memmove function. */
+#define HAVE_MEMMOVE 1
+
+/* Define if you have the mktime function. */
+#define HAVE_MKTIME 1
+
+/* Define if you have the pause function. */
+#define HAVE_PAUSE 1
+
+/* Define if you have the putenv function. */
+#define HAVE_PUTENV 1
+
+/* Define if you have the select function. */
+#define HAVE_SELECT 1
+
+/* Define if you have the setgid function. */
+#define HAVE_SETGID 1
+
+/* Define if you have the setlocale function. */
+#define HAVE_SETLOCALE 1
+
+/* Define if you have the setpgid function. */
+#define HAVE_SETPGID 1
+
+/* Define if you have the setuid function. */
+#define HAVE_SETUID 1
+
+/* Define if you have the setvbuf function. */
+#define HAVE_SETVBUF 1
+
+/* Define if you have the sigaction function. */
+#define HAVE_SIGACTION 1
+
+/* Define if you have the strerror function. */
+#define HAVE_STRERROR 1
+
+/* Define if you have the strftime function. */
+#define HAVE_STRFTIME 1
+
+/* Define if you have the tcgetpgrp function. */
+#define HAVE_TCGETPGRP 1
+
+/* Define if you have the tcsetpgrp function. */
+#define HAVE_TCSETPGRP 1
+
+/* Define if you have the tmpfile function. */
+#define HAVE_TMPFILE 1
+
+/* Define if you have the times function. */
+#define HAVE_TIMES 1
+
+/* Define if you have the truncate function. */
+#define HAVE_TRUNCATE 1
+
+/* Define if you have the uname function. */
+#define HAVE_UNAME 1
+
+/* Define if you have the waitpid function. */
+#define HAVE_WAITPID 1
+
+/* Define if you have the <conio.h> header file. */
+#undef HAVE_CONIO_H
+
+/* Define to 1 if you have the `copysign' function. */
+#define HAVE_COPYSIGN 1
+
+/* Define if you have the <direct.h> header file. */
+#undef HAVE_DIRECT_H
+
+/* Define if you have the <dirent.h> header file. */
+#define HAVE_DIRENT_H 1
+
+/* Define if you have the <errno.h> header file. */
+#define HAVE_ERRNO_H 1
+
+/* Define if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define if you have the <io.h> header file. */
+#undef HAVE_IO_H
+
+/* Define if you have the <ncurses.h> header file. */
+#define HAVE_NCURSES_H 1
+
+/* Define to 1 if you have the <process.h> header file. */
+#define HAVE_PROCESS_H 1
+
+/* Define if you have the <signal.h> header file. */
+#define HAVE_SIGNAL_H 1
+
+/* Define if you have the <sys/file.h> header file. */
+#define HAVE_SYS_FILE_H 1
+
+/* Define if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define if you have the <sys/select.h> header file. */
+#define HAVE_SYS_SELECT_H 1
+
+/* Define if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define if you have the <sys/times.h> header file. */
+#define HAVE_SYS_TIMES_H 1
+
+/* Define if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define if you have the <sys/un.h> header file. */
+#define HAVE_SYS_UN_H 1
+
+/* Define if you have the <sys/utsname.h> header file. */
+#define HAVE_SYS_UTSNAME_H 1
+
+/* Define if you have the <sys/wait.h> header file. */
+#define HAVE_SYS_WAIT_H 1
+
+/* Define if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define if you have the <utime.h> header file. */
+#define HAVE_UTIME_H 1
+
+/* EMX has an snprintf(). */
+#define HAVE_SNPRINTF 1
+
+#endif /* !Py_CONFIG_H */
+
diff --git a/PC/os2emx/python27.def b/PC/os2emx/python27.def
new file mode 100644
index 0000000..5477cd2
--- /dev/null
+++ b/PC/os2emx/python27.def
@@ -0,0 +1,1322 @@
+LIBRARY python27 INITINSTANCE TERMINSTANCE
+DESCRIPTION "Python 2.6 Core DLL"
+PROTMODE
+DATA MULTIPLE NONSHARED
+EXPORTS
+
+; From python27_s.lib(config)
+ "_PyImport_Inittab"
+
+; From python27_s.lib(dlfcn)
+; "dlopen"
+; "dlsym"
+; "dlclose"
+; "dlerror"
+
+; From python27_s.lib(getpathp)
+ "Py_GetProgramFullPath"
+ "Py_GetPrefix"
+ "Py_GetExecPrefix"
+ "Py_GetPath"
+
+; From python27_s.lib(getbuildinfo)
+ "Py_GetBuildInfo"
+ "_Py_svnversion"
+
+; From python27_s.lib(main)
+ "Py_Main"
+ "Py_GetArgcArgv"
+
+; From python27_s.lib(acceler)
+ "PyGrammar_AddAccelerators"
+ "PyGrammar_RemoveAccelerators"
+
+; From python27_s.lib(grammar1)
+ "PyGrammar_FindDFA"
+ "PyGrammar_LabelRepr"
+
+; From python27_s.lib(listnode)
+ "PyNode_ListTree"
+
+; From python27_s.lib(node)
+ "PyNode_New"
+ "PyNode_AddChild"
+ "PyNode_Free"
+
+; From python27_s.lib(parser)
+ "PyParser_AddToken"
+ "PyParser_New"
+ "PyParser_Delete"
+
+; From python27_s.lib(parsetok)
+ "Py_TabcheckFlag"
+ "PyParser_ParseString"
+ "PyParser_ParseStringFlagsFilename"
+ "PyParser_ParseFile"
+ "PyParser_ParseFileFlags"
+ "PyParser_ParseStringFlags"
+
+; From python27_s.lib(bitset)
+ "_Py_newbitset"
+ "_Py_delbitset"
+ "_Py_addbit"
+ "_Py_samebitset"
+ "_Py_mergebitset"
+
+; From python27_s.lib(metagrammar)
+ "_Py_meta_grammar"
+ "Py_meta_grammar"
+
+; From python27_s.lib(tokenizer)
+ "PyToken_OneChar"
+ "PyToken_TwoChars"
+ "PyToken_ThreeChars"
+ "PyTokenizer_FromString"
+ "PyTokenizer_Free"
+ "PyTokenizer_FromFile"
+ "PyTokenizer_Get"
+ "_PyParser_TokenNames"
+
+; From python27_s.lib(myreadline)
+ "_PyOS_ReadlineTState"
+ "PyOS_ReadlineFunctionPointer"
+ "PyOS_StdioReadline"
+ "PyOS_Readline"
+ "PyOS_InputHook"
+
+; From python27_s.lib(abstract)
+ "_PyObject_LengthHint"
+ "PyMapping_Size"
+ "PyObject_CallMethod"
+ "PyObject_GetItem"
+ "PySequence_GetItem"
+ "PyObject_SetItem"
+ "PySequence_SetItem"
+ "PyObject_DelItem"
+ "PySequence_DelItem"
+ "PyNumber_Multiply"
+ "PyNumber_InPlaceAdd"
+ "PyNumber_InPlaceMultiply"
+ "PyNumber_Int"
+ "PyNumber_Long"
+ "PyNumber_Float"
+ "PySequence_Concat"
+ "PySequence_Repeat"
+ "PySequence_InPlaceConcat"
+ "PySequence_InPlaceRepeat"
+ "PySequence_GetSlice"
+ "PySequence_SetSlice"
+ "PySequence_Tuple"
+ "PyObject_GetIter"
+ "PyIter_Next"
+ "PySequence_Fast"
+ "_PySequence_IterSearch"
+ "PyObject_CallFunction"
+ "_PyObject_CallFunction_SizeT"
+ "_PyObject_CallMethod_SizeT"
+ "PyObject_CallMethodObjArgs"
+ "PyObject_CallFunctionObjArgs"
+ "PyObject_Cmp"
+ "PyObject_Call"
+ "PyObject_CallObject"
+ "PyObject_Type"
+ "PyObject_Size"
+ "PyObject_Length"
+ "PyObject_DelItemString"
+ "PyObject_AsCharBuffer"
+ "PyObject_CheckReadBuffer"
+ "PyObject_AsReadBuffer"
+ "PyObject_AsWriteBuffer"
+ "PyNumber_Check"
+ "PyNumber_Add"
+ "PyNumber_Subtract"
+ "PyNumber_Divide"
+ "PyNumber_FloorDivide"
+ "PyNumber_TrueDivide"
+ "PyNumber_Remainder"
+ "PyNumber_Divmod"
+ "PyNumber_Power"
+ "PyNumber_Negative"
+ "PyNumber_Positive"
+ "PyNumber_Absolute"
+ "PyNumber_Invert"
+ "PyNumber_Lshift"
+ "PyNumber_Rshift"
+ "PyNumber_And"
+ "PyNumber_Xor"
+ "PyNumber_Or"
+ "PyNumber_Index"
+ "PyNumber_InPlaceSubtract"
+ "PyNumber_InPlaceDivide"
+ "PyNumber_InPlaceFloorDivide"
+ "PyNumber_InPlaceTrueDivide"
+ "PyNumber_InPlaceRemainder"
+ "PyNumber_InPlacePower"
+ "PyNumber_InPlaceLshift"
+ "PyNumber_InPlaceRshift"
+ "PyNumber_InPlaceAnd"
+ "PyNumber_InPlaceXor"
+ "PyNumber_InPlaceOr"
+ "PySequence_Check"
+ "PySequence_Size"
+ "PySequence_Length"
+ "PySequence_DelSlice"
+ "PySequence_List"
+ "PySequence_Count"
+ "PySequence_Contains"
+ "PySequence_In"
+ "PySequence_Index"
+ "PyMapping_Check"
+ "PyMapping_Length"
+ "PyMapping_HasKeyString"
+ "PyMapping_HasKey"
+ "PyMapping_GetItemString"
+ "PyMapping_SetItemString"
+ "PyObject_IsInstance"
+ "PyObject_IsSubclass"
+
+; From python27_s.lib(boolobject)
+ "PyBool_FromLong"
+ "PyBool_Type"
+ "_Py_ZeroStruct"
+ "_Py_TrueStruct"
+
+; From python27_s.lib(bufferobject)
+ "PyBuffer_FromObject"
+ "PyBuffer_FromReadWriteObject"
+ "PyBuffer_FromMemory"
+ "PyBuffer_FromReadWriteMemory"
+ "PyBuffer_New"
+ "PyBuffer_Type"
+
+; From python27_s.lib(cellobject)
+ "PyCell_New"
+ "PyCell_Get"
+ "PyCell_Set"
+ "PyCell_Type"
+
+; From python27_s.lib(classobject)
+ "PyClass_New"
+ "PyClass_IsSubclass"
+ "PyInstance_New"
+ "PyInstance_NewRaw"
+ "PyMethod_New"
+ "PyMethod_Function"
+ "PyMethod_Self"
+ "PyMethod_Class"
+ "_PyInstance_Lookup"
+ "PyMethod_Fini"
+ "PyClass_Type"
+ "PyInstance_Type"
+ "PyMethod_Type"
+
+; From python27_s.lib(capsule)
+ "PyCapsule_GetContext"
+ "PyCapsule_GetDestructor"
+ "PyCapsule_GetName"
+ "PyCapsule_GetPointer"
+ "PyCapsule_Import"
+ "PyCapsule_IsValid"
+ "PyCapsule_New"
+ "PyCapsule_SetContext"
+ "PyCapsule_SetDestructor"
+ "PyCapsule_SetName"
+ "PyCapsule_SetPointer"
+
+; From python27_s.lib(cobject)
+ "PyCObject_FromVoidPtr"
+ "PyCObject_FromVoidPtrAndDesc"
+ "PyCObject_AsVoidPtr"
+ "PyCObject_GetDesc"
+ "PyCObject_Import"
+ "PyCObject_SetVoidPtr"
+ "PyCObject_Type"
+
+; From python27_s.lib(codeobject)
+ "PyCode_New"
+ "PyCode_Addr2Line"
+ "PyCode_CheckLineNumber"
+ "PyCode_Type"
+
+; From python27_s.lib(complexobject)
+ "_Py_c_pow"
+ "_Py_c_sum"
+ "_Py_c_diff"
+ "_Py_c_neg"
+ "_Py_c_prod"
+ "_Py_c_quot"
+ "PyComplex_FromCComplex"
+ "PyComplex_FromDoubles"
+ "PyComplex_RealAsDouble"
+ "PyComplex_ImagAsDouble"
+ "PyComplex_AsCComplex"
+ "PyComplex_Type"
+
+; From python27_s.lib(descrobject)
+ "PyWrapper_New"
+ "PyDescr_NewMethod"
+ "PyDescr_NewClassMethod"
+ "PyDescr_NewMember"
+ "PyDescr_NewGetSet"
+ "PyDescr_NewWrapper"
+ "PyDictProxy_New"
+ "PyWrapperDescr_Type"
+ "PyProperty_Type"
+
+; From python27_s.lib(dictobject)
+ "PyDict_New"
+ "PyDict_GetItem"
+ "PyDict_SetItem"
+ "PyDict_DelItem"
+ "PyDict_Clear"
+ "PyDict_MergeFromSeq2"
+ "PyDict_Merge"
+ "PyDict_Keys"
+ "PyDict_Values"
+ "PyDict_Contains"
+ "PyDict_Next"
+ "PyDict_Items"
+ "PyDict_Size"
+ "PyDict_Copy"
+ "PyDict_Update"
+ "PyDict_GetItemString"
+ "PyDict_SetItemString"
+ "PyDict_DelItemString"
+ "PyDict_Type"
+ "PyDictIterKey_Type"
+ "PyDictIterValue_Type"
+ "PyDictIterItem_Type"
+
+; From python27_s.lib(enumobject)
+ "PyEnum_Type"
+ "PyReversed_Type"
+
+; From python27_s.lib(fileobject)
+ "PyFile_FromString"
+ "Py_UniversalNewlineFread"
+ "PyFile_GetLine"
+ "PyFile_SoftSpace"
+ "PyFile_WriteObject"
+ "PyFile_WriteString"
+ "PyObject_AsFileDescriptor"
+ "Py_UniversalNewlineFgets"
+ "PyFile_SetBufSize"
+ "PyFile_SetEncoding"
+ "PyFile_FromFile"
+ "PyFile_AsFile"
+ "PyFile_Name"
+ "PyFile_Type"
+
+; From python27_s.lib(floatobject)
+ "PyFloat_FromString"
+ "PyFloat_AsDouble"
+ "PyFloat_Fini"
+ "_PyFloat_Pack4"
+ "_PyFloat_Pack8"
+ "_PyFloat_Unpack4"
+ "_PyFloat_Unpack8"
+ "PyFloat_FromDouble"
+ "PyFloat_AsReprString"
+ "PyFloat_AsString"
+ "_PyFloat_Init"
+ "PyFloat_Type"
+
+; From python27_s.lib(frameobject)
+ "PyFrame_New"
+ "PyFrame_FastToLocals"
+ "PyFrame_LocalsToFast"
+ "_PyFrame_Init"
+ "PyFrame_Fini"
+ "PyFrame_BlockSetup"
+ "PyFrame_BlockPop"
+ "PyFrame_Type"
+
+; From python27_s.lib(funcobject)
+ "PyFunction_New"
+ "PyFunction_GetCode"
+ "PyFunction_GetGlobals"
+ "PyFunction_GetModule"
+ "PyFunction_GetDefaults"
+ "PyFunction_SetDefaults"
+ "PyFunction_GetClosure"
+ "PyFunction_SetClosure"
+ "PyClassMethod_New"
+ "PyStaticMethod_New"
+ "PyFunction_Type"
+ "PyClassMethod_Type"
+ "PyStaticMethod_Type"
+
+; From python27_s.lib(genobject)
+ "PyGen_New"
+ "PyGen_NeedsFinalizing"
+ "PyGen_Type"
+
+; From python27_s.lib(intobject)
+ "PyInt_AsLong"
+ "PyInt_AsUnsignedLongMask"
+ "PyInt_AsUnsignedLongLongMask"
+ "PyInt_FromString"
+ "PyInt_AsSsize_t"
+ "PyInt_Fini"
+ "PyInt_FromUnicode"
+ "PyInt_FromLong"
+ "PyInt_FromSize_t"
+ "PyInt_FromSsize_t"
+ "PyInt_GetMax"
+ "_PyInt_Init"
+ "PyInt_Type"
+
+; From python27_s.lib(iterobject)
+ "PySeqIter_New"
+ "PyCallIter_New"
+ "PySeqIter_Type"
+ "PyCallIter_Type"
+
+; From python27_s.lib(listobject)
+ "PyList_New"
+ "PyList_Append"
+ "PyList_Size"
+ "PyList_GetItem"
+ "PyList_SetItem"
+ "PyList_Insert"
+ "PyList_GetSlice"
+ "PyList_SetSlice"
+ "PyList_Sort"
+ "PyList_Reverse"
+ "PyList_AsTuple"
+ "_PyList_Extend"
+ "PyList_Fini"
+ "PyList_Type"
+ "PyListIter_Type"
+ "PyListRevIter_Type"
+
+; From python27_s.lib(longobject)
+ "PyLong_FromDouble"
+ "PyLong_AsLong"
+ "_PyLong_AsSsize_t"
+ "PyLong_AsUnsignedLong"
+ "_PyLong_FromByteArray"
+ "_PyLong_AsByteArray"
+ "PyLong_AsDouble"
+ "PyLong_FromLongLong"
+ "PyLong_AsLongLong"
+ "PyLong_FromString"
+ "PyLong_FromLong"
+ "PyLong_FromUnsignedLong"
+ "PyLong_AsUnsignedLongMask"
+ "_PyLong_FromSize_t"
+ "_PyLong_FromSsize_t"
+ "_PyLong_AsScaledDouble"
+ "PyLong_FromVoidPtr"
+ "PyLong_AsVoidPtr"
+ "PyLong_FromUnsignedLongLong"
+ "PyLong_AsUnsignedLongLong"
+ "PyLong_AsUnsignedLongLongMask"
+ "PyLong_FromUnicode"
+ "_PyLong_Sign"
+ "_PyLong_NumBits"
+ "_PyLong_New"
+ "_PyLong_Copy"
+ "PyLong_Type"
+ "_PyLong_DigitValue"
+
+; From python27_s.lib(methodobject)
+ "PyCFunction_Call"
+ "Py_FindMethodInChain"
+ "PyCFunction_GetFunction"
+ "PyCFunction_GetSelf"
+ "PyCFunction_GetFlags"
+ "Py_FindMethod"
+ "PyCFunction_NewEx"
+ "PyCFunction_Fini"
+ "PyCFunction_New"
+ "PyCFunction_Type"
+
+; From python27_s.lib(moduleobject)
+ "PyModule_New"
+ "_PyModule_Clear"
+ "PyModule_GetDict"
+ "PyModule_GetName"
+ "PyModule_GetFilename"
+ "PyModule_Type"
+
+; From python27_s.lib(object)
+ "Py_DivisionWarningFlag"
+ "PyObject_Str"
+ "PyObject_Repr"
+ "_PyObject_Str"
+ "PyObject_Unicode"
+ "PyObject_GetAttr"
+ "PyObject_IsTrue"
+ "PyNumber_CoerceEx"
+ "PyObject_Compare"
+ "PyObject_RichCompare"
+ "_Py_HashDouble"
+ "PyObject_Hash"
+ "PyObject_SetAttr"
+ "PyObject_GenericGetAttr"
+ "PyObject_GenericSetAttr"
+ "PyCallable_Check"
+ "PyObject_Dir"
+ "PyMem_Malloc"
+ "PyMem_Realloc"
+ "PyMem_Free"
+ "PyObject_Print"
+ "_PyObject_Dump"
+ "PyObject_RichCompareBool"
+ "PyObject_GetAttrString"
+ "PyObject_SetAttrString"
+ "PyObject_HasAttrString"
+ "PyObject_HasAttr"
+ "_PyObject_GetDictPtr"
+ "PyObject_SelfIter"
+ "PyObject_Not"
+ "PyNumber_Coerce"
+ "Py_ReprEnter"
+ "Py_ReprLeave"
+ "_Py_HashPointer"
+ "Py_IncRef"
+ "Py_DecRef"
+ "_PyTrash_deposit_object"
+ "_PyTrash_destroy_chain"
+ "PyObject_Init"
+ "PyObject_InitVar"
+ "_PyObject_New"
+ "_PyObject_NewVar"
+ "_PyObject_Del"
+ "_Py_ReadyTypes"
+ "_Py_SwappedOp"
+ "_Py_NotImplementedStruct"
+ "_Py_NoneStruct"
+ "_Py_cobject_hack"
+ "_Py_abstract_hack"
+ "_PyTrash_delete_nesting"
+ "_PyTrash_delete_later"
+
+; From python27_s.lib(obmalloc)
+ "PyObject_Malloc"
+ "PyObject_Free"
+ "PyObject_Realloc"
+
+; From python27_s.lib(rangeobject)
+ "PyRange_Type"
+
+; From python27_s.lib(setobject)
+ "PySet_Pop"
+ "PySet_New"
+ "PyFrozenSet_New"
+ "PySet_Size"
+ "PySet_Clear"
+ "PySet_Contains"
+ "PySet_Discard"
+ "PySet_Add"
+ "_PySet_Next"
+ "_PySet_Update"
+ "PySet_Fini"
+ "PySet_Type"
+ "PyFrozenSet_Type"
+
+; From python27_s.lib(sliceobject)
+ "_PySlice_FromIndices"
+ "PySlice_GetIndices"
+ "PySlice_GetIndicesEx"
+ "PySlice_New"
+ "_Py_EllipsisObject"
+ "PySlice_Type"
+
+; From python27_s.lib(stringobject)
+ "PyString_FromStringAndSize"
+ "PyString_InternInPlace"
+ "PyString_FromString"
+ "PyString_FromFormatV"
+ "PyString_AsString"
+ "_PyString_Resize"
+ "PyString_FromFormat"
+ "PyString_AsDecodedString"
+ "PyString_AsEncodedString"
+ "PyString_DecodeEscape"
+ "PyString_Repr"
+ "PyString_AsStringAndSize"
+ "_PyString_FormatLong"
+ "PyString_Format"
+ "_Py_ReleaseInternedStrings"
+ "PyString_Size"
+ "PyString_Concat"
+ "PyString_ConcatAndDel"
+ "_PyString_Eq"
+ "PyString_InternImmortal"
+ "PyString_InternFromString"
+ "_PyString_Join"
+ "PyString_Decode"
+ "PyString_Encode"
+ "PyString_AsEncodedObject"
+ "PyString_AsDecodedObject"
+ "PyString_Fini"
+ "PyString_Type"
+ "PyBaseString_Type"
+
+; From python27_s.lib(structseq)
+ "PyStructSequence_InitType"
+ "PyStructSequence_New"
+ "PyStructSequence_UnnamedField"
+
+; From python27_s.lib(tupleobject)
+ "PyTuple_New"
+ "PyTuple_Pack"
+ "_PyTuple_Resize"
+ "PyTuple_Size"
+ "PyTuple_GetItem"
+ "PyTuple_SetItem"
+ "PyTuple_GetSlice"
+ "PyTuple_Fini"
+ "PyTuple_Type"
+ "PyTupleIter_Type"
+
+; From python27_s.lib(typeobject)
+ "PyType_IsSubtype"
+ "_PyType_Lookup"
+ "PyType_Ready"
+ "PyType_GenericAlloc"
+ "_PyObject_SlotCompare"
+ "PyType_GenericNew"
+ "PyType_Type"
+ "PyBaseObject_Type"
+ "PySuper_Type"
+
+; From python27_s.lib(unicodeobject)
+ "PyUnicodeUCS2_Resize"
+ "PyUnicodeUCS2_FromOrdinal"
+ "PyUnicodeUCS2_FromObject"
+ "PyUnicodeUCS2_FromEncodedObject"
+ "PyUnicodeUCS2_Decode"
+ "PyUnicodeUCS2_GetDefaultEncoding"
+ "PyUnicodeUCS2_DecodeUTF8"
+ "PyUnicodeUCS2_DecodeLatin1"
+ "PyUnicodeUCS2_DecodeASCII"
+ "PyUnicodeUCS2_AsEncodedString"
+ "PyUnicodeUCS2_AsUTF8String"
+ "PyUnicodeUCS2_AsLatin1String"
+ "PyUnicodeUCS2_AsASCIIString"
+ "PyUnicode_DecodeUTF7"
+ "PyUnicode_EncodeUTF7"
+ "PyUnicodeUCS2_DecodeUTF8Stateful"
+ "PyUnicodeUCS2_EncodeUTF8"
+ "PyUnicodeUCS2_DecodeUTF16Stateful"
+ "PyUnicodeUCS2_AsUTF16String"
+ "PyUnicodeUCS2_DecodeUnicodeEscape"
+ "PyUnicodeUCS2_DecodeRawUnicodeEscape"
+ "PyUnicodeUCS2_EncodeRawUnicodeEscape"
+ "_PyUnicode_DecodeUnicodeInternal"
+ "PyUnicodeUCS2_DecodeCharmap"
+ "PyUnicode_BuildEncodingMap"
+ "PyUnicodeUCS2_EncodeCharmap"
+ "PyUnicodeUCS2_TranslateCharmap"
+ "PyUnicodeUCS2_EncodeDecimal"
+ "PyUnicodeUCS2_Count"
+ "PyUnicodeUCS2_Find"
+ "PyUnicodeUCS2_Join"
+ "PyUnicodeUCS2_Splitlines"
+ "PyUnicodeUCS2_Compare"
+ "PyUnicodeUCS2_Contains"
+ "PyUnicodeUCS2_Concat"
+ "_PyUnicode_XStrip"
+ "PyUnicodeUCS2_Replace"
+ "PyUnicodeUCS2_Split"
+ "PyUnicodeUCS2_RSplit"
+ "PyUnicodeUCS2_Format"
+ "_PyUnicodeUCS2_Init"
+ "_PyUnicodeUCS2_Fini"
+ "PyUnicodeUCS2_FromUnicode"
+ "PyUnicodeUCS2_AsUnicode"
+ "PyUnicodeUCS2_GetSize"
+ "PyUnicodeUCS2_GetMax"
+ "_PyUnicodeUCS2_AsDefaultEncodedString"
+ "PyUnicodeUCS2_SetDefaultEncoding"
+ "PyUnicodeUCS2_Encode"
+ "PyUnicodeUCS2_AsEncodedObject"
+ "PyUnicodeUCS2_DecodeUTF16"
+ "PyUnicodeUCS2_EncodeUTF16"
+ "PyUnicodeUCS2_AsUnicodeEscapeString"
+ "PyUnicodeUCS2_EncodeUnicodeEscape"
+ "PyUnicodeUCS2_AsRawUnicodeEscapeString"
+ "PyUnicodeUCS2_EncodeLatin1"
+ "PyUnicodeUCS2_EncodeASCII"
+ "PyUnicodeUCS2_AsCharmapString"
+ "PyUnicodeUCS2_Partition"
+ "PyUnicodeUCS2_RPartition"
+ "PyUnicodeUCS2_Translate"
+ "PyUnicodeUCS2_Tailmatch"
+ "PyUnicode_AsDecodedObject"
+ "PyUnicode_Type"
+
+; From python27_s.lib(unicodectype)
+ "_PyUnicode_TypeRecords"
+ "_PyUnicodeUCS2_ToNumeric"
+ "_PyUnicodeUCS2_IsLowercase"
+ "_PyUnicodeUCS2_IsUppercase"
+ "_PyUnicodeUCS2_IsTitlecase"
+ "_PyUnicodeUCS2_IsWhitespace"
+ "_PyUnicodeUCS2_IsLinebreak"
+ "_PyUnicodeUCS2_ToLowercase"
+ "_PyUnicodeUCS2_ToUppercase"
+ "_PyUnicodeUCS2_ToTitlecase"
+ "_PyUnicodeUCS2_ToDecimalDigit"
+ "_PyUnicodeUCS2_ToDigit"
+ "_PyUnicodeUCS2_IsDecimalDigit"
+ "_PyUnicodeUCS2_IsDigit"
+ "_PyUnicodeUCS2_IsNumeric"
+ "_PyUnicodeUCS2_IsAlpha"
+
+; From python27_s.lib(weakrefobject)
+ "PyWeakref_NewRef"
+ "PyWeakref_NewProxy"
+ "PyObject_ClearWeakRefs"
+ "PyWeakref_GetObject"
+ "_PyWeakref_GetWeakrefCount"
+ "_PyWeakref_ClearRef"
+ "_PyWeakref_RefType"
+ "_PyWeakref_ProxyType"
+ "_PyWeakref_CallableProxyType"
+
+; From python27_s.lib(Python-ast)
+; "init_ast"
+ "Module"
+ "Interactive"
+ "Expression"
+ "Suite"
+ "FunctionDef"
+ "ClassDef"
+ "Return"
+ "Delete"
+ "Assign"
+ "AugAssign"
+ "Print"
+ "For"
+ "While"
+ "If"
+ "With"
+ "Raise"
+ "TryExcept"
+ "TryFinally"
+ "Assert"
+ "Import"
+ "ImportFrom"
+ "Exec"
+ "Global"
+ "Expr"
+ "Pass"
+ "Break"
+ "Continue"
+ "BoolOp"
+ "BinOp"
+ "UnaryOp"
+ "Lambda"
+ "IfExp"
+ "Dict"
+ "ListComp"
+ "GeneratorExp"
+ "Yield"
+ "Compare"
+ "Call"
+ "Repr"
+ "Num"
+ "Str"
+ "Attribute"
+ "Subscript"
+ "Name"
+ "List"
+ "Tuple"
+ "Ellipsis"
+ "Slice"
+ "ExtSlice"
+ "Index"
+ "comprehension"
+ "excepthandler"
+ "arguments"
+ "keyword"
+ "alias"
+ "PyAST_mod2obj"
+
+; From python27_s.lib(asdl)
+ "asdl_seq_new"
+ "asdl_int_seq_new"
+
+; From python27_s.lib(ast)
+ "PyAST_FromNode"
+
+; From python27_s.lib(bltinmodule)
+ "_PyBuiltin_Init"
+ "Py_FileSystemDefaultEncoding"
+
+; From python27_s.lib(exceptions)
+ "PyUnicodeEncodeError_GetStart"
+ "PyUnicodeDecodeError_GetStart"
+ "PyUnicodeEncodeError_GetEnd"
+ "PyUnicodeDecodeError_GetEnd"
+ "_PyExc_Init"
+ "PyUnicodeDecodeError_Create"
+ "PyUnicodeEncodeError_Create"
+ "PyUnicodeTranslateError_Create"
+ "PyUnicodeEncodeError_GetEncoding"
+ "PyUnicodeDecodeError_GetEncoding"
+ "PyUnicodeEncodeError_GetObject"
+ "PyUnicodeDecodeError_GetObject"
+ "PyUnicodeTranslateError_GetObject"
+ "PyUnicodeTranslateError_GetStart"
+ "PyUnicodeEncodeError_SetStart"
+ "PyUnicodeDecodeError_SetStart"
+ "PyUnicodeTranslateError_SetStart"
+ "PyUnicodeTranslateError_GetEnd"
+ "PyUnicodeEncodeError_SetEnd"
+ "PyUnicodeDecodeError_SetEnd"
+ "PyUnicodeTranslateError_SetEnd"
+ "PyUnicodeEncodeError_GetReason"
+ "PyUnicodeDecodeError_GetReason"
+ "PyUnicodeTranslateError_GetReason"
+ "PyUnicodeEncodeError_SetReason"
+ "PyUnicodeDecodeError_SetReason"
+ "PyUnicodeTranslateError_SetReason"
+ "_PyExc_Fini"
+ "PyExc_BaseException"
+ "PyExc_Exception"
+ "PyExc_StandardError"
+ "PyExc_TypeError"
+ "PyExc_StopIteration"
+ "PyExc_GeneratorExit"
+ "PyExc_SystemExit"
+ "PyExc_KeyboardInterrupt"
+ "PyExc_ImportError"
+ "PyExc_EnvironmentError"
+ "PyExc_IOError"
+ "PyExc_OSError"
+ "PyExc_EOFError"
+ "PyExc_RuntimeError"
+ "PyExc_NotImplementedError"
+ "PyExc_NameError"
+ "PyExc_UnboundLocalError"
+ "PyExc_AttributeError"
+ "PyExc_IndexError"
+ "PyExc_SyntaxError"
+ "PyExc_IndentationError"
+ "PyExc_TabError"
+ "PyExc_LookupError"
+ "PyExc_KeyError"
+ "PyExc_ValueError"
+ "PyExc_UnicodeError"
+ "PyExc_UnicodeEncodeError"
+ "PyExc_UnicodeDecodeError"
+ "PyExc_UnicodeTranslateError"
+ "PyExc_AssertionError"
+ "PyExc_ArithmeticError"
+ "PyExc_FloatingPointError"
+ "PyExc_OverflowError"
+ "PyExc_ZeroDivisionError"
+ "PyExc_SystemError"
+ "PyExc_ReferenceError"
+ "PyExc_MemoryError"
+ "PyExc_Warning"
+ "PyExc_UserWarning"
+ "PyExc_DeprecationWarning"
+ "PyExc_PendingDeprecationWarning"
+ "PyExc_SyntaxWarning"
+ "PyExc_RuntimeWarning"
+ "PyExc_FutureWarning"
+ "PyExc_ImportWarning"
+ "PyExc_MemoryErrorInst"
+
+; From python27_s.lib(ceval)
+ "PyEval_EvalFrameEx"
+ "PyEval_CallObjectWithKeywords"
+ "PyEval_EvalCodeEx"
+ "PyEval_GetFrame"
+ "PyEval_CallObject"
+ "PyEval_SetProfile"
+ "PyEval_SetTrace"
+ "PyEval_GetBuiltins"
+ "PyEval_GetGlobals"
+ "PyEval_GetLocals"
+ "PyEval_GetRestricted"
+ "PyEval_MergeCompilerFlags"
+ "Py_FlushLine"
+ "Py_AddPendingCall"
+ "Py_MakePendingCalls"
+ "Py_SetRecursionLimit"
+ "Py_GetRecursionLimit"
+ "_Py_CheckRecursiveCall"
+ "PyEval_GetFuncName"
+ "PyEval_GetFuncDesc"
+ "PyEval_GetCallStats"
+ "PyEval_EvalFrame"
+ "PyEval_SaveThread"
+ "PyEval_RestoreThread"
+ "PyEval_ThreadsInitialized"
+ "PyEval_InitThreads"
+ "PyEval_AcquireLock"
+ "PyEval_ReleaseLock"
+ "PyEval_AcquireThread"
+ "PyEval_ReleaseThread"
+ "PyEval_ReInitThreads"
+ "_PyEval_SliceIndex"
+ "PyEval_EvalCode"
+ "_PyEval_CallTracing"
+ "_Py_CheckRecursionLimit"
+ "_Py_CheckInterval"
+ "_Py_Ticker"
+
+; From python27_s.lib(compile)
+ "_Py_Mangle"
+ "PyAST_Compile"
+ "PyNode_Compile"
+ "Py_OptimizeFlag"
+
+; From python27_s.lib(codecs)
+ "_PyCodec_Lookup"
+ "PyCodec_Encode"
+ "PyCodec_Decode"
+ "PyCodec_IgnoreErrors"
+ "PyCodec_ReplaceErrors"
+ "PyCodec_XMLCharRefReplaceErrors"
+ "PyCodec_BackslashReplaceErrors"
+ "PyCodec_Register"
+ "PyCodec_Encoder"
+ "PyCodec_Decoder"
+ "PyCodec_IncrementalEncoder"
+ "PyCodec_IncrementalDecoder"
+ "PyCodec_StreamReader"
+ "PyCodec_StreamWriter"
+ "PyCodec_RegisterError"
+ "PyCodec_LookupError"
+ "PyCodec_StrictErrors"
+
+; From python27_s.lib(errors)
+ "PyErr_SetNone"
+ "PyErr_SetString"
+ "PyErr_GivenExceptionMatches"
+ "PyErr_NormalizeException"
+ "PyErr_Fetch"
+ "PyErr_Clear"
+ "PyErr_NoMemory"
+ "PyErr_SetFromErrnoWithFilenameObject"
+ "PyErr_Format"
+ "PyErr_NewException"
+ "PyErr_WriteUnraisable"
+ "PyErr_SyntaxLocation"
+ "PyErr_ProgramText"
+ "PyErr_SetObject"
+ "PyErr_Occurred"
+ "PyErr_Restore"
+ "PyErr_ExceptionMatches"
+ "PyErr_BadArgument"
+ "PyErr_SetFromErrno"
+ "PyErr_SetFromErrnoWithFilename"
+ "PyErr_BadInternalCall"
+ "_PyErr_BadInternalCall"
+ "PyErr_Warn"
+ "PyErr_WarnExplicit"
+
+; From python27_s.lib(frozen)
+ "PyImport_FrozenModules"
+
+; From python27_s.lib(frozenmain)
+ "Py_FrozenMain"
+
+; From python27_s.lib(future)
+ "PyFuture_FromAST"
+
+; From python27_s.lib(getargs)
+ "PyArg_Parse"
+ "_PyArg_Parse_SizeT"
+ "PyArg_ParseTuple"
+ "_PyArg_ParseTuple_SizeT"
+ "PyArg_ParseTupleAndKeywords"
+ "_PyArg_ParseTupleAndKeywords_SizeT"
+ "PyArg_UnpackTuple"
+ "_PyArg_NoKeywords"
+ "PyArg_VaParse"
+ "PyArg_VaParseTupleAndKeywords"
+ "_PyArg_VaParse_SizeT"
+ "_PyArg_VaParseTupleAndKeywords_SizeT"
+
+; From python27_s.lib(getcompiler)
+ "Py_GetCompiler"
+
+; From python27_s.lib(getcopyright)
+ "Py_GetCopyright"
+
+; From python27_s.lib(getplatform)
+ "Py_GetPlatform"
+
+; From python27_s.lib(getversion)
+ "Py_GetVersion"
+
+; From python27_s.lib(graminit)
+ "_PyParser_Grammar"
+
+; From python27_s.lib(import)
+ "_PyImport_Init"
+ "_PyImportHooks_Init"
+ "PyImport_ImportModule"
+ "PyImport_Cleanup"
+ "_PyImport_FixupExtension"
+ "PyImport_AddModule"
+ "PyImport_ExecCodeModuleEx"
+ "PyImport_ImportFrozenModule"
+ "PyImport_ImportModuleEx"
+ "PyImport_ImportModuleLevel"
+ "PyImport_ReloadModule"
+ "PyImport_Import"
+; "initimp"
+ "_PyImport_Fini"
+ "PyImport_GetMagicNumber"
+ "PyImport_ExecCodeModule"
+ "PyImport_GetModuleDict"
+ "_PyImport_FindModule"
+ "_PyImport_IsScript"
+ "_PyImport_ReInitLock"
+ "_PyImport_FindExtension"
+ "PyImport_AppendInittab"
+ "PyImport_ExtendInittab"
+ "PyImport_Inittab"
+ "_PyImport_Filetab"
+
+; From python27_s.lib(importdl)
+ "_PyImport_LoadDynamicModule"
+
+; From python27_s.lib(marshal)
+ "PyMarshal_ReadLongFromFile"
+ "PyMarshal_WriteObjectToString"
+ "PyMarshal_WriteLongToFile"
+ "PyMarshal_WriteObjectToFile"
+ "PyMarshal_ReadShortFromFile"
+ "PyMarshal_ReadObjectFromFile"
+ "PyMarshal_ReadLastObjectFromFile"
+ "PyMarshal_ReadObjectFromString"
+ "PyMarshal_Init"
+
+; From python27_s.lib(modsupport)
+ "Py_InitModule4"
+ "Py_BuildValue"
+ "_Py_BuildValue_SizeT"
+ "PyEval_CallFunction"
+ "PyEval_CallMethod"
+ "_Py_VaBuildValue_SizeT"
+ "Py_VaBuildValue"
+ "PyModule_AddObject"
+ "PyModule_AddIntConstant"
+ "PyModule_AddStringConstant"
+ "_Py_PackageContext"
+
+; From python27_s.lib(mysnprintf)
+ "PyOS_snprintf"
+ "PyOS_vsnprintf"
+
+; From python27_s.lib(mystrtoul)
+ "PyOS_strtoul"
+ "PyOS_strtol"
+
+; From python27_s.lib(pyarena)
+ "PyArena_New"
+ "PyArena_Free"
+ "PyArena_Malloc"
+ "PyArena_AddPyObject"
+
+; From python27_s.lib(pyfpe)
+ "PyFPE_dummy"
+
+; From python27_s.lib(pystate)
+ "PyInterpreterState_Clear"
+ "PyThreadState_Clear"
+ "_PyThread_CurrentFrames"
+ "PyGILState_Ensure"
+ "PyGILState_Release"
+ "PyInterpreterState_New"
+ "PyInterpreterState_Delete"
+ "PyThreadState_Delete"
+ "PyThreadState_New"
+ "PyThreadState_DeleteCurrent"
+ "PyThreadState_Get"
+ "PyThreadState_Swap"
+ "PyThreadState_GetDict"
+ "PyThreadState_SetAsyncExc"
+ "PyGILState_GetThisThreadState"
+ "PyInterpreterState_Head"
+ "PyInterpreterState_Next"
+ "PyInterpreterState_ThreadHead"
+ "PyThreadState_Next"
+ "_PyGILState_Init"
+ "_PyGILState_Fini"
+ "_PyThreadState_Current"
+ "_PyThreadState_GetFrame"
+
+; From python27_s.lib(pystrtod)
+ "PyOS_ascii_strtod"
+ "PyOS_ascii_formatd"
+ "PyOS_ascii_atof"
+
+; From python27_s.lib(pythonrun)
+ "Py_IgnoreEnvironmentFlag"
+ "Py_DebugFlag"
+ "Py_VerboseFlag"
+ "Py_NoSiteFlag"
+ "Py_InteractiveFlag"
+ "Py_FrozenFlag"
+ "Py_InitializeEx"
+ "Py_FatalError"
+ "Py_NewInterpreter"
+ "PyErr_Print"
+ "PyRun_InteractiveOneFlags"
+ "PyParser_ASTFromFile"
+ "PyRun_SimpleFileExFlags"
+ "PyRun_FileExFlags"
+ "Py_Exit"
+ "PyErr_PrintEx"
+ "PyErr_Display"
+ "Py_SetProgramName"
+ "Py_GetProgramName"
+ "Py_SetPythonHome"
+ "Py_GetPythonHome"
+ "Py_Initialize"
+ "Py_Finalize"
+ "Py_IsInitialized"
+ "Py_EndInterpreter"
+ "PyRun_AnyFileFlags"
+ "Py_FdIsInteractive"
+ "PyRun_InteractiveLoopFlags"
+ "PyRun_AnyFileExFlags"
+ "PyRun_SimpleStringFlags"
+ "PyRun_StringFlags"
+ "PyParser_ASTFromString"
+ "PyParser_SimpleParseStringFlags"
+ "PyParser_SimpleParseFileFlags"
+ "Py_CompileStringFlags"
+ "Py_SymtableString"
+ "Py_AtExit"
+ "PyOS_getsig"
+ "PyOS_setsig"
+ "PyParser_SetError"
+ "PyModule_GetWarningsModule"
+ "PyParser_SimpleParseStringFlagsFilename"
+ "PyParser_SimpleParseStringFilename"
+ "PyParser_SimpleParseFile"
+ "PyParser_SimpleParseString"
+ "PyRun_AnyFile"
+ "PyRun_AnyFileEx"
+ "PyRun_File"
+ "PyRun_FileEx"
+ "PyRun_FileFlags"
+ "PyRun_SimpleFile"
+ "PyRun_SimpleFileEx"
+ "PyRun_String"
+ "PyRun_SimpleString"
+ "Py_CompileString"
+ "PyRun_InteractiveOne"
+ "PyRun_InteractiveLoop"
+ "Py_UseClassExceptionsFlag"
+ "Py_UnicodeFlag"
+ "_Py_QnewFlag"
+
+; From python27_s.lib(structmember)
+ "PyMember_Get"
+ "PyMember_GetOne"
+ "PyMember_SetOne"
+ "PyMember_Set"
+
+; From python27_s.lib(symtable)
+ "PySymtable_Build"
+ "PySymtable_Free"
+ "PyST_GetScope"
+ "PySymtable_Lookup"
+ "PySTEntry_Type"
+
+; From python27_s.lib(sysmodule)
+ "_PySys_Init"
+ "PySys_WriteStderr"
+ "PySys_SetPath"
+ "PySys_SetArgv"
+ "PySys_WriteStdout"
+ "Py_SubversionRevision"
+ "Py_SubversionShortBranch"
+ "PySys_GetObject"
+ "PySys_SetObject"
+ "PySys_GetFile"
+ "PySys_ResetWarnOptions"
+ "PySys_AddWarnOption"
+
+; From python27_s.lib(traceback)
+ "PyTraceBack_Here"
+ "PyTraceBack_Print"
+ "PyTraceBack_Type"
+
+; From python27_s.lib(getopt)
+ "_PyOS_GetOpt"
+ "_PyOS_opterr"
+ "_PyOS_optind"
+ "_PyOS_optarg"
+
+; From python27_s.lib(dynload_shlib)
+ "_PyImport_DynLoadFiletab"
+ "_PyImport_GetDynLoadFunc"
+
+; From python27_s.lib(thread)
+ "PyThread_delete_key_value"
+ "PyThread_init_thread"
+ "PyThread_start_new_thread"
+ "PyThread_exit_thread"
+ "PyThread_get_thread_ident"
+ "PyThread_allocate_lock"
+ "PyThread_free_lock"
+ "PyThread_acquire_lock"
+ "PyThread_release_lock"
+ "PyThread_get_stacksize"
+ "PyThread_set_stacksize"
+ "PyThread_create_key"
+ "PyThread_delete_key"
+ "PyThread_set_key_value"
+ "PyThread_get_key_value"
+
+; From python27_s.lib(gcmodule)
+; "initgc"
+ "_PyObject_GC_New"
+ "_PyObject_GC_NewVar"
+ "PyGC_Collect"
+ "_PyObject_GC_Resize"
+ "_PyObject_GC_Malloc"
+ "PyObject_GC_Track"
+ "PyObject_GC_UnTrack"
+ "PyObject_GC_Del"
+ "_PyGC_Dump"
+ "_PyObject_GC_Track"
+ "_PyObject_GC_UnTrack"
+ "_PyObject_GC_Del"
+ "_PyGC_generation0"
+
+; From python27_s.lib(signalmodule)
+; "initsignal"
+ "PyErr_CheckSignals"
+ "PyErr_SetInterrupt"
+ "PyOS_FiniInterrupts"
+ "PyOS_InterruptOccurred"
+ "PyOS_InitInterrupts"
+ "PyOS_AfterFork"
+
+; From python27_s.lib(posixmodule)
+; "initos2"
+
+; From python27_s.lib(threadmodule)
+; "initthread"
+
+; From python27_s.lib(arraymodule)
+; "initarray"
+; "array_methods"
+
+; From python27_s.lib(binascii)
+; "initbinascii"
+
+; From python27_s.lib(cmathmodule)
+; "initcmath"
+
+; From python27_s.lib(_codecsmodule)
+; "init_codecs"
+
+; From python27_s.lib(collectionsmodule)
+; "initcollections"
+ "dequeiter_type"
+ "dequereviter_type"
+
+; From python27_s.lib(cPickle)
+; "initcPickle"
+; "fast_save_leave"
+
+; From python27_s.lib(cStringIO)
+; "initcStringIO"
+
+; From python27_s.lib(_csv)
+; "init_csv"
+
+; From python27_s.lib(datetimemodule)
+; "initdatetime"
+
+; From python27_s.lib(dlmodule)
+; "initdl"
+
+; From python27_s.lib(errnomodule)
+; "initerrno"
+
+; From python27_s.lib(fcntlmodule)
+; "initfcntl"
+
+; From python27_s.lib(_functoolsmodule)
+; "init_functools"
+
+; From python27_s.lib(_heapqmodule)
+; "init_heapq"
+
+; From python27_s.lib(imageop)
+; "initimageop"
+
+; From python27_s.lib(itertoolsmodule)
+; "inititertools"
+
+; From python27_s.lib(_localemodule)
+; "init_locale"
+
+; From python27_s.lib(mathmodule)
+; "initmath"
+
+; From python27_s.lib(md5)
+ "md5_finish"
+ "md5_init"
+ "md5_append"
+
+; From python27_s.lib(md5module)
+; "init_md5"
+
+; From python27_s.lib(operator)
+; "initoperator"
+
+; From python27_s.lib(_randommodule)
+; "init_random"
+
+; From python27_s.lib(rgbimgmodule)
+; "initrgbimg"
+
+; From python27_s.lib(shamodule)
+; "init_sha"
+
+; From python27_s.lib(sha256module)
+; "init_sha256"
+
+; From python27_s.lib(sha512module)
+; "init_sha512"
+
+; From python27_s.lib(_sre)
+; "init_sre"
+
+; From python27_s.lib(stropmodule)
+; "initstrop"
+
+; From python27_s.lib(_struct)
+; "init_struct"
+
+; From python27_s.lib(symtablemodule)
+; "init_symtable"
+
+; From python27_s.lib(termios)
+; "inittermios"
+
+; From python27_s.lib(timemodule)
+; "inittime"
+ "_PyTime_DoubleToTimet"
+; "inittimezone"
+
+; From python27_s.lib(timingmodule)
+; "inittiming"
+
+; From python27_s.lib(_weakref)
+; "init_weakref"
+
+; From python27_s.lib(xxsubtype)
+; "initxxsubtype"
+
+; From python27_s.lib(zipimport)
+; "initzipimport"
diff --git a/PC/os2emx/pythonpm.c b/PC/os2emx/pythonpm.c
new file mode 100644
index 0000000..ba47f4b
--- /dev/null
+++ b/PC/os2emx/pythonpm.c
@@ -0,0 +1,124 @@
+/* OS/2 PM main program - creates a hidden window, and starts Python
+ * interpreter in a separate thread, so that Python scripts can be
+ * run in PM process space without a console Window. The interpreter
+ * is incorporated by linking in the Python DLL.
+ *
+ * As it stands, I don't think this is adequate for supporting Python
+ * GUI modules, as the Python thread doesn't have its own message
+ * queue - which is required of threads that want to create/use
+ * PM windows.
+ *
+ * This code owes a lot to "OS/2 Presentation Manager Programming", by
+ * Charles Petzold.
+ *
+ * Andrew MacIntyre <andymac@bullseye.apana.org.au>, August 2001.
+ * Released under the terms of the Python 2.1.1 licence - see the LICENCE
+ * file in the Python v2.1.1 (or later) source distribution.
+ * Copyright assigned to the Python Software Foundation, 2001.
+ */
+
+#define INCL_DOS
+#define INCL_WIN
+#include <os2.h>
+#include <process.h>
+
+#include "Python.h"
+
+/* use structure to pass command line to Python thread */
+typedef struct
+{
+ int argc;
+ char **argv;
+ HWND Frame;
+ int running;
+} arglist;
+
+/* make this a global to simplify access.
+ * it should only be set from the Python thread, or by the code that
+ * initiates the Python thread when the thread cannot be created.
+ */
+int PythonRC;
+
+extern DL_EXPORT(int) Py_Main(int, char **);
+void PythonThread(void *);
+
+int
+main(int argc, char **argv)
+{
+ ULONG FrameFlags = FCF_TITLEBAR |
+ FCF_SYSMENU |
+ FCF_SIZEBORDER |
+ FCF_HIDEBUTTON |
+ FCF_SHELLPOSITION |
+ FCF_TASKLIST;
+ HAB hab;
+ HMQ hmq;
+ HWND Client;
+ QMSG qmsg;
+ arglist args;
+ int python_tid;
+
+ /* init PM and create message queue */
+ hab = WinInitialize(0);
+ hmq = WinCreateMsgQueue(hab, 0);
+
+ /* create a (hidden) Window to house the window procedure */
+ args.Frame = WinCreateStdWindow(HWND_DESKTOP,
+ 0,
+ &FrameFlags,
+ NULL,
+ "PythonPM",
+ 0L,
+ 0,
+ 0,
+ &Client);
+
+ /* run Python interpreter in a thread */
+ args.argc = argc;
+ args.argv = argv;
+ args.running = 0;
+ if (-1 == (python_tid = _beginthread(PythonThread, NULL, 1024 * 1024, &args)))
+ {
+ /* couldn't start thread */
+ WinAlarm(HWND_DESKTOP, WA_ERROR);
+ PythonRC = 1;
+ }
+ else
+ {
+ /* process PM messages, until Python exits */
+ while (WinGetMsg(hab, &qmsg, NULLHANDLE, 0, 0))
+ WinDispatchMsg(hab, &qmsg);
+ if (args.running > 0)
+ DosKillThread(python_tid);
+ }
+
+ /* destroy window, shutdown message queue and PM */
+ WinDestroyWindow(args.Frame);
+ WinDestroyMsgQueue(hmq);
+ WinTerminate(hab);
+
+ return PythonRC;
+}
+
+void PythonThread(void *argl)
+{
+ HAB hab;
+ arglist *args;
+
+ /* PM initialisation */
+ hab = WinInitialize(0);
+
+ /* start Python */
+ args = (arglist *)argl;
+ args->running = 1;
+ PythonRC = Py_Main(args->argc, args->argv);
+
+ /* enter a critical section and send the termination message */
+ DosEnterCritSec();
+ args->running = 0;
+ WinPostMsg(args->Frame, WM_QUIT, NULL, NULL);
+
+ /* shutdown PM and terminate thread */
+ WinTerminate(hab);
+ _endthread();
+}
diff --git a/PC/os2vacpp/_tkinter.def b/PC/os2vacpp/_tkinter.def
new file mode 100644
index 0000000..49dab8d
--- /dev/null
+++ b/PC/os2vacpp/_tkinter.def
@@ -0,0 +1,8 @@
+LIBRARY _TKINTER INITINSTANCE TERMINSTANCE
+DESCRIPTION 'Python Extension DLL v1.0 for Access to Tcl/Tk Environment'
+PROTMODE
+DATA MULTIPLE NONSHARED
+
+EXPORTS
+ init_tkinter
+
diff --git a/PC/os2vacpp/config.c b/PC/os2vacpp/config.c
new file mode 100644
index 0000000..9bb5752
--- /dev/null
+++ b/PC/os2vacpp/config.c
@@ -0,0 +1,106 @@
+/* -*- C -*- ***********************************************
+Copyright (c) 2000, BeOpen.com.
+Copyright (c) 1995-2000, Corporation for National Research Initiatives.
+Copyright (c) 1990-1995, Stichting Mathematisch Centrum.
+All rights reserved.
+
+See the file "Misc/COPYRIGHT" for information on usage and
+redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+******************************************************************/
+
+/* Module configuration */
+
+/* This file contains the table of built-in modules.
+ See init_builtin() in import.c. */
+
+#include "Python.h"
+
+extern void initarray(void);
+extern void initaudioop(void);
+extern void initbinascii(void);
+extern void initcmath(void);
+extern void initerrno(void);
+extern void initimageop(void);
+extern void initmath(void);
+extern void initmd5(void);
+extern void initnt(void);
+extern void initos2(void);
+extern void initoperator(void);
+extern void initposix(void);
+extern void initrgbimg(void);
+extern void initsignal(void);
+extern void initselect(void);
+extern void init_socket(void);
+extern void initstrop(void);
+extern void initstruct(void);
+extern void inittime(void);
+extern void initthread(void);
+extern void initcStringIO(void);
+extern void initcPickle(void);
+extern void initpcre(void);
+#ifdef WIN32
+extern void initmsvcrt(void);
+#endif
+
+/* -- ADDMODULE MARKER 1 -- */
+
+extern void PyMarshal_Init(void);
+extern void initimp(void);
+
+struct _inittab _PyImport_Inittab[] = {
+
+ {"array", initarray},
+#ifdef M_I386
+ {"audioop", initaudioop},
+#endif
+ {"binascii", initbinascii},
+ {"cmath", initcmath},
+ {"errno", initerrno},
+// {"imageop", initimageop},
+ {"math", initmath},
+ {"md5", initmd5},
+#if defined(MS_WINDOWS) || defined(__BORLANDC__) || defined(__WATCOMC__)
+ {"nt", initnt}, /* Use the NT os functions, not posix */
+#else
+#if defined(PYOS_OS2)
+ {"os2", initos2},
+#else
+ {"posix", initposix},
+#endif
+#endif
+ {"operator", initoperator},
+// {"rgbimg", initrgbimg},
+ {"signal", initsignal},
+#ifdef USE_SOCKET
+ {"_socket", init_socket},
+ {"select", initselect},
+#endif
+ {"strop", initstrop},
+ {"struct", initstruct},
+ {"time", inittime},
+#ifdef WITH_THREAD
+ {"thread", initthread},
+#endif
+ {"cStringIO", initcStringIO},
+ {"cPickle", initcPickle},
+ {"pcre", initpcre},
+#ifdef WIN32
+ {"msvcrt", initmsvcrt},
+#endif
+
+/* -- ADDMODULE MARKER 2 -- */
+
+ /* This module "lives in" with marshal.c */
+ {"marshal", PyMarshal_Init},
+
+ /* This lives it with import.c */
+ {"imp", initimp},
+
+ /* These entries are here for sys.builtin_module_names */
+ {"__main__", NULL},
+ {"__builtin__", NULL},
+ {"sys", NULL},
+
+ /* Sentinel */
+ {0, 0}
+};
diff --git a/PC/os2vacpp/getpathp.c b/PC/os2vacpp/getpathp.c
new file mode 100644
index 0000000..b1307d7
--- /dev/null
+++ b/PC/os2vacpp/getpathp.c
@@ -0,0 +1,482 @@
+
+/* Return the initial module search path. */
+/* Used by DOS, OS/2, Windows 3.1. Works on NT too. */
+
+#include "Python.h"
+#include "osdefs.h"
+
+#ifdef MS_WIN32
+#include <windows.h>
+extern BOOL PyWin_IsWin32s(void);
+#endif
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <string.h>
+
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+
+/* Search in some common locations for the associated Python libraries.
+ *
+ * Two directories must be found, the platform independent directory
+ * (prefix), containing the common .py and .pyc files, and the platform
+ * dependent directory (exec_prefix), containing the shared library
+ * modules. Note that prefix and exec_prefix can be the same directory,
+ * but for some installations, they are different.
+ *
+ * Py_GetPath() tries to return a sensible Python module search path.
+ *
+ * First, we look to see if the executable is in a subdirectory of
+ * the Python build directory. We calculate the full path of the
+ * directory containing the executable as progpath. We work backwards
+ * along progpath and look for $dir/Modules/Setup.in, a distinctive
+ * landmark. If found, we use $dir/Lib as $root. The returned
+ * Python path is the compiled #define PYTHONPATH with all the initial
+ * "./lib" replaced by $root.
+ *
+ * Otherwise, if there is a PYTHONPATH environment variable, we return that.
+ *
+ * Otherwise we try to find $progpath/lib/os.py, and if found, then
+ * root is $progpath/lib, and we return Python path as compiled PYTHONPATH
+ * with all "./lib" replaced by $root (as above).
+ *
+ */
+
+#ifndef LANDMARK
+#define LANDMARK "lib\\os.py"
+#endif
+
+static char prefix[MAXPATHLEN+1];
+static char exec_prefix[MAXPATHLEN+1];
+static char progpath[MAXPATHLEN+1];
+static char *module_search_path = NULL;
+
+
+static int
+is_sep(char ch) /* determine if "ch" is a separator character */
+{
+#ifdef ALTSEP
+ return ch == SEP || ch == ALTSEP;
+#else
+ return ch == SEP;
+#endif
+}
+
+
+static void
+reduce(char *dir)
+{
+ int i = strlen(dir);
+ while (i > 0 && !is_sep(dir[i]))
+ --i;
+ dir[i] = '\0';
+}
+
+
+static int
+exists(char *filename)
+{
+ struct stat buf;
+ return stat(filename, &buf) == 0;
+}
+
+
+/* Add a path component, by appending stuff to buffer.
+ buffer must have at least MAXPATHLEN + 1 bytes allocated, and contain a
+ NUL-terminated string with no more than MAXPATHLEN characters (not counting
+ the trailing NUL). It's a fatal error if it contains a string longer than
+ that (callers must be careful!). If these requirements are met, it's
+ guaranteed that buffer will still be a NUL-terminated string with no more
+ than MAXPATHLEN characters at exit. If stuff is too long, only as much of
+ stuff as fits will be appended.
+*/
+static void
+join(char *buffer, char *stuff)
+{
+ int n, k;
+ if (is_sep(stuff[0]))
+ n = 0;
+ else {
+ n = strlen(buffer);
+ if (n > 0 && !is_sep(buffer[n-1]) && n < MAXPATHLEN)
+ buffer[n++] = SEP;
+ }
+ if (n > MAXPATHLEN)
+ Py_FatalError("buffer overflow in getpathp.c's joinpath()");
+ k = strlen(stuff);
+ if (n + k > MAXPATHLEN)
+ k = MAXPATHLEN - n;
+ strncpy(buffer+n, stuff, k);
+ buffer[n+k] = '\0';
+}
+
+
+static int
+search_for_prefix(char *argv0_path, char *landmark)
+{
+ int n;
+
+ /* Search from argv0_path, until root is found */
+ strcpy(prefix, argv0_path);
+ do {
+ n = strlen(prefix);
+ join(prefix, landmark);
+ if (exists(prefix)) {
+ prefix[n] = '\0';
+ return 1;
+ }
+ prefix[n] = '\0';
+ reduce(prefix);
+ } while (prefix[0]);
+ return 0;
+}
+
+#ifdef MS_WIN32
+#include "malloc.h" // for alloca - see comments below!
+extern const char *PyWin_DLLVersionString; // a string loaded from the DLL at startup.
+
+
+/* Load a PYTHONPATH value from the registry.
+ Load from either HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER.
+
+ Returns NULL, or a pointer that should be freed.
+*/
+
+static char *
+getpythonregpath(HKEY keyBase, BOOL bWin32s)
+{
+ HKEY newKey = 0;
+ DWORD nameSize = 0;
+ DWORD dataSize = 0;
+ DWORD numEntries = 0;
+ LONG rc;
+ char *retval = NULL;
+ char *dataBuf;
+ const char keyPrefix[] = "Software\\Python\\PythonCore\\";
+ const char keySuffix[] = "\\PythonPath";
+ int versionLen;
+ char *keyBuf;
+
+ // Tried to use sysget("winver") but here is too early :-(
+ versionLen = strlen(PyWin_DLLVersionString);
+ // alloca == no free required, but memory only local to fn.
+ // also no heap fragmentation! Am I being silly?
+ keyBuf = alloca(sizeof(keyPrefix)-1 + versionLen + sizeof(keySuffix)); // chars only, plus 1 NULL.
+ // lots of constants here for the compiler to optimize away :-)
+ memcpy(keyBuf, keyPrefix, sizeof(keyPrefix)-1);
+ memcpy(keyBuf+sizeof(keyPrefix)-1, PyWin_DLLVersionString, versionLen);
+ memcpy(keyBuf+sizeof(keyPrefix)-1+versionLen, keySuffix, sizeof(keySuffix)); // NULL comes with this one!
+
+ rc=RegOpenKey(keyBase,
+ keyBuf,
+ &newKey);
+ if (rc==ERROR_SUCCESS) {
+ RegQueryInfoKey(newKey, NULL, NULL, NULL, NULL, NULL, NULL,
+ &numEntries, &nameSize, &dataSize, NULL, NULL);
+ }
+ if (bWin32s && numEntries==0 && dataSize==0) {
+ /* must hardcode for Win32s */
+ numEntries = 1;
+ dataSize = 511;
+ }
+ if (numEntries) {
+ /* Loop over all subkeys. */
+ /* Win32s doesnt know how many subkeys, so we do
+ it twice */
+ char keyBuf[MAX_PATH+1];
+ int index = 0;
+ int off = 0;
+ for(index=0;;index++) {
+ long reqdSize = 0;
+ DWORD rc = RegEnumKey(newKey,
+ index, keyBuf, MAX_PATH+1);
+ if (rc) break;
+ rc = RegQueryValue(newKey, keyBuf, NULL, &reqdSize);
+ if (rc) break;
+ if (bWin32s && reqdSize==0) reqdSize = 512;
+ dataSize += reqdSize + 1; /* 1 for the ";" */
+ }
+ dataBuf = malloc(dataSize+1);
+ if (dataBuf==NULL)
+ return NULL; /* pretty serious? Raise error? */
+ /* Now loop over, grabbing the paths.
+ Subkeys before main library */
+ for(index=0;;index++) {
+ int adjust;
+ long reqdSize = dataSize;
+ DWORD rc = RegEnumKey(newKey,
+ index, keyBuf,MAX_PATH+1);
+ if (rc) break;
+ rc = RegQueryValue(newKey,
+ keyBuf, dataBuf+off, &reqdSize);
+ if (rc) break;
+ if (reqdSize>1) {
+ /* If Nothing, or only '\0' copied. */
+ adjust = strlen(dataBuf+off);
+ dataSize -= adjust;
+ off += adjust;
+ dataBuf[off++] = ';';
+ dataBuf[off] = '\0';
+ dataSize--;
+ }
+ }
+ /* Additionally, win32s doesnt work as expected, so
+ the specific strlen() is required for 3.1. */
+ rc = RegQueryValue(newKey, "", dataBuf+off, &dataSize);
+ if (rc==ERROR_SUCCESS) {
+ if (strlen(dataBuf)==0)
+ free(dataBuf);
+ else
+ retval = dataBuf; /* caller will free */
+ }
+ else
+ free(dataBuf);
+ }
+
+ if (newKey)
+ RegCloseKey(newKey);
+ return retval;
+}
+#endif /* MS_WIN32 */
+
+static void
+get_progpath(void)
+{
+ extern char *Py_GetProgramName(void);
+ char *path = getenv("PATH");
+ char *prog = Py_GetProgramName();
+
+#ifdef MS_WIN32
+ if (GetModuleFileName(NULL, progpath, MAXPATHLEN))
+ return;
+#endif
+ if (prog == NULL || *prog == '\0')
+ prog = "python";
+
+ /* If there is no slash in the argv0 path, then we have to
+ * assume python is on the user's $PATH, since there's no
+ * other way to find a directory to start the search from. If
+ * $PATH isn't exported, you lose.
+ */
+#ifdef ALTSEP
+ if (strchr(prog, SEP) || strchr(prog, ALTSEP))
+#else
+ if (strchr(prog, SEP))
+#endif
+ strcpy(progpath, prog);
+ else if (path) {
+ while (1) {
+ char *delim = strchr(path, DELIM);
+
+ if (delim) {
+ int len = delim - path;
+ strncpy(progpath, path, len);
+ *(progpath + len) = '\0';
+ }
+ else
+ strcpy(progpath, path);
+
+ join(progpath, prog);
+ if (exists(progpath))
+ break;
+
+ if (!delim) {
+ progpath[0] = '\0';
+ break;
+ }
+ path = delim + 1;
+ }
+ }
+ else
+ progpath[0] = '\0';
+}
+
+static void
+calculate_path(void)
+{
+ char argv0_path[MAXPATHLEN+1];
+ char *buf;
+ int bufsz;
+ char *pythonhome = Py_GetPythonHome();
+ char *envpath = Py_GETENV("PYTHONPATH");
+#ifdef MS_WIN32
+ char *machinepath, *userpath;
+
+ /* Are we running under Windows 3.1(1) Win32s? */
+ if (PyWin_IsWin32s()) {
+ /* Only CLASSES_ROOT is supported */
+ machinepath = getpythonregpath(HKEY_CLASSES_ROOT, TRUE);
+ userpath = NULL;
+ } else {
+ machinepath = getpythonregpath(HKEY_LOCAL_MACHINE, FALSE);
+ userpath = getpythonregpath(HKEY_CURRENT_USER, FALSE);
+ }
+#endif
+
+ get_progpath();
+ strcpy(argv0_path, progpath);
+ reduce(argv0_path);
+ if (pythonhome == NULL || *pythonhome == '\0') {
+ if (search_for_prefix(argv0_path, LANDMARK))
+ pythonhome = prefix;
+ else
+ pythonhome = NULL;
+ }
+ else {
+ char *delim;
+
+ strcpy(prefix, pythonhome);
+
+ /* Extract Any Optional Trailing EXEC_PREFIX */
+ /* e.g. PYTHONHOME=<prefix>:<exec_prefix> */
+ delim = strchr(prefix, DELIM);
+ if (delim) {
+ *delim = '\0';
+ strcpy(exec_prefix, delim+1);
+ } else
+ strcpy(exec_prefix, EXEC_PREFIX);
+ }
+
+ if (envpath && *envpath == '\0')
+ envpath = NULL;
+
+ /* We need to construct a path from the following parts:
+ (1) the PYTHONPATH environment variable, if set;
+ (2) for Win32, the machinepath and userpath, if set;
+ (3) the PYTHONPATH config macro, with the leading "."
+ of each component replaced with pythonhome, if set;
+ (4) the directory containing the executable (argv0_path).
+ The length calculation calculates #3 first.
+ */
+
+ /* Calculate size of return buffer */
+ if (pythonhome != NULL) {
+ char *p;
+ bufsz = 1;
+ for (p = PYTHONPATH; *p; p++) {
+ if (*p == DELIM)
+ bufsz++; /* number of DELIM plus one */
+ }
+ bufsz *= strlen(pythonhome);
+ }
+ else
+ bufsz = 0;
+ bufsz += strlen(PYTHONPATH) + 1;
+ if (envpath != NULL)
+ bufsz += strlen(envpath) + 1;
+ bufsz += strlen(argv0_path) + 1;
+#ifdef MS_WIN32
+ if (machinepath)
+ bufsz += strlen(machinepath) + 1;
+ if (userpath)
+ bufsz += strlen(userpath) + 1;
+#endif
+
+ module_search_path = buf = malloc(bufsz);
+ if (buf == NULL) {
+ /* We can't exit, so print a warning and limp along */
+ fprintf(stderr, "Can't malloc dynamic PYTHONPATH.\n");
+ if (envpath) {
+ fprintf(stderr, "Using default static $PYTHONPATH.\n");
+ module_search_path = envpath;
+ }
+ else {
+ fprintf(stderr, "Using environment $PYTHONPATH.\n");
+ module_search_path = PYTHONPATH;
+ }
+ return;
+ }
+
+ if (envpath) {
+ strcpy(buf, envpath);
+ buf = strchr(buf, '\0');
+ *buf++ = DELIM;
+ }
+#ifdef MS_WIN32
+ if (machinepath) {
+ strcpy(buf, machinepath);
+ buf = strchr(buf, '\0');
+ *buf++ = DELIM;
+ }
+ if (userpath) {
+ strcpy(buf, userpath);
+ buf = strchr(buf, '\0');
+ *buf++ = DELIM;
+ }
+#endif
+ if (pythonhome == NULL) {
+ strcpy(buf, PYTHONPATH);
+ buf = strchr(buf, '\0');
+ }
+ else {
+ char *p = PYTHONPATH;
+ char *q;
+ int n;
+ for (;;) {
+ q = strchr(p, DELIM);
+ if (q == NULL)
+ n = strlen(p);
+ else
+ n = q-p;
+ if (p[0] == '.' && is_sep(p[1])) {
+ strcpy(buf, pythonhome);
+ buf = strchr(buf, '\0');
+ p++;
+ n--;
+ }
+ strncpy(buf, p, n);
+ buf += n;
+ if (q == NULL)
+ break;
+ *buf++ = DELIM;
+ p = q+1;
+ }
+ }
+ if (argv0_path) {
+ *buf++ = DELIM;
+ strcpy(buf, argv0_path);
+ buf = strchr(buf, '\0');
+ }
+ *buf = '\0';
+}
+
+
+/* External interface */
+
+char *
+Py_GetPath(void)
+{
+ if (!module_search_path)
+ calculate_path();
+
+ return module_search_path;
+}
+
+char *
+Py_GetPrefix(void)
+{
+ if (!module_search_path)
+ calculate_path();
+
+ return prefix;
+}
+
+char *
+Py_GetExecPrefix(void)
+{
+ if (!module_search_path)
+ calculate_path();
+
+ return exec_prefix;
+}
+
+char *
+Py_GetProgramFullPath(void)
+{
+ if (!module_search_path)
+ calculate_path();
+
+ return progpath;
+}
diff --git a/PC/os2vacpp/makefile b/PC/os2vacpp/makefile
new file mode 100644
index 0000000..1608960
--- /dev/null
+++ b/PC/os2vacpp/makefile
@@ -0,0 +1,1880 @@
+######################################################################
+#
+# Top-Level Makefile for Building Python for OS/2
+#
+# This makefile was developed for use with IBM's VisualAge C/C++
+# for OS/2 compiler, version 3.0, with Fixpack 8 applied. It uses
+# version 4.0 of the NMAKE tool that comes with that package.
+#
+# The output of the build is a largish Python23.DLL containing the
+# essential modules of Python and a small Python.exe program to start
+# the interpreter. When embedding Python within another program, only
+# Python23.DLL is needed.
+#
+# These two binaries can be statically linked with the VisualAge C/C++
+# runtime library (producing larger binaries), or dynamically linked
+# to make smaller ones that require the compiler to be installed on
+# any system Python is used on. Review the /Gd+ compiler option for
+# how to do this.
+#
+# NOTE: IBM's NMAKE 4.0 is rather dumb, requiring this makefile to
+# be much more complicated than necessary. I use OpusMAKE
+# myself for a much more powerful MAKE tool but not everyone
+# wishes to buy it. However, as a result I didn't hook in
+# the dependencies on the include files as NMAKE has no easy
+# way to do this without explicitly spelling it all out.
+#
+# History (Most Recent First)
+#
+# 26-Sep-98 jrr Retested and adjusted for building w/Python 1.5.2a1
+# 20-Nov-97 jrr Cleaned Up for Applying to Distribution
+# 29-Oct-97 jrr Modified for Use with Python 1.5 Alpha 4
+# 03-Aug-96 jrr Original for Use with Python 1.4 Release
+#
+######################################################################
+
+###################
+# Places and Things
+###################
+PY_MODULES = ..\..\Modules
+PY_OBJECTS = ..\..\Objects
+PY_PARSER = ..\..\Parser
+PY_PYTHON = ..\..\Python
+PY_INCLUDE = ..\..\Include
+PY_INCLUDES = .;$(PY_INCLUDE);$(PY_MODULES);$(PY_OBJECTS);$(PY_PARSER);$(PY_PYTHON)
+
+# File to Collect Wordy Compiler Output re Errors
+ERRS = make.out
+
+# Where to Find the IBM TCP/IP Socket Includes and Libraries
+OS2TCPIP = C:\MPTN
+
+# Where to Find the Tcl/Tk Base Directory for Libs/Includes
+TCLTK = D:\TclTk
+TCLBASE = D:\Tcl7.6\OS2
+TKBASE = D:\Tk4.2\OS2
+
+# Where to Put the .OBJ Files, To Keep Them Out of the Way
+PATHOBJ = obj
+
+# Search Path for Include Files
+PROJINCLUDE = .;$(TCLBASE);$(TKBASE);$(OS2TCPIP)\Include;$(PY_INCLUDES)
+
+# Place to Search for Sources re OpusMAKE Dependency Generator (Commercial)
+MKMF_SRCS = $(PY_MODULES)\*.c $(PY_OBJECTS)\*.c $(PY_PARSER)\*.c $(PY_PYTHON)\*.c
+
+#.HDRPATH.c := $(PROJINCLUDE,;= ) $(.HDRPATH.c)
+#.PATH.c = .;$(PY_MODULES);$(PY_OBJECTS);$(PY_PARSER);$(PY_PYTHON)
+OTHERLIBS = so32dll.lib tcp32dll.lib # Tcl76.lib Tk42.lib
+
+#################
+# Inference Rules
+#################
+{$(PY_MODULES)\}.c{$(PATHOBJ)\}.obj: # Compile C Code into a .OBJ File
+ @ Echo Compiling $<
+ @ $(CC) -c $(CFLAGS) -Fo$@ $< >>$(ERRS)
+
+{$(PY_OBJECTS)\}.c{$(PATHOBJ)\}.obj: # Compile C Code into a .OBJ File
+ @ Echo Compiling $<
+ @ $(CC) -c $(CFLAGS) -Fo$@ $< >>$(ERRS)
+
+{$(PY_PARSER)\}.c{$(PATHOBJ)\}.obj: # Compile C Code into a .OBJ File
+ @ Echo Compiling $<
+ @ $(CC) -c $(CFLAGS) -Fo$@ $< >>$(ERRS)
+
+{$(PY_PYTHON)\}.c{$(PATHOBJ)\}.obj: # Compile C Code into a .OBJ File
+ @ Echo Compiling $<
+ @ $(CC) -c $(CFLAGS) -Fo$@ $< >>$(ERRS)
+
+.c{$(PATHOBJ)\}.obj: # Compile C Code into a .OBJ File
+ @ Echo Compiling $<
+ @ $(CC) -c $(CFLAGS) -Fo$@ $< >>$(ERRS)
+
+###################
+# Python Subsystems
+###################
+
+# PYTHON is the central core, containing the builtins and interpreter.
+PYTHON = \
+ $(PATHOBJ)\BltinModule.obj \
+ $(PATHOBJ)\CEval.obj \
+ $(PATHOBJ)\Compile.obj \
+ $(PATHOBJ)\Errors.obj \
+ $(PATHOBJ)\Frozen.obj \
+ $(PATHOBJ)\Getargs.obj \
+ $(PATHOBJ)\GetCompiler.obj \
+ $(PATHOBJ)\GetCopyright.obj \
+ $(PATHOBJ)\GetMTime.obj \
+ $(PATHOBJ)\GetOpt.obj \
+ $(PATHOBJ)\GetPlatform.obj \
+ $(PATHOBJ)\GetVersion.obj \
+ $(PATHOBJ)\GramInit.obj \
+ $(PATHOBJ)\Import.obj \
+ $(PATHOBJ)\ImportDL.obj \
+ $(PATHOBJ)\Marshal.obj \
+ $(PATHOBJ)\ModSupport.obj \
+ $(PATHOBJ)\MyStrtoul.obj \
+ $(PATHOBJ)\PyState.obj \
+ $(PATHOBJ)\PythonRun.obj \
+ $(PATHOBJ)\StructMember.obj \
+ $(PATHOBJ)\SysModule.obj \
+ $(PATHOBJ)\Thread.obj \
+ $(PATHOBJ)\TraceBack.obj \
+ $(PATHOBJ)\FrozenMain.obj \
+ $(PATHOBJ)\exceptions.obj \
+ $(PATHOBJ)\symtable.obj \
+ $(PATHOBJ)\codecs.obj \
+ $(PATHOBJ)\future.obj \
+ $(PATHOBJ)\dynload_os2.obj \
+ $(PATHOBJ)\mysnprintf.obj \
+ $(PATHOBJ)\iterobject.obj
+
+# Python's Internal Parser
+PARSER = \
+ $(PATHOBJ)\Acceler.obj \
+ $(PATHOBJ)\Grammar1.obj \
+ $(PATHOBJ)\ListNode.obj \
+ $(PATHOBJ)\Node.obj \
+ $(PATHOBJ)\Parser.obj \
+ $(PATHOBJ)\ParseTok.obj \
+ $(PATHOBJ)\BitSet.obj \
+ $(PATHOBJ)\MetaGrammar.obj \
+ $(PATHOBJ)\Tokenizer.obj \
+ $(PATHOBJ)\MyReadline.obj
+
+# Python Object Types
+OBJECTS = \
+ $(PATHOBJ)\Abstract.obj \
+ $(PATHOBJ)\BoolObject.obj \
+ $(PATHOBJ)\BufferObject.obj \
+ $(PATHOBJ)\CellObject.obj \
+ $(PATHOBJ)\ClassObject.obj \
+ $(PATHOBJ)\CObject.obj \
+ $(PATHOBJ)\ComplexObject.obj \
+ $(PATHOBJ)\DescrObject.obj \
+ $(PATHOBJ)\DictObject.obj \
+ $(PATHOBJ)\EnumObject.obj \
+ $(PATHOBJ)\FileObject.obj \
+ $(PATHOBJ)\FloatObject.obj \
+ $(PATHOBJ)\FrameObject.obj \
+ $(PATHOBJ)\FuncObject.obj \
+ $(PATHOBJ)\IntObject.obj \
+ $(PATHOBJ)\IterObject.obj \
+ $(PATHOBJ)\ListObject.obj \
+ $(PATHOBJ)\LongObject.obj \
+ $(PATHOBJ)\MethodObject.obj \
+ $(PATHOBJ)\ModuleObject.obj \
+ $(PATHOBJ)\Object.obj \
+ $(PATHOBJ)\ObMalloc.obj \
+ $(PATHOBJ)\RangeObject.obj \
+ $(PATHOBJ)\SliceObject.obj \
+ $(PATHOBJ)\StringObject.obj \
+ $(PATHOBJ)\StructSeq.obj \
+ $(PATHOBJ)\TupleObject.obj \
+ $(PATHOBJ)\TypeObject.obj \
+ $(PATHOBJ)\UnicodeObject.obj \
+ $(PATHOBJ)\UnicodeCType.obj \
+ $(PATHOBJ)\WeakrefObject.obj
+
+# Extension Modules (Built-In or as Separate DLLs)
+MODULES = \
+ $(PATHOBJ)\ArrayModule.obj \
+ $(PATHOBJ)\BinAscii.obj \
+ $(PATHOBJ)\CMathModule.obj \
+ $(PATHOBJ)\cPickle.obj \
+ $(PATHOBJ)\cStringIO.obj \
+ $(PATHOBJ)\ErrnoModule.obj \
+ $(PATHOBJ)\GCModule.obj \
+ $(PATHOBJ)\GetBuildInfo.obj \
+ $(PATHOBJ)\GetPathP.obj \
+ $(PATHOBJ)\Main.obj \
+ $(PATHOBJ)\MathModule.obj \
+ $(PATHOBJ)\MD5c.obj \
+ $(PATHOBJ)\MD5Module.obj \
+ $(PATHOBJ)\Operator.obj \
+ $(PATHOBJ)\PCREModule.obj \
+ $(PATHOBJ)\PyPCRE.obj \
+ $(PATHOBJ)\PosixModule.obj \
+ $(PATHOBJ)\RegexModule.obj \
+ $(PATHOBJ)\RegExpr.obj \
+ $(PATHOBJ)\SelectModule.obj \
+ $(PATHOBJ)\SignalModule.obj \
+ $(PATHOBJ)\SocketModule.obj \
+ $(PATHOBJ)\StropModule.obj \
+ $(PATHOBJ)\StructModule.obj \
+ $(PATHOBJ)\TimeModule.obj \
+ $(PATHOBJ)\ThreadModule.obj
+
+# Standalone Parser Generator Program (Shares Some of Python's Modules)
+PGEN = \
+ $(PATHOBJ)\PGen.obj \
+ $(PATHOBJ)\PGenMain.obj \
+ $(PATHOBJ)\MySNPrintf.obj \
+ $(PATHOBJ)\Tokenizer_Pgen.obj \
+ $(PATHOBJ)\PrintGrammar.obj \
+ $(PATHOBJ)\Grammar.obj \
+ $(PATHOBJ)\FirstSets.obj
+
+##################
+# Macros and Flags
+##################
+_BASE = /Q /W2 /I$(PROJINCLUDE)
+ # /Q = Omit IBM Copyright
+ # /W2 = Show Warnings/Errors Only
+
+_GEN = /G4 /Gm /Gd-
+ # /G4 = Generate Code for 486 (Use 386 for Debugger)
+ # /Gm = Use Multithread Runtime
+ # /Gd = Dynamically Load Runtime
+ # /Ms = Use _System Calling Convention (vs _Optlink)
+ # (to allow non-VAC++ code to call into Python23.dll)
+
+_OPT = /O /Gl
+ # /O = Enable Speed-Optimizations
+ # /Ol = Pass Code Thru Intermediate Linker
+ # /Gu = Advise Linker All Ext Data is ID'd
+ # /Gl = Have Linker Remove Unused Fns
+
+_DBG = /Wpro- /Ti- /DHAVE_CONFIG_H /DUSE_SOCKET
+ # /Wpro= Generate Compiler Warnings re Missing Prototypes
+ # /Ti = Embed Debugger/Analyzer Recs
+ # /Tm = Enable Debug Memory Fns
+ # /Tx = Request Full Dump Upon Exception
+ # /DHAVE_CONFIG_H = Causes Use of CONFIG.H Settings
+ # /DUSE_SOCKET = Enables Building In of Socket API
+
+_OUT =
+ # /Fb = Embed Browser Recs
+ # /Gh = Generate Code for Profiler Hooks
+ # /Fl = Output C/C++ Listing Files
+ # /Lf = Provide Full (Detailed) Listing Files
+ # /Fm. = Output Linker Map File
+ # /Ft. = Output C++ Template Resolution Files
+
+_MAP = /FmNoise\$(@R).map
+
+_DLL = /Ge-
+_EXE = /Ge
+ # /Ge = Create an EXE, not DLL
+
+CFLAGS = $(_BASE) $(_GEN) $(_OPT) $(_DBG) $(_OUT) $(_EXE) /Ss
+
+###################
+# Primary Target(s)
+###################
+All: obj noise PyCore.lib Python23.lib PGen.exe \
+ Python.exe PythonPM.exe Python23.dll # _tkinter.dll
+
+Modules: $(MODULES)
+Objects: $(OBJECTS)
+Parser: $(PARSER)
+Python: $(PYTHON)
+
+# Directory to Keep .OBJ Files Out of the Way
+obj:
+ @-mkdir obj >>NUL
+
+# Directory to Keep .MAP and Such Text Files Out of the Way
+noise:
+ @-mkdir noise >>NUL
+
+##############
+#
+##############
+
+# Python Extension DLL: Tcl/Tk Interface
+#_tkinter.dll: $(PATHOBJ)\_tkinter.obj Python23.lib _tkinter.def
+# @ Echo Linking $@ As DLL
+# @ $(CC) $(CFLAGS) /B"/NOE" $(_DLL) /Fe$@ $(_MAP) $** $(OTHERLIBS) >>$(ERRS)
+
+#$(PATHOBJ)\_tkinter.obj: $(PY_MODULES)\_tkinter.c
+# @ Echo Compiling $**
+# @ $(CC) -c $(CFLAGS) $(_DLL) -Fo$@ $** >>$(ERRS)
+
+# Object Library of All Essential Python Routines
+PyCore.lib: $(MODULES) $(OBJECTS) $(PARSER) $(PYTHON) $(PATHOBJ)\Config.obj
+ @ Echo Adding Updated Object Files to Link Library $@
+ @ ! ILIB $@ /NOLOGO /NOBACKUP -+$? ; >>$(ERRS)
+
+Python23.dll: $(PATHOBJ)\Compile.obj PyCore.lib Python.def
+ @ Echo Linking $@ As DLL
+ @ $(CC) $(CFLAGS) /B"/NOE" $(_DLL) /Fe$@ $(_MAP) $** $(OTHERLIBS) >>$(ERRS)
+# @ Echo Compressing $@ with LxLite
+# @ lxlite $@
+
+# IBM Linker Requires One Explicit .OBJ To Build a .DLL from a .LIB
+$(PATHOBJ)\Compile.obj: $(PY_PYTHON)\Compile.c
+ @ Echo Compiling $**
+ @ $(CC) -c $(CFLAGS) $(_DLL) -Fo$@ $** >>$(ERRS)
+
+# Import Library for Using the Python23.dll
+Python23.lib: Python.def
+ @ Echo Making $@
+ @ IMPLIB /NOLOGO /NOIGNORE $@ $** >>$(ERRS)
+ @ ILIB /NOLOGO /CONVFORMAT /NOEXTDICTIONARY /NOBROWSE /NOBACKUP $@; >>$(ERRS)
+
+# Small Command-Line Program to Start Interpreter in Python23.dll
+Python.exe: $(PATHOBJ)\Python.obj Python23.lib
+ @ Echo Linking $@ As EXE
+ @ $(CC) $(CFLAGS) $(_EXE) /B"/PM:VIO /STACK:360000" /Fe$@ $(_MAP) $** $(OTHERLIBS) >>$(ERRS)
+
+# Small PM-GUI Program to Start Interpreter in Python23.dll
+PythonPM.exe: $(PATHOBJ)\Python.obj Python23.lib
+ @ Echo Linking $@ As EXE
+ @ $(CC) $(CFLAGS) $(_EXE) /B"/PM:PM /STACK:360000" /Fe$@ $(_MAP) $** $(OTHERLIBS) >>$(ERRS)
+
+PGen.exe: $(PGEN) PyCore.lib
+ @ Echo Linking $@ As EXE
+ @ $(CC) $(CFLAGS) $(_EXE) /B"/STACK:360000" /Fe$@ $(_MAP) $** $(OTHERLIBS) >>$(ERRS)
+
+#######################
+# Miscellaneous Targets
+#######################
+
+# Remove Intermediate Targets but Leave Executable Binaries
+clean:
+ -- Del /Q $(PATHOBJ)\*.obj >NUL 2>&1
+ -- Del /Q /Y Noise >NUL 2>&1
+ -- Del /Q $(ERRS) >NUL 2>&1
+
+# Remove All Targets, Including Final Binaries
+distclean: clean
+ -- Del /Q PyCore.lib Python23.lib >NUL 2>&1
+ -- Del /Q Python23.dll Python.exe PGen.exe >NUL 2>&1
+
+release: Python.exe Python23.dll Python23.lib
+ -- @Echo Y | copy /U Python.exe D:\EXEs
+ -- @Echo Y | copy /U Python23.dll D:\DLLs
+ -- @Echo Y | copy /U Python23.lib E:\Tau\Lib
+ -- @Echo Y | copy /U _tkinter.dll D:\Python
+
+test:
+ python ..\..\lib\test\regrtest.py
+
+# Update Dependencies on Targets (Uses OpusMAKE Commercial Product)
+depend:
+ D:\OpusMake\os2mkmf -c -s
+
+### OPUS MKMF: Do not remove this line! Generated dependencies follow.
+
+_tkinter.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+almodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+arraymodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+audioop.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\mymath.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+binascii.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+bsddbmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+cdmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+cgensupport.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_MODULES)\cgensupport.h $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h \
+ $(PY_INCLUDE)\complexobject.h pyconfig.h $(PY_INCLUDE)\dictobject.h \
+ $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h \
+ $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h \
+ $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+clmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+cmathmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\mymath.h $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h \
+ $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h \
+ $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h \
+ $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+cpickle.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\cstringio.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\mymath.h $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h \
+ $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h \
+ $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h \
+ $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+cryptmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+cstringio.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\cstringio.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+cursesmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+dbmmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+dlmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+errno.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+errnomodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+fcntlmodule.obj: $(PY_INCLUDE)\abstract.h $(OS2TCPIP)\Include\sys\ioctl.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+flmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\structmember.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+fmmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+fpectlmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+fpetestmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+gdbmmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+getbuildinfo.obj: pyconfig.h
+
+getpath.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\osdefs.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+glmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_MODULES)\cgensupport.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+grpmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(OS2TCPIP)\Include\grp.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+imageop.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+imgfile.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+main.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+mathmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\mymath.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+md5c.obj: pyconfig.h $(PY_MODULES)\md5.h
+
+md5module.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_MODULES)\md5.h $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+mpzmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longintrepr.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+nismodule.obj: $(PY_INCLUDE)\abstract.h $(OS2TCPIP)\Include\sys\time.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+operator.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+parsermodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\compile.h \
+ $(PY_INCLUDE)\complexobject.h pyconfig.h $(PY_INCLUDE)\dictobject.h \
+ $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h \
+ $(PY_INCLUDE)\graminit.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\node.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\token.h \
+ $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+pcremodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_MODULES)\pcre-internal.h \
+ $(PY_MODULES)\pcre.h $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h \
+ $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h \
+ $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+posix.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\mytime.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+posixmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\mytime.h $(PY_INCLUDE)\object.h \
+ $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h \
+ $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h \
+ $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+puremodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+pwdmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(OS2TCPIP)\Include\pwd.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+pypcre.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\graminit.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_MODULES)\pcre-internal.h $(PY_MODULES)\pcre.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+readline.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+resource.obj: $(PY_INCLUDE)\abstract.h $(OS2TCPIP)\Include\sys\time.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+rgbimgmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+selectmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\myselect.h $(PY_INCLUDE)\mytime.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+sgimodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+signalmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+socketmodule.obj: $(PY_INCLUDE)\abstract.h $(OS2TCPIP)\Include\netinet\in.h \
+ $(OS2TCPIP)\Include\sys\socket.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\mytime.h $(OS2TCPIP)\Include\netdb.h $(PY_INCLUDE)\object.h \
+ $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h \
+ $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h \
+ $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+soundex.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+stdwinmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+stropmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+structmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\mymath.h $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h \
+ $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h \
+ $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h \
+ $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+sunaudiodev.obj: $(PY_INCLUDE)\abstract.h $(OS2TCPIP)\Include\sys\ioctl.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\structmember.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+svmodule.obj: $(PY_INCLUDE)\abstract.h $(OS2TCPIP)\Include\sys\time.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\compile.h \
+ $(PY_INCLUDE)\complexobject.h pyconfig.h $(PY_INCLUDE)\dictobject.h \
+ $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h \
+ $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h \
+ $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+syslogmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(OS2TCPIP)\Include\syslog.h $(PY_INCLUDE)\sysmodule.h \
+ $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+termios.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+threadmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\thread.h \
+ $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+timemodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\mytime.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+timingmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_MODULES)\timing.h \
+ $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+xxmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+zlibmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+abstract.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+classobject.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\structmember.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+cobject.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+complexobject.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\mymath.h $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h \
+ $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h \
+ $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h \
+ $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+dictobject.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+fileobject.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\structmember.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+floatobject.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\mymath.h $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h \
+ $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h \
+ $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h \
+ $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+frameobject.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\compile.h \
+ $(PY_INCLUDE)\complexobject.h pyconfig.h $(PY_INCLUDE)\dictobject.h \
+ $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\frameobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\opcode.h $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h \
+ $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h \
+ $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\structmember.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+funcobject.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\compile.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\structmember.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+intobject.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+listobject.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+longobject.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longintrepr.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\mymath.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+methodobject.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\token.h \
+ $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+moduleobject.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+object.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+rangeobject.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+sliceobject.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+stringobject.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\mymath.h $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h \
+ $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h \
+ $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h \
+ $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+tupleobject.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+typeobject.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+xxobject.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+acceler.obj: $(PY_INCLUDE)\bitset.h pyconfig.h $(PY_INCLUDE)\grammar.h \
+ $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\node.h \
+ $(PY_PARSER)\parser.h $(PY_INCLUDE)\pgenheaders.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\token.h
+
+bitset.obj: $(PY_INCLUDE)\bitset.h pyconfig.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\pgenheaders.h $(PY_INCLUDE)\pydebug.h
+
+firstsets.obj: $(PY_INCLUDE)\bitset.h pyconfig.h $(PY_INCLUDE)\grammar.h \
+ $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\pgenheaders.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\token.h
+
+grammar.obj: $(PY_INCLUDE)\bitset.h pyconfig.h \
+ $(PY_INCLUDE)\grammar.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\pgenheaders.h $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\token.h
+
+grammar1.obj: $(PY_INCLUDE)\bitset.h pyconfig.h \
+ $(PY_INCLUDE)\grammar.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\pgenheaders.h $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\token.h
+
+intrcheck.obj: pyconfig.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h
+
+listnode.obj: pyconfig.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\node.h $(PY_INCLUDE)\pgenheaders.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\token.h
+
+metagrammar.obj: $(PY_INCLUDE)\bitset.h pyconfig.h $(PY_INCLUDE)\grammar.h \
+ $(PY_INCLUDE)\metagrammar.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_PARSER)\pgen.h $(PY_INCLUDE)\pgenheaders.h $(PY_INCLUDE)\pydebug.h
+
+myreadline.obj: pyconfig.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h
+
+node.obj: pyconfig.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\node.h \
+ $(PY_INCLUDE)\pgenheaders.h $(PY_INCLUDE)\pydebug.h
+
+parser.obj: $(PY_INCLUDE)\bitset.h pyconfig.h $(PY_INCLUDE)\errcode.h \
+ $(PY_INCLUDE)\grammar.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\node.h $(PY_PARSER)\parser.h $(PY_INCLUDE)\pgenheaders.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\token.h
+
+parsetok.obj: $(PY_INCLUDE)\bitset.h pyconfig.h $(PY_INCLUDE)\errcode.h \
+ $(PY_INCLUDE)\grammar.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\node.h $(PY_PARSER)\parser.h $(PY_INCLUDE)\parsetok.h \
+ $(PY_INCLUDE)\pgenheaders.h $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\token.h \
+ $(PY_PARSER)\tokenizer.h
+
+pgen.obj: $(PY_INCLUDE)\bitset.h pyconfig.h $(PY_INCLUDE)\grammar.h \
+ $(PY_INCLUDE)\metagrammar.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\node.h $(PY_PARSER)\pgen.h $(PY_INCLUDE)\pgenheaders.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\token.h
+
+pgenmain.obj: $(PY_INCLUDE)\bitset.h pyconfig.h $(PY_INCLUDE)\grammar.h \
+ $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\node.h \
+ $(PY_INCLUDE)\parsetok.h $(PY_PARSER)\pgen.h $(PY_INCLUDE)\pgenheaders.h \
+ $(PY_INCLUDE)\pydebug.h
+
+printgrammar.obj: $(PY_INCLUDE)\bitset.h pyconfig.h $(PY_INCLUDE)\grammar.h \
+ $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\pgenheaders.h \
+ $(PY_INCLUDE)\pydebug.h
+
+tokenizer.obj: pyconfig.h $(PY_INCLUDE)\errcode.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\pgenheaders.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\token.h $(PY_PARSER)\tokenizer.h
+
+atof.obj: pyconfig.h
+
+bltinmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\compile.h \
+ $(PY_INCLUDE)\complexobject.h pyconfig.h $(PY_INCLUDE)\dictobject.h \
+ $(PY_INCLUDE)\eval.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\mymath.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\node.h $(PY_INCLUDE)\object.h \
+ $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h \
+ $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h \
+ $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+ceval.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\compile.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\eval.h \
+ $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\frameobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\opcode.h $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h \
+ $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h \
+ $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+compile.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\compile.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\graminit.h \
+ $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h \
+ $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\node.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\opcode.h $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h \
+ $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h \
+ $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\structmember.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\token.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+errors.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+fmod.obj: pyconfig.h $(PY_INCLUDE)\mymath.h
+
+frozen.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+frozenmain.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+getargs.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+getcompiler.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+getcopyright.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+getplatform.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+getversion.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\patchlevel.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+graminit.obj: $(PY_INCLUDE)\bitset.h pyconfig.h $(PY_INCLUDE)\grammar.h \
+ $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\pgenheaders.h \
+ $(PY_INCLUDE)\pydebug.h
+
+hypot.obj: pyconfig.h $(PY_INCLUDE)\mymath.h $(PY_INCLUDE)\myproto.h
+
+import.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\compile.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\errcode.h $(PY_INCLUDE)\eval.h \
+ $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h \
+ $(PY_INCLUDE)\import.h $(PY_PYTHON)\importdl.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\marshal.h $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\node.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\osdefs.h $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h \
+ $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h \
+ $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\token.h \
+ $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+importdl.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_PYTHON)\importdl.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\osdefs.h $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h \
+ $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h \
+ $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+marshal.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\compile.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longintrepr.h $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\marshal.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+modsupport.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+mystrtoul.obj: pyconfig.h
+
+pyfpe.obj: pyconfig.h $(PY_INCLUDE)\pyfpe.h
+
+pystate.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+pythonrun.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\bitset.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\compile.h \
+ $(PY_INCLUDE)\complexobject.h pyconfig.h $(PY_INCLUDE)\dictobject.h \
+ $(PY_INCLUDE)\errcode.h $(PY_INCLUDE)\eval.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\grammar.h \
+ $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h \
+ $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\marshal.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\node.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\parsetok.h $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h \
+ $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h \
+ $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+sigcheck.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
+ $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
+ $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
+ $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+strdup.obj: pyconfig.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h
+
+strtod.obj: pyconfig.h
+
+structmember.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
+ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
+ $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
+ $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
+ $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
+ $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\structmember.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
+sysmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
+ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\osdefs.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
+ $(PY_INCLUDE)\tupleobject.h
+
+thread.obj: pyconfig.h $(PY_INCLUDE)\thread.h
+
+traceback.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
+ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\compile.h $(PY_INCLUDE)\complexobject.h \
+ pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+ $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\frameobject.h \
+ $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
+ $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
+ $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
+ $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
+ $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\osdefs.h \
+ $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
+ $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
+ $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
+ $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\structmember.h \
+ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
+
diff --git a/PC/os2vacpp/makefile.omk b/PC/os2vacpp/makefile.omk
new file mode 100644
index 0000000..c4f6438
--- /dev/null
+++ b/PC/os2vacpp/makefile.omk
@@ -0,0 +1,1271 @@
+######################################################################
+#
+# Top-Level Makefile for Building Python for OS/2
+#
+# This makefile was developed for use with IBM's VisualAge C/C++
+# for OS/2 compiler, version 3.0, with Fixpack 8 applied. It uses
+# the commercial OpusMAKE tool.
+#
+# The output of the build is a largish Python15.DLL containing the
+# essential modules of Python and a small Python.exe program to start
+# the interpreter. When embedding Python within another program, only
+# Python15.DLL is needed.
+#
+# These two binaries can be statically linked with the VisualAge C/C++
+# runtime library (producing larger binaries), or dynamically linked
+# to make smaller ones that require the compiler to be installed on
+# any system Python is used on.
+#
+# History (Most Recent First)
+#
+# 20-Nov-97 jrr Cleaned Up for Applying to Distribution
+# 29-Oct-97 jrr Modified for Use with Python 1.5 Alpha 4
+# 03-Aug-96 jrr Original for Use with Python 1.4 Release
+#
+######################################################################
+
+###################
+# Places and Things
+###################
+PY_MODULES = ..\..\Modules
+PY_OBJECTS = ..\..\Objects
+PY_PARSER = ..\..\Parser
+PY_PYTHON = ..\..\Python
+PY_INCLUDE = ..\..\Include
+PY_INCLUDES = .;$(PY_INCLUDE);$(PY_MODULES);$(PY_OBJECTS);$(PY_PARSER);$(PY_PYTHON)
+
+# Where to Find the IBM TCP/IP Socket Includes and Libraries
+OS2TCPIP = C:\MPTN
+
+# Where to Put the .OBJ Files, To Keep Them Out of the Way
+.PATH.obj = obj
+
+# Search Path for Include Files
+PROJINCLUDE = .;$(OS2TCPIP)\Include;$(PY_INCLUDES)
+
+# Place to Search for Sources re OpusMAKE Dependency Generator (Commercial)
+MKMF_SRCS = $(PY_MODULES)\*.c $(PY_OBJECTS)\*.c $(PY_PARSER)\*.c $(PY_PYTHON)\*.c
+
+.HDRPATH.c := $(PROJINCLUDE,;= ) $(.HDRPATH.c)
+.PATH.c = .;$(PY_MODULES);$(PY_OBJECTS);$(PY_PARSER);$(PY_PYTHON)
+OTHERLIBS = $(OS2TCPIP)\lib\so32dll.lib $(OS2TCPIP)\lib\tcp32dll.lib
+
+#################
+# Inference Rules
+#################
+
+
+###################
+# Python Subsystems
+###################
+
+# PYTHON is the central core, containing the builtins and interpreter.
+PYTHON = \
+ BltinModule.obj \
+ CEval.obj \
+ Compile.obj \
+ Errors.obj \
+ Frozen.obj \
+ Getargs.obj \
+ GetCompiler.obj \
+ GetCopyright.obj \
+ GetMTime.obj \
+ GetOpt.obj \
+ GetPlatform.obj \
+ GetVersion.obj \
+ GramInit.obj \
+ Import.obj \
+ ImportDL.obj \
+ Marshal.obj \
+ ModSupport.obj \
+ MyStrtoul.obj \
+ PyState.obj \
+ PythonRun.obj \
+ StructMember.obj \
+ SysModule.obj \
+ Thread.obj \
+ TraceBack.obj \
+ FrozenMain.obj
+
+# Omitted Python Elements (and Reason):
+ # atof.c -- Implementation for Platforms w/o This Function
+ # dup2.c -- Implementation for Platforms w/o This Function
+ # fmod.c -- Implementation for Platforms w/o This Function
+ # getcwd.c -- Implementation for Platforms w/o This Function
+ # hypot.c -- Implementation for Platforms w/o This Function
+ # memmove.c -- Implementation for Platforms w/o This Function
+ # strdup.c -- Implementation for Platforms w/o This Function
+ # strerror.c -- Implementation for Platforms w/o This Function
+ # strtod.c -- Implementation for Platforms w/o This Function
+
+ # sigcheck.c -- Primitive Signal Catcher (SignalModule.c Used Instead)
+ # pyfpe.c -- Primitive FPE Catcher (Not Referenced by Anyone)
+ # frozenmain.c
+
+# Python's Internal Parser
+PARSER = \
+ Acceler.obj \
+ Grammar1.obj \
+ MyReadline.obj \
+ Node.obj \
+ Parser.obj \
+ ParseTok.obj \
+ Tokenizer.obj
+
+# Python Object Types
+OBJECTS = \
+ Abstract.obj \
+ ClassObject.obj \
+ CObject.obj \
+ ComplexObject.obj \
+ DictObject.obj \
+ FileObject.obj \
+ FloatObject.obj \
+ FrameObject.obj \
+ FuncObject.obj \
+ IntObject.obj \
+ ListObject.obj \
+ LongObject.obj \
+ MethodObject.obj \
+ ModuleObject.obj \
+ Object.obj \
+ RangeObject.obj \
+ SliceObject.obj \
+ StringObject.obj \
+ TupleObject.obj \
+ TypeObject.obj
+
+# Omitted Objects (and Reason):
+ # xxobject.c -- Template to Create Your Own Object Types
+
+# Extension Modules (Built-In or as Separate DLLs)
+MODULES = \
+ ArrayModule.obj \
+ BinAscii.obj \
+ CMathModule.obj \
+ cPickle.obj \
+ cStringIO.obj \
+ ErrnoModule.obj \
+ GetBuildInfo.obj \
+ GetPathP.obj \
+ Main.obj \
+ MathModule.obj \
+ MD5c.obj \
+ MD5Module.obj \
+ Operator.obj \
+ PosixModule.obj \
+ RegexModule.obj \
+ RegExpr.obj \
+ ReopModule.obj \
+ SelectModule.obj \
+ SignalModule.obj \
+ SocketModule.obj \
+ SoundEx.obj \
+ StropModule.obj \
+ StructModule.obj \
+ TimeModule.obj \
+ ThreadModule.obj
+
+# Omitted Modules (and Description/Reason):
+ #
+ # Multimedia:
+ # almodule.c -- Non-OS/2 Audio Channel Facility (?)
+ # cdmodule.c -- Wrapper of Non-OS/2 CD Audio Functions
+ # audioop.c -- Various Compute Operations on Audio Samples
+ # imageop.c -- Various Compute Operations on Video Samples
+ # imgfile.c -- Wrapper of SGI ImageLib API
+ # rgbimgmodule.c -- Non-OS/2 Image Read/Write Capability (Primitive)
+ # sunaudiodev.c -- Wrapper of Sun Audio Device API
+ # clmodule.c -- Wrapper of SGI Image/Audio Compression API
+
+ # Database:
+ # dbmmodule.c -- Wrapper of DBM Database API (Generic Flavor)
+ # bsddbmodule.c -- Wrapper of DBM Database API (BSD Flavor)
+ # gdbmmodule.c -- Wrapper of DBM Database API (GNU Flavor)
+
+ # Cryptography:
+ # cryptmodule.c -- Simple Wrapper for crypt() Function
+ # rotormodule.c -- Implementation of Enigma Crypto Based on Rotors
+
+# cgensupport.obj \
+# fcntlmodule.obj \
+# fmmodule.obj \
+# fpectlmodule.obj \
+# fpetestmodule.obj \
+# Unix-Specific getpath.obj \
+# glmodule.obj \
+# grpmodule.obj \
+# mpzmodule.obj \
+# nismodule.obj \
+# parsermodule.obj \
+# pcremodule.obj \
+# pwdmodule.obj \
+# pypcre.obj \
+# readline.obj \
+# resource.obj \
+# sgimodule.obj \
+# svmodule.obj \
+# syslogmodule.obj \
+# termios.obj \
+# timingmodule.obj \
+
+ # User Interface:
+# _tkinter.obj \
+# stdwinmodule.obj \
+# cursesmodule.obj \
+# tclNotify.obj \
+# tkappinit.obj \
+ # flmodule.c -- Wrapper of FORMS Library (Screen Forms)
+
+ # zlibmodule.c -- Wrapper of ZLib Compression API (GZip Format)
+ # puremodule.c -- Wrapper of Purify Debugging API (Probably Non-OS/2)
+ # dlmodule.c -- Some Weird Form of Data Processing Module
+ # xxmodule.c -- Template to Create Your Own Module
+
+#
+# Standalone Parser Generator Program (Shares Some of Python's Modules)
+PGEN = \
+ PGenMain.obj \
+ PGen.obj \
+ PrintGrammar.obj \
+ ListNode.obj \
+ Grammar.obj \
+ BitSet.obj \
+ FirstSets.obj \
+ MetaGrammar.obj
+
+# Omitted Parser Elements (and Reason):
+ # intrcheck.c -- Not Referenced by Anyone (?)
+
+##################
+# Macros and Flags
+##################
+_BASE = /Q /W2 /I$(PROJINCLUDE)
+ # /Q = Omit IBM Copyright
+ # /W2 = Show Warnings/Errors Only
+ # /Fi = Create Precompiled Headers
+ # /Si = Utilize Precompiled Headers
+
+_GEN = /G4 /Gm /Gd /B"/STACK:360000"
+ # /G4 = Generate Code for 486 (Use 386 for Debugger)
+ # /Gm = Use Multithread Runtime
+ # /Gd = Dynamically Load Runtime
+ # /Gs = Remove Code for Stack Probes
+ # /Gx = Remove C++ Exception-Handling Info
+ # /Tdp = Generate Code for C++ Templates
+ # /Rn = Generate Code without a Runtime
+ # /B"/STACK:n" = Set Stack Size
+
+_OPT = /O /Gl
+ # /O = Enable Speed-Optimizations
+ # /Ol = Pass Code Thru Intermediate Linker
+ # /Gu = Advise Linker All Ext Data is ID'd
+ # /Gl = Have Linker Remove Unused Fns
+
+_DBG = /DHAVE_CONFIG_H /DUSE_SOCKET
+ # /Ti = Embed Debugger/Analyzer Recs
+ # /Tm = Enable Debug Memory Fns
+ # /Tx = Request Full Dump Upon Exception
+ # /DDEBUG = Enable App-Internal Debugging Code
+ # /DUSE_SOCKET =
+ # /DUSE_DL_EXPORT =
+
+_OUT =
+ # /Fb = Embed Browser Recs
+ # /Gh = Generate Code for Profiler Hooks
+ # /Fl = Output C/C++ Listing Files
+ # /Lf = Provide Full (Detailed) Listing Files
+ # /Fm. = Output Linker Map File
+ # /Ft. = Output C++ Template Resolution Files
+
+_MAP = /FmNoise\$(.TARGET,B,>.map)
+
+_DLL = /Ge-
+_EXE = /Ge
+ # /Ge = Create an EXE, not DLL
+
+CFLAGS = $(_BASE) $(_GEN) $(_OPT) $(_DBG) $(_OUT) $(_EXE) /Ss
+CPPFLAGS = $(_BASE) $(_GEN) $(_OPT) $(_DBG) $(_OUT) $(_EXE)
+
+###################
+# Primary Target(s)
+###################
+All: obj noise PyCore.lib Python15.lib Python15.dll Python.exe PGen.exe
+
+##############
+#
+##############
+
+# Object Library of All Essential Python Routines
+PyCore.lib: $(MODULES) $(OBJECTS) $(PARSER) $(PYTHON) Config.obj
+ %do "%.lib"
+
+Python15.dll: Compile.obj PyCore.lib Python.def
+ %do "%.dll" CPPFLAGS+=/B"/NOE" CPPFLAGS+=$(_MAP)
+
+Compile.obj: Compile.c
+ %do ".c.obj" CFLAGS+=$(_DLL)
+
+# Import Library for Using the Python15.dll
+Python15.lib: Python.def
+ %do ".def.lib"
+
+# Small Program to Start Interpreter in Python15.dll
+Python.exe: Python.obj Python15.lib
+ %do "%.exe" CPPFLAGS+=$(_MAP)
+
+#Python.obj: Python.c
+# %do ".c.obj" CFLAGS+=$(_EXE)
+
+PGen.exe: $(PGEN) PyCore.lib
+ %do "%.exe" CPPFLAGS+=$(_MAP)
+
+#######################
+# Miscellaneous Targets
+#######################
+
+# Remove Intermediate Targets but Leave Executable Binaries
+clean:
+ -- Del /Q $(.PATH.obj)\*.obj >NUL 2>&1
+ -- Del /Q /Y Noise >NUL 2>&1
+ -- Del /Q $(ERRS) >NUL 2>&1
+
+# Remove All Targets, Including Final Binaries
+distclean: clean
+ -- Del /Q PyCore.lib Python15.lib >NUL 2>&1
+ -- Del /Q Python15.dll Python.exe >NUL 2>&1
+
+release: Python.exe Python15.dll Python15.lib
+ -- @Echo Y | copy /U $(.SOURCES,M"*.exe") D:\EXEs
+ -- @Echo Y | copy /U $(.SOURCES,M"*.dll") D:\DLLs
+ -- @Echo Y | copy /U $(.SOURCES,M"*.lib") E:\Tau\Lib
+
+test:
+ python ..\..\lib\test\regrtest.py
+
+# Update Dependencies on Targets (Uses OpusMAKE Commercial Product)
+depend:
+ D:\OpusMake\os2mkmf -c -s
+
+### OPUS MKMF: Do not remove this line! Generated dependencies follow.
+
+_tkinter.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+almodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+arraymodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+audioop.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h mymath.h \
+ myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h traceback.h tupleobject.h
+
+binascii.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+bsddbmodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+cdmodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+cgensupport.obj: abstract.h ceval.h cgensupport.h classobject.h cobject.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
+ myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h traceback.h tupleobject.h
+
+clmodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+cmathmodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h mymath.h \
+ myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h traceback.h tupleobject.h
+
+cpickle.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h cstringio.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
+ mymath.h myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h traceback.h tupleobject.h
+
+cryptmodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+cstringio.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h cstringio.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
+ myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h traceback.h tupleobject.h
+
+cursesmodule.obj: abstract.h ceval.h classobject.h cobject.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
+ myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h traceback.h tupleobject.h
+
+dbmmodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+dlmodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+errno.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+errnomodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+fcntlmodule.obj: abstract.h c:\mptn\include\sys\ioctl.h ceval.h \
+ classobject.h cobject.h complexobject.h pyconfig.h dictobject.h \
+ fileobject.h floatobject.h funcobject.h import.h intobject.h \
+ intrcheck.h listobject.h longobject.h methodobject.h modsupport.h \
+ moduleobject.h mymalloc.h myproto.h object.h objimpl.h pydebug.h \
+ pyerrors.h pyfpe.h pystate.h python.h pythonrun.h rangeobject.h \
+ sliceobject.h stringobject.h sysmodule.h traceback.h tupleobject.h
+
+flmodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h \
+ structmember.h sysmodule.h traceback.h tupleobject.h
+
+fmmodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+fpectlmodule.obj: abstract.h ceval.h classobject.h cobject.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
+ myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h traceback.h tupleobject.h
+
+fpetestmodule.obj: abstract.h ceval.h classobject.h cobject.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
+ myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h traceback.h tupleobject.h
+
+gdbmmodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+getbuildinfo.obj: pyconfig.h
+
+getpath.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h osdefs.h pydebug.h pyerrors.h pyfpe.h pystate.h \
+ python.h pythonrun.h rangeobject.h sliceobject.h stringobject.h \
+ sysmodule.h traceback.h tupleobject.h
+
+glmodule.obj: abstract.h ceval.h cgensupport.h classobject.h cobject.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
+ myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h traceback.h tupleobject.h
+
+grpmodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ grp.h import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+imageop.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+imgfile.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+main.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+mathmodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h mymath.h \
+ myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h traceback.h tupleobject.h
+
+md5c.obj: pyconfig.h md5.h
+
+md5module.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h md5.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+mpzmodule.obj: abstract.h ceval.h classobject.h cobject.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longintrepr.h longobject.h methodobject.h modsupport.h \
+ moduleobject.h mymalloc.h myproto.h object.h objimpl.h pydebug.h \
+ pyerrors.h pyfpe.h pystate.h python.h pythonrun.h rangeobject.h \
+ sliceobject.h stringobject.h sysmodule.h traceback.h tupleobject.h
+
+nismodule.obj: abstract.h c:\mptn\include\sys\time.h ceval.h classobject.h \
+ cobject.h complexobject.h pyconfig.h dictobject.h fileobject.h \
+ floatobject.h funcobject.h import.h intobject.h intrcheck.h \
+ listobject.h longobject.h methodobject.h modsupport.h \
+ moduleobject.h mymalloc.h myproto.h object.h objimpl.h pydebug.h \
+ pyerrors.h pyfpe.h pystate.h python.h pythonrun.h rangeobject.h \
+ sliceobject.h stringobject.h sysmodule.h traceback.h tupleobject.h
+
+operator.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+parsermodule.obj: abstract.h ceval.h classobject.h cobject.h compile.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h graminit.h import.h intobject.h intrcheck.h \
+ listobject.h longobject.h methodobject.h modsupport.h \
+ moduleobject.h mymalloc.h myproto.h node.h object.h objimpl.h \
+ pydebug.h pyerrors.h pyfpe.h pystate.h python.h pythonrun.h \
+ rangeobject.h sliceobject.h stringobject.h sysmodule.h token.h \
+ traceback.h tupleobject.h
+
+pcremodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pcre-internal.h pcre.h pydebug.h pyerrors.h \
+ pyfpe.h pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h traceback.h tupleobject.h
+
+posix.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ mytime.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h \
+ python.h pythonrun.h rangeobject.h sliceobject.h stringobject.h \
+ sysmodule.h traceback.h tupleobject.h
+
+posixmodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ mytime.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h \
+ python.h pythonrun.h rangeobject.h sliceobject.h stringobject.h \
+ sysmodule.h traceback.h tupleobject.h
+
+puremodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+pwdmodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pwd.h pydebug.h pyerrors.h pyfpe.h pystate.h \
+ python.h pythonrun.h rangeobject.h sliceobject.h stringobject.h \
+ sysmodule.h traceback.h tupleobject.h
+
+pypcre.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ graminit.h import.h intobject.h intrcheck.h listobject.h \
+ longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
+ myproto.h object.h objimpl.h pcre-internal.h pcre.h pydebug.h \
+ pyerrors.h pyfpe.h pystate.h python.h pythonrun.h rangeobject.h \
+ sliceobject.h stringobject.h sysmodule.h traceback.h tupleobject.h
+
+readline.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+resource.obj: abstract.h c:\mptn\include\sys\time.h ceval.h classobject.h \
+ cobject.h complexobject.h pyconfig.h dictobject.h fileobject.h \
+ floatobject.h funcobject.h import.h intobject.h intrcheck.h \
+ listobject.h longobject.h methodobject.h modsupport.h \
+ moduleobject.h mymalloc.h myproto.h object.h objimpl.h pydebug.h \
+ pyerrors.h pyfpe.h pystate.h python.h pythonrun.h rangeobject.h \
+ sliceobject.h stringobject.h sysmodule.h traceback.h tupleobject.h
+
+rgbimgmodule.obj: abstract.h ceval.h classobject.h cobject.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
+ myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h traceback.h tupleobject.h
+
+rotormodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h mymath.h \
+ myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h traceback.h tupleobject.h
+
+selectmodule.obj: abstract.h ceval.h classobject.h cobject.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
+ myproto.h myselect.h mytime.h object.h objimpl.h pydebug.h \
+ pyerrors.h pyfpe.h pystate.h python.h pythonrun.h rangeobject.h \
+ sliceobject.h stringobject.h sysmodule.h traceback.h tupleobject.h
+
+sgimodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+signalmodule.obj: abstract.h ceval.h classobject.h cobject.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
+ myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h traceback.h tupleobject.h
+
+socketmodule.obj: abstract.h c:\mptn\include\netinet\in.h \
+ c:\mptn\include\sys\socket.h ceval.h classobject.h cobject.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
+ myproto.h mytime.h netdb.h object.h objimpl.h pydebug.h pyerrors.h \
+ pyfpe.h pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h traceback.h tupleobject.h
+
+soundex.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+stdwinmodule.obj: abstract.h ceval.h classobject.h cobject.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
+ myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h traceback.h tupleobject.h
+
+stropmodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+structmodule.obj: abstract.h ceval.h classobject.h cobject.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
+ mymath.h myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h traceback.h tupleobject.h
+
+sunaudiodev.obj: abstract.h c:\mptn\include\sys\ioctl.h ceval.h \
+ classobject.h cobject.h complexobject.h pyconfig.h dictobject.h \
+ fileobject.h floatobject.h funcobject.h import.h intobject.h \
+ intrcheck.h listobject.h longobject.h methodobject.h modsupport.h \
+ moduleobject.h mymalloc.h myproto.h object.h objimpl.h pydebug.h \
+ pyerrors.h pyfpe.h pystate.h python.h pythonrun.h rangeobject.h \
+ sliceobject.h stringobject.h structmember.h sysmodule.h \
+ traceback.h tupleobject.h
+
+svmodule.obj: abstract.h c:\mptn\include\sys\time.h ceval.h classobject.h \
+ cobject.h compile.h complexobject.h pyconfig.h dictobject.h \
+ fileobject.h floatobject.h funcobject.h import.h intobject.h \
+ intrcheck.h listobject.h longobject.h methodobject.h modsupport.h \
+ moduleobject.h mymalloc.h myproto.h object.h objimpl.h pydebug.h \
+ pyerrors.h pyfpe.h pystate.h python.h pythonrun.h rangeobject.h \
+ sliceobject.h stringobject.h sysmodule.h traceback.h tupleobject.h
+
+syslogmodule.obj: abstract.h ceval.h classobject.h cobject.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
+ myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h syslog.h sysmodule.h traceback.h tupleobject.h
+
+termios.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+threadmodule.obj: abstract.h ceval.h classobject.h cobject.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
+ myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h thread.h traceback.h tupleobject.h
+
+timemodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ mytime.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h \
+ python.h pythonrun.h rangeobject.h sliceobject.h stringobject.h \
+ sysmodule.h traceback.h tupleobject.h
+
+timingmodule.obj: abstract.h ceval.h classobject.h cobject.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
+ myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h timing.h traceback.h tupleobject.h
+
+xxmodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+zlibmodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+abstract.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+classobject.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h \
+ structmember.h sysmodule.h traceback.h tupleobject.h
+
+cobject.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+complexobject.obj: abstract.h ceval.h classobject.h cobject.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
+ mymath.h myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h traceback.h tupleobject.h
+
+dictobject.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+fileobject.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h \
+ structmember.h sysmodule.h traceback.h tupleobject.h
+
+floatobject.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h mymath.h \
+ myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h traceback.h tupleobject.h
+
+frameobject.obj: abstract.h ceval.h classobject.h cobject.h compile.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ frameobject.h funcobject.h import.h intobject.h intrcheck.h \
+ listobject.h longobject.h methodobject.h modsupport.h \
+ moduleobject.h mymalloc.h myproto.h object.h objimpl.h opcode.h \
+ pydebug.h pyerrors.h pyfpe.h pystate.h python.h pythonrun.h \
+ rangeobject.h sliceobject.h stringobject.h structmember.h \
+ sysmodule.h traceback.h tupleobject.h
+
+funcobject.obj: abstract.h ceval.h classobject.h cobject.h compile.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
+ myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h structmember.h sysmodule.h traceback.h \
+ tupleobject.h
+
+intobject.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+listobject.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+longobject.obj: abstract.h ceval.h classobject.h cobject.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longintrepr.h longobject.h methodobject.h modsupport.h \
+ moduleobject.h mymalloc.h mymath.h myproto.h object.h objimpl.h \
+ pydebug.h pyerrors.h pyfpe.h pystate.h python.h pythonrun.h \
+ rangeobject.h sliceobject.h stringobject.h sysmodule.h traceback.h \
+ tupleobject.h
+
+methodobject.obj: abstract.h ceval.h classobject.h cobject.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
+ myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h token.h traceback.h tupleobject.h
+
+moduleobject.obj: abstract.h ceval.h classobject.h cobject.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
+ myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h traceback.h tupleobject.h
+
+object.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+rangeobject.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+sliceobject.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+stringobject.obj: abstract.h ceval.h classobject.h cobject.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
+ mymath.h myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h traceback.h tupleobject.h
+
+tupleobject.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+typeobject.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+xxobject.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+acceler.obj: bitset.h pyconfig.h grammar.h mymalloc.h myproto.h node.h \
+ parser.h pgenheaders.h pydebug.h token.h
+
+bitset.obj: bitset.h pyconfig.h mymalloc.h myproto.h pgenheaders.h pydebug.h
+
+firstsets.obj: bitset.h pyconfig.h grammar.h mymalloc.h myproto.h \
+ pgenheaders.h pydebug.h token.h
+
+grammar.obj: bitset.h pyconfig.h grammar.h mymalloc.h myproto.h \
+ pgenheaders.h pydebug.h token.h
+
+grammar1.obj: bitset.h pyconfig.h grammar.h mymalloc.h myproto.h \
+ pgenheaders.h pydebug.h token.h
+
+intrcheck.obj: pyconfig.h intrcheck.h mymalloc.h myproto.h
+
+listnode.obj: pyconfig.h mymalloc.h myproto.h node.h pgenheaders.h pydebug.h \
+ token.h
+
+metagrammar.obj: bitset.h pyconfig.h grammar.h metagrammar.h mymalloc.h \
+ myproto.h pgen.h pgenheaders.h pydebug.h
+
+myreadline.obj: pyconfig.h intrcheck.h mymalloc.h myproto.h
+
+node.obj: pyconfig.h mymalloc.h myproto.h node.h pgenheaders.h pydebug.h
+
+parser.obj: bitset.h pyconfig.h errcode.h grammar.h mymalloc.h \
+ myproto.h node.h parser.h pgenheaders.h pydebug.h token.h
+
+parsetok.obj: bitset.h pyconfig.h errcode.h grammar.h mymalloc.h myproto.h \
+ node.h parser.h parsetok.h pgenheaders.h pydebug.h token.h \
+ tokenizer.h
+
+pgen.obj: bitset.h pyconfig.h grammar.h metagrammar.h mymalloc.h \
+ myproto.h node.h pgen.h pgenheaders.h pydebug.h token.h
+
+pgenmain.obj: bitset.h pyconfig.h grammar.h mymalloc.h myproto.h node.h \
+ parsetok.h pgen.h pgenheaders.h pydebug.h
+
+printgrammar.obj: bitset.h pyconfig.h grammar.h mymalloc.h myproto.h \
+ pgenheaders.h pydebug.h
+
+tokenizer.obj: pyconfig.h errcode.h mymalloc.h myproto.h pgenheaders.h \
+ pydebug.h token.h tokenizer.h
+
+atof.obj: pyconfig.h
+
+bltinmodule.obj: abstract.h ceval.h classobject.h cobject.h compile.h \
+ complexobject.h pyconfig.h dictobject.h eval.h fileobject.h \
+ floatobject.h funcobject.h import.h intobject.h intrcheck.h \
+ listobject.h longobject.h methodobject.h modsupport.h \
+ moduleobject.h mymalloc.h mymath.h myproto.h node.h object.h \
+ objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+ceval.obj: abstract.h ceval.h classobject.h cobject.h compile.h \
+ complexobject.h pyconfig.h dictobject.h eval.h fileobject.h \
+ floatobject.h frameobject.h funcobject.h import.h intobject.h \
+ intrcheck.h listobject.h longobject.h methodobject.h modsupport.h \
+ moduleobject.h mymalloc.h myproto.h object.h objimpl.h opcode.h \
+ pydebug.h pyerrors.h pyfpe.h pystate.h python.h pythonrun.h \
+ rangeobject.h sliceobject.h stringobject.h sysmodule.h traceback.h \
+ tupleobject.h
+
+compile.obj: abstract.h ceval.h classobject.h cobject.h compile.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h graminit.h import.h intobject.h intrcheck.h \
+ listobject.h longobject.h methodobject.h modsupport.h \
+ moduleobject.h mymalloc.h myproto.h node.h object.h objimpl.h \
+ opcode.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h \
+ structmember.h sysmodule.h token.h traceback.h tupleobject.h
+
+errors.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+fmod.obj: pyconfig.h mymath.h
+
+frozen.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+frozenmain.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+getargs.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+getcompiler.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+getcopyright.obj: abstract.h ceval.h classobject.h cobject.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
+ myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h traceback.h tupleobject.h
+
+getplatform.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+getversion.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h patchlevel.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h traceback.h tupleobject.h
+
+graminit.obj: bitset.h pyconfig.h grammar.h mymalloc.h myproto.h \
+ pgenheaders.h pydebug.h
+
+hypot.obj: pyconfig.h mymath.h myproto.h
+
+import.obj: abstract.h ceval.h classobject.h cobject.h compile.h \
+ complexobject.h pyconfig.h dictobject.h errcode.h eval.h \
+ fileobject.h floatobject.h funcobject.h import.h importdl.h \
+ intobject.h intrcheck.h listobject.h longobject.h marshal.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ node.h object.h objimpl.h osdefs.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h token.h traceback.h tupleobject.h
+
+importdl.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h importdl.h intobject.h intrcheck.h listobject.h \
+ longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
+ myproto.h object.h objimpl.h osdefs.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h traceback.h tupleobject.h
+
+marshal.obj: abstract.h ceval.h classobject.h cobject.h compile.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longintrepr.h longobject.h marshal.h methodobject.h modsupport.h \
+ moduleobject.h mymalloc.h myproto.h object.h objimpl.h pydebug.h \
+ pyerrors.h pyfpe.h pystate.h python.h pythonrun.h rangeobject.h \
+ sliceobject.h stringobject.h sysmodule.h traceback.h tupleobject.h
+
+modsupport.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+mystrtoul.obj: pyconfig.h
+
+pyfpe.obj: pyconfig.h pyfpe.h
+
+pystate.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+pythonrun.obj: abstract.h bitset.h ceval.h classobject.h cobject.h \
+ compile.h complexobject.h pyconfig.h dictobject.h errcode.h eval.h \
+ fileobject.h floatobject.h funcobject.h grammar.h import.h \
+ intobject.h intrcheck.h listobject.h longobject.h marshal.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ node.h object.h objimpl.h parsetok.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h sysmodule.h traceback.h tupleobject.h
+
+sigcheck.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h pydebug.h pyerrors.h pyfpe.h pystate.h python.h \
+ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
+ traceback.h tupleobject.h
+
+strdup.obj: pyconfig.h mymalloc.h myproto.h
+
+strtod.obj: pyconfig.h
+
+structmember.obj: abstract.h ceval.h classobject.h cobject.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ funcobject.h import.h intobject.h intrcheck.h listobject.h \
+ longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
+ myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
+ pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
+ stringobject.h structmember.h sysmodule.h traceback.h \
+ tupleobject.h
+
+sysmodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
+ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \
+ import.h intobject.h intrcheck.h listobject.h longobject.h \
+ methodobject.h modsupport.h moduleobject.h mymalloc.h myproto.h \
+ object.h objimpl.h osdefs.h pydebug.h pyerrors.h pyfpe.h pystate.h \
+ python.h pythonrun.h rangeobject.h sliceobject.h stringobject.h \
+ sysmodule.h traceback.h tupleobject.h
+
+thread.obj: pyconfig.h thread.h
+
+traceback.obj: abstract.h ceval.h classobject.h cobject.h compile.h \
+ complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
+ frameobject.h funcobject.h import.h intobject.h intrcheck.h \
+ listobject.h longobject.h methodobject.h modsupport.h \
+ moduleobject.h mymalloc.h myproto.h object.h objimpl.h osdefs.h \
+ pydebug.h pyerrors.h pyfpe.h pystate.h python.h pythonrun.h \
+ rangeobject.h sliceobject.h stringobject.h structmember.h \
+ sysmodule.h traceback.h tupleobject.h
diff --git a/PC/os2vacpp/pyconfig.h b/PC/os2vacpp/pyconfig.h
new file mode 100644
index 0000000..97f9b80
--- /dev/null
+++ b/PC/os2vacpp/pyconfig.h
@@ -0,0 +1,213 @@
+#ifndef Py_CONFIG_H
+#define Py_CONFIG_H
+
+/**********************************************************************
+ * pyconfig.h. NOT Generated automatically by configure.
+ *
+ * This is a manually maintained version used for the IBM VisualAge
+ * C/C++ compiler on the OS/2 platform. It is a standard part of
+ * the Python distribution.
+ *
+ * FILESYSTEM DEFINES:
+ * The code specific to a particular way of naming files and
+ * directory paths should be wrapped around one of the following
+ * #defines:
+ *
+ * DOSFILESYS PCDOS-Style (for PCDOS, Windows and OS/2)
+ * MACFILESYS Macintosh-Style
+ * UNIXFILESYS Unix-Style
+ * AMIGAFILESYS AmigaDOS-Style
+ *
+ * Because of the different compilers and operating systems in
+ * use on the Intel platform, neither the compiler name nor
+ * the operating system name is sufficient.
+ *
+ * OS/2 DEFINES:
+ * The code specific to OS/2's Program API should be wrapped around
+ *
+ * __TOS_OS2__ Target Operating System, OS/2
+ *
+ * Any code specific to the compiler itself should be wrapped with
+ *
+ * __IBMC__ IBM C Compiler
+ * __IBMCPP__ IBM C++ Compiler
+ *
+ * Note that since the VisualAge C/C++ compiler is also available
+ * for the Windows platform, it may be necessary to use both a
+ * __TOS_OS2__ and a __IBMC__ to select a very specific environment.
+ *
+ **********************************************************************/
+
+/*
+ * Some systems require special declarations for data items imported
+ * or exported from dynamic link libraries. Note that the definition
+ * of DL_IMPORT covers both cases. Define USE_DL_IMPORT for the client
+ * of a DLL. Define USE_DL_EXPORT when making a DLL.
+ */
+
+#include <io.h>
+
+/* Configuration Options for Finding Modules */
+#define PREFIX ""
+#define EXEC_PREFIX ""
+
+/* Provide a default library so writers of extension modules
+ * won't have to explicitly specify it anymore
+ */
+#pragma library("Python24.lib")
+
+/***************************************************/
+/* 32-Bit IBM VisualAge C/C++ v3.0 for OS/2 */
+/* (Convert Compiler Flags into Useful Switches) */
+/***************************************************/
+#define PLATFORM "os2"
+#define COMPILER "[VisualAge C/C++]"
+#define PYOS_OS2 /* Define Indicator of Operating System */
+#define PYCC_VACPP /* Define Indicator of C Compiler */
+
+ /* Platform Filesystem */
+#define PYTHONPATH ".;.\\lib;.\\lib\\plat-win;.\\lib\\lib-tk"
+#define DOSFILESYS /* OS/2 Uses the DOS File Naming Conventions */
+/* #define IMPORT_8x3_NAMES (let's move up to long filenames) */
+
+ /* Platform CPU-Mode Dependencies */
+#define WORD_BIT 32 /* OS/2 is a 32-Bit Operating System */
+#define LONG_BIT 32
+#define SIZEOF_INT 4 /* Count of Bytes in an (int) */
+#define SIZEOF_LONG 4 /* Count of Bytes in a (long) */
+#define SIZEOF_VOID_P 4 /* Count of Bytes in a (void *) */
+/* #define HAVE_LONG_LONG 1 */ /* VAC++ does not support (long long) */
+/* #define SIZEOF_LONG_LONG 8 */ /* Count of Bytes in a (long long) */
+
+/* unicode definines */
+#define Py_USING_UNICODE
+#define PY_UNICODE_TYPE wchar_t
+#define Py_UNICODE_SIZE SIZEOF_SHORT
+
+/* dynamic loading */
+#define HAVE_DYNAMIC_LOADING 1
+
+/* Define if type char is unsigned and you are not using gcc. */
+#ifndef __CHAR_UNSIGNED__
+/* #undef __CHAR_UNSIGNED__ */
+#endif
+
+typedef int mode_t;
+typedef int uid_t;
+typedef int gid_t;
+typedef int pid_t;
+
+#if defined(__MULTI__) /* If Compiler /Gt+ Multithread Option Enabled, */
+ #define WITH_THREAD 1 /* Enable Threading Throughout Python */
+ #define OS2_THREADS 1 /* And Use the OS/2 Flavor of Threads */
+/* #define _REENTRANT 1 */ /* Use thread-safe errno, h_errno, and other fns */
+#endif
+
+ /* Compiler Runtime Library Capabilities */
+#include <ctype.h>
+#include <direct.h>
+/* #undef BAD_STATIC_FORWARD */ /* if compiler botches static fwd decls */
+
+#define STDC_HEADERS 1 /* VAC++ is an ANSI C Compiler */
+#define HAVE_HYPOT 1 /* hypot() */
+#define HAVE_PUTENV 1 /* putenv() */
+/* #define VA_LIST_IS_ARRAY 1 */ /* if va_list is an array of some kind */
+/* #define HAVE_CONIO_H 1 */ /* #include <conio.h> */
+#define HAVE_ERRNO_H 1 /* #include <errno.h> */
+#define HAVE_SYS_STAT_H 1 /* #include <sys/stat.h> */
+#define HAVE_SYS_TYPES_H 1 /* #include <sys/types.h> */
+
+ /* Variable-Arguments/Prototypes */
+#define HAVE_PROTOTYPES 1 /* VAC++ supports C Function Prototypes */
+#define HAVE_STDARG_PROTOTYPES 1 /* Our <stdarg.h> has prototypes */
+
+ /* String/Memory/Locale Operations */
+#define HAVE_MEMMOVE 1 /* memmove() */
+#define HAVE_STRERROR 1 /* strerror() */
+#define HAVE_SETLOCALE 1 /* setlocale() */
+#define MALLOC_ZERO_RETURNS_NULL 1 /* Our malloc(0) returns a NULL ptr */
+
+ /* Signal Handling */
+#define HAVE_SIGNAL_H 1 /* signal.h */
+#define RETSIGTYPE void /* Return type of handlers (int or void) */
+/* #undef WANT_SIGFPE_HANDLER */ /* Handle SIGFPE (see Include/pyfpe.h) */
+/* #define HAVE_ALARM 1 */ /* alarm() */
+/* #define HAVE_SIGINTERRUPT 1 */ /* siginterrupt() */
+/* #define HAVE_SIGRELSE 1 */ /* sigrelse() */
+#define DONT_HAVE_SIG_ALARM 1
+#define DONT_HAVE_SIG_PAUSE 1
+
+ /* Clock/Time Support */
+#define HAVE_FTIME 1 /* We have ftime() in <sys/timeb.h> */
+#define HAVE_CLOCK 1 /* clock() */
+#define HAVE_STRFTIME 1 /* strftime() */
+#define HAVE_MKTIME 1 /* mktime() */
+#define HAVE_TZNAME 1 /* No tm_zone but do have tzname[] */
+#define HAVE_TIMES 1 /* #include <sys/times.h> */
+#define HAVE_SYS_UTIME_H 1 /* #include <sys/utime.h> */
+/* #define HAVE_UTIME_H 1 */ /* #include <utime.h> */
+#define HAVE_SYS_TIME_H 1 /* #include <sys/time.h> */
+/* #define TM_IN_SYS_TIME 1 */ /* <sys/time.h> declares struct tm */
+#define HAVE_GETTIMEOFDAY 1 /* gettimeofday() */
+/* #define GETTIMEOFDAY_NO_TZ 1 */ /* gettimeofday() does not have 2nd arg */
+/* #define HAVE_TIMEGM 1 */ /* timegm() */
+#define TIME_WITH_SYS_TIME 1 /* Mix <sys/time.h> and <time.h> */
+#define SYS_SELECT_WITH_SYS_TIME 1 /* Mix <sys/select.h> and <sys/time.h> */
+/* #define HAVE_ALTZONE 1 */ /* if <time.h> defines altzone */
+
+ /* Network/Sockets Support */
+#define HAVE_SYS_SELECT_H 1 /* #include <sys/select.h> */
+#define BSD_SELECT 1 /* Use BSD versus OS/2 form of select() */
+#define HAVE_SELECT 1 /* select() */
+#define HAVE_GETPEERNAME 1 /* getpeername() */
+/* #undef HAVE_GETHOSTNAME_R 1 */ /* gethostname_r() */
+
+ /* File I/O */
+#define HAVE_DUP2 1 /* dup2() */
+#define HAVE_EXECV 1 /* execv() */
+#define HAVE_SETVBUF 1 /* setvbuf() */
+#define HAVE_GETCWD 1 /* getcwd() */
+#define HAVE_PIPE 1 /* pipe() [OS/2-specific code added] */
+#define HAVE_IO_H 1 /* #include <io.h> */
+#define HAVE_FCNTL_H 1 /* #include <fcntl.h> */
+#define HAVE_DIRECT_H 1 /* #include <direct.h> */
+/* #define HAVE_FLOCK 1 */ /* flock() */
+/* #define HAVE_TRUNCATE 1 */ /* truncate() */
+/* #define HAVE_FTRUNCATE 1 */ /* ftruncate() */
+/* #define HAVE_LSTAT 1 */ /* lstat() */
+/* #define HAVE_DIRENT_H 1 */ /* #include <dirent.h> */
+/* #define HAVE_OPENDIR 1 */ /* opendir() */
+
+ /* Process Operations */
+#define HAVE_PROCESS_H 1 /* #include <process.h> */
+#define HAVE_GETPID 1 /* getpid() */
+#define HAVE_SYSTEM 1 /* system() */
+#define HAVE_WAIT 1 /* wait() */
+#define HAVE_KILL 1 /* kill() [OS/2-specific code added] */
+#define HAVE_POPEN 1 /* popen() [OS/2-specific code added] */
+/* #define HAVE_GETPPID 1 */ /* getppid() */
+/* #define HAVE_WAITPID 1 */ /* waitpid() */
+/* #define HAVE_FORK 1 */ /* fork() */
+
+ /* User/Group ID Queries */
+/* #define HAVE_GETEGID 1 */
+/* #define HAVE_GETEUID 1 */
+/* #define HAVE_GETGID 1 */
+/* #define HAVE_GETUID 1 */
+
+ /* Unix-Specific */
+/* #define HAVE_SYS_UN_H 1 /* #include <sys/un.h> */
+/* #define HAVE_SYS_UTSNAME_H 1 */ /* #include <sys/utsname.h> */
+/* #define HAVE_SYS_WAIT_H 1 */ /* #include <sys/wait.h> */
+/* #define HAVE_UNISTD_H 1 */ /* #include <unistd.h> */
+/* #define HAVE_UNAME 1 */ /* uname () */
+
+/* Define if you want documentation strings in extension modules */
+#define WITH_DOC_STRINGS 1
+
+#ifdef USE_DL_EXPORT
+ #define DL_IMPORT(RTYPE) RTYPE _System
+#endif
+
+#endif /* !Py_CONFIG_H */
+
diff --git a/PC/os2vacpp/python.def b/PC/os2vacpp/python.def
new file mode 100644
index 0000000..76d56cd
--- /dev/null
+++ b/PC/os2vacpp/python.def
@@ -0,0 +1,484 @@
+LIBRARY PYTHON24 INITINSTANCE TERMINSTANCE
+DESCRIPTION 'Python 2.4 Core DLL'
+PROTMODE
+DATA MULTIPLE NONSHARED
+
+EXPORTS
+ ; Data
+ PyCFunction_Type
+ PyCapsule_Type
+ PyCObject_Type
+ PyClass_Type
+ PyCode_Type
+ PyComplex_Type
+ PyDict_Type
+ PyExc_ArithmeticError
+ PyExc_AssertionError
+ PyExc_AttributeError
+ PyExc_EOFError
+ PyExc_EnvironmentError
+ PyExc_Exception
+ PyExc_FloatingPointError
+ PyExc_IOError
+ PyExc_ImportError
+ PyExc_IndexError
+ PyExc_KeyError
+ PyExc_KeyboardInterrupt
+ PyExc_LookupError
+ PyExc_MemoryError
+ PyExc_MemoryErrorInst
+ PyExc_NameError
+ PyExc_OSError
+ PyExc_OverflowError
+ PyExc_RuntimeError
+ PyExc_StandardError
+ PyExc_SyntaxError
+ PyExc_SystemError
+ PyExc_SystemExit
+ PyExc_TypeError
+ PyExc_ValueError
+ PyExc_ZeroDivisionError
+ PyFile_Type
+ PyFloat_Type
+ PyFrame_Type
+ PyFunction_Type
+ PyImport_FrozenModules
+ PyImport_Inittab
+ PyInstance_Type
+ PyInt_Type
+ PyList_Type
+ PyLong_Type
+ PyMethod_Type
+ PyModule_Type
+ PyOS_InputHook
+ PyOS_ReadlineFunctionPointer
+ PyRange_Type
+ PySlice_Type
+ PyString_Type
+ PyTraceBack_Type
+ PyTuple_Type
+ PyType_Type
+ Py_DebugFlag
+ Py_FrozenFlag
+ Py_InteractiveFlag
+ Py_NoSiteFlag
+ Py_OptimizeFlag
+ Py_TabcheckFlag
+ Py_UseClassExceptionsFlag
+ Py_VerboseFlag
+ _PyImport_Filetab
+ _PyImport_Inittab
+ _PyParser_Grammar
+ _PyParser_TokenNames
+ _Py_EllipsisObject
+ _Py_NoneStruct
+ _Py_PackageContext
+ _Py_TrueStruct
+ _Py_ZeroStruct
+ _Py_abstract_hack
+ _Py_capsule_hack
+ _Py_cobject_hack
+ _Py_re_syntax
+ _Py_re_syntax_table
+
+ ; Code
+ PyArg_Parse
+ PyArg_ParseTuple
+ PyArg_ParseTupleAndKeywords
+ PyArg_VaParse
+ PyCFunction_Fini
+ PyCFunction_GetFlags
+ PyCFunction_GetFunction
+ PyCFunction_GetSelf
+ PyCFunction_New
+ PyCapsule_GetContext
+ PyCapsule_GetDestructor
+ PyCapsule_GetName
+ PyCapsule_GetPointer
+ PyCapsule_Import
+ PyCapsule_IsValid
+ PyCapsule_New
+ PyCapsule_SetContext
+ PyCapsule_SetDestructor
+ PyCapsule_SetName
+ PyCapsule_SetPointer
+ PyCObject_AsVoidPtr
+ PyCObject_FromVoidPtrAndDesc
+ PyCObject_FromVoidPtr
+ PyCObject_GetDesc
+ PyCObject_Import
+ PyCallable_Check
+ PyClass_IsSubclass
+ PyClass_New
+ PyCode_Addr2Line
+ PyCode_New
+ PyComplex_AsCComplex
+ PyComplex_FromCComplex
+ PyComplex_FromDoubles
+ PyComplex_ImagAsDouble
+ PyComplex_RealAsDouble
+ PyDict_Clear
+ PyDict_DelItem
+ PyDict_DelItemString
+ PyDict_GetItem
+ PyDict_GetItemString
+ PyDict_Items
+ PyDict_Keys
+ PyDict_New
+ PyDict_Next
+ PyDict_SetItem
+ PyDict_SetItemString
+ PyDict_Size
+ PyDict_Values
+ PyErr_BadArgument
+ PyErr_BadInternalCall
+ PyErr_CheckSignals
+ PyErr_Clear
+ PyErr_ExceptionMatches
+ PyErr_Fetch
+ PyErr_Format
+ PyErr_GivenExceptionMatches
+ PyErr_NewException
+ PyErr_NoMemory
+ PyErr_NormalizeException
+ PyErr_Occurred
+ PyErr_Print
+ PyErr_PrintEx
+ PyErr_Restore
+ PyErr_SetFromErrno
+ PyErr_SetFromErrnoWithFilename
+ PyErr_SetInterrupt
+ PyErr_SetNone
+ PyErr_SetObject
+ PyErr_SetString
+ PyEval_AcquireLock
+ PyEval_AcquireThread
+ PyEval_CallFunction
+ PyEval_CallMethod
+ PyEval_CallObject
+ PyEval_CallObjectWithKeywords
+ PyEval_EvalCode
+ PyEval_GetBuiltins
+ PyEval_GetFrame
+ PyEval_GetGlobals
+ PyEval_GetLocals
+ PyEval_GetRestricted
+ PyEval_InitThreads
+ PyEval_ReleaseLock
+ PyEval_ReleaseThread
+ PyEval_RestoreThread
+ PyEval_SaveThread
+ PyFile_AsFile
+ PyFile_FromFile
+ PyFile_FromString
+ PyFile_GetLine
+ PyFile_Name
+ PyFile_SetBufSize
+ PyFile_SoftSpace
+ PyFile_WriteObject
+ PyFile_WriteString
+ PyFloat_AsDouble
+ PyFloat_AsString
+ PyFloat_Fini
+ PyFloat_FromDouble
+ PyFrame_BlockPop
+ PyFrame_BlockSetup
+ PyFrame_FastToLocals
+ PyFrame_Fini
+ PyFrame_LocalsToFast
+ PyFrame_New
+ PyFunction_GetCode
+ PyFunction_GetDefaults
+ PyFunction_GetGlobals
+ PyFunction_New
+ PyFunction_SetDefaults
+ PyGrammar_AddAccelerators
+ PyGrammar_FindDFA
+ PyGrammar_LabelRepr
+ PyGrammar_RemoveAccelerators
+ PyImport_AddModule
+ PyImport_AppendInittab
+ PyImport_Cleanup
+ PyImport_ExecCodeModule
+ PyImport_ExecCodeModuleEx
+ PyImport_ExtendInittab
+ PyImport_GetMagicNumber
+ PyImport_GetModuleDict
+ PyImport_Import
+ PyImport_ImportFrozenModule
+ PyImport_ImportModule
+ PyImport_ImportModuleEx
+ PyImport_ReloadModule
+ PyInstance_DoBinOp
+ PyInstance_New
+ PyInt_AsLong
+ PyInt_Fini
+ PyInt_FromLong
+ PyInt_GetMax
+ PyInterpreterState_Clear
+ PyInterpreterState_Delete
+ PyInterpreterState_New
+ PyList_Append
+ PyList_AsTuple
+ PyList_GetItem
+ PyList_GetSlice
+ PyList_Insert
+ PyList_New
+ PyList_Reverse
+ PyList_SetItem
+ PyList_SetSlice
+ PyList_Size
+ PyList_Sort
+ PyLong_AsDouble
+ PyLong_AsLong
+; PyLong_AsLongLong
+ PyLong_AsUnsignedLong
+; PyLong_AsUnsignedLongLong
+ PyLong_AsVoidPtr
+ PyLong_FromDouble
+ PyLong_FromLong
+; PyLong_FromLongLong
+ PyLong_FromString
+ PyLong_FromUnsignedLong
+; PyLong_FromUnsignedLongLong
+ PyLong_FromVoidPtr
+ PyMapping_Check
+ PyMapping_GetItemString
+ PyMapping_HasKey
+ PyMapping_HasKeyString
+ PyMapping_Length
+ PyMapping_SetItemString
+ PyMarshal_Init
+ PyMarshal_ReadLongFromFile
+ PyMarshal_ReadObjectFromFile
+ PyMarshal_ReadObjectFromString
+ PyMarshal_WriteLongToFile
+ PyMarshal_WriteObjectToFile
+ PyMarshal_WriteObjectToString
+ PyMem_Free
+ PyMem_Malloc
+ PyMem_Realloc
+ PyMember_Get
+ PyMember_Set
+ PyMethod_Class
+ PyMethod_Fini
+ PyMethod_Function
+ PyMethod_New
+ PyMethod_Self
+ PyModule_GetDict
+ PyModule_GetName
+ PyModule_New
+ PyNode_AddChild
+ PyNode_Compile
+ PyNode_Free
+; PyNode_ListTree
+ PyNode_New
+ PyNumber_Absolute
+ PyNumber_Add
+ PyNumber_And
+ PyNumber_Check
+ PyNumber_Coerce
+ PyNumber_CoerceEx
+ PyNumber_Divide
+ PyNumber_Divmod
+ PyNumber_Float
+ PyNumber_Int
+ PyNumber_Invert
+ PyNumber_Long
+ PyNumber_Lshift
+ PyNumber_Multiply
+ PyNumber_Negative
+ PyNumber_Or
+ PyNumber_Positive
+ PyNumber_Power
+ PyNumber_Remainder
+ PyNumber_Rshift
+ PyNumber_Subtract
+ PyNumber_Xor
+ PyOS_AfterFork
+ PyOS_FiniInterrupts
+ PyOS_InitInterrupts
+ PyOS_InterruptOccurred
+ PyOS_Readline
+ PyOS_StdioReadline
+ PyOS_strtol
+ PyOS_strtoul
+ PyObject_CallFunction
+ PyObject_CallMethod
+ PyObject_CallObject
+ PyObject_Cmp
+ PyObject_Compare
+ PyObject_DelItem
+ PyObject_GetAttr
+ PyObject_GetAttrString
+ PyObject_GetItem
+ PyObject_HasAttr
+ PyObject_HasAttrString
+ PyObject_Hash
+ PyObject_IsTrue
+ PyObject_Length
+ PyObject_Not
+ PyObject_Print
+ PyObject_Repr
+ PyObject_SetAttr
+ PyObject_SetAttrString
+ PyObject_SetItem
+ PyObject_Str
+ PyObject_Type
+ PyParser_AddToken
+ PyParser_Delete
+ PyParser_New
+ PyParser_ParseFile
+ PyParser_ParseString
+ PyParser_SimpleParseFile
+ PyParser_SimpleParseString
+ PyRange_New
+ PyRun_AnyFile
+ PyRun_File
+ PyRun_InteractiveLoop
+ PyRun_InteractiveOne
+ PyRun_SimpleFile
+ PyRun_SimpleString
+ PyRun_String
+ PySequence_Check
+ PySequence_Concat
+ PySequence_Contains
+ PySequence_Count
+ PySequence_DelItem
+ PySequence_DelSlice
+ PySequence_GetItem
+ PySequence_GetSlice
+ PySequence_In
+ PySequence_Index
+ PySequence_Length
+ PySequence_List
+ PySequence_Repeat
+ PySequence_SetItem
+ PySequence_SetSlice
+ PySequence_Tuple
+ PySlice_GetIndices
+ PySlice_New
+ PyString_AsString
+ PyString_Concat
+ PyString_ConcatAndDel
+ PyString_Fini
+ PyString_Format
+ PyString_FromString
+ PyString_FromStringAndSize
+ PyString_InternFromString
+ PyString_InternInPlace
+ PyString_Size
+ PySys_GetFile
+ PySys_GetObject
+ PySys_SetArgv
+ PySys_SetObject
+ PySys_SetPath
+ PySys_WriteStderr
+ PySys_WriteStdout
+ PyThreadState_Clear
+ PyThreadState_Delete
+ PyThreadState_Get
+ PyThreadState_GetDict
+ PyThreadState_New
+ PyThreadState_Swap
+ PyThread_acquire_lock
+ PyThread_allocate_lock
+ PyThread_allocate_sema
+ PyThread_down_sema
+ PyThread_exit_thread
+ PyThread_free_lock
+ PyThread_free_sema
+ PyThread_get_thread_ident
+ PyThread_init_thread
+ PyThread_release_lock
+ PyThread_start_new_thread
+ PyThread_up_sema
+ PyToken_OneChar
+ PyToken_TwoChars
+ PyTokenizer_Free
+ PyTokenizer_FromFile
+ PyTokenizer_FromString
+ PyTokenizer_Get
+ PyTraceBack_Here
+ PyTraceBack_Print
+ PyTuple_Fini
+ PyTuple_GetItem
+ PyTuple_GetSlice
+ PyTuple_New
+ PyTuple_SetItem
+ PyTuple_Size
+ Py_AddPendingCall
+ Py_AtExit
+ Py_BuildValue
+ Py_CompileString
+ Py_EndInterpreter
+ Py_Exit
+ Py_FatalError
+ Py_FdIsInteractive
+ Py_Finalize
+ Py_FindMethod
+ Py_FindMethodInChain
+ Py_FlushLine
+ Py_Free
+ Py_GetArgcArgv
+ Py_GetBuildInfo
+ Py_GetCompiler
+ Py_GetCopyright
+ Py_GetExecPrefix
+ Py_GetPath
+ Py_GetPlatform
+ Py_GetPrefix
+ Py_GetProgramFullPath
+ Py_GetProgramName
+ Py_GetPythonHome
+ Py_GetVersion
+ Py_InitModule4
+ Py_Initialize
+ Py_IsInitialized
+ Py_Main
+ Py_MakePendingCalls
+ Py_Malloc
+ Py_NewInterpreter
+ Py_Realloc
+ Py_ReprEnter
+ Py_ReprLeave
+ Py_SetProgramName
+ Py_SetPythonHome
+ Py_VaBuildValue
+ _PyBuiltin_Fini_1
+ _PyBuiltin_Fini_2
+ _PyBuiltin_Init_1
+ _PyBuiltin_Init_2
+ _PyImport_FindExtension
+ _PyImport_Fini
+ _PyImport_FixupExtension
+ _PyImport_Init
+ _PyImport_LoadDynamicModule
+ _PyLong_New
+ _PyModule_Clear
+ _PyObject_New
+ _PyObject_NewVar
+ _PyString_Resize
+ _PySys_Init
+ _PyTuple_Resize
+ _Py_MD5Final
+ _Py_MD5Init
+ _Py_MD5Update
+; _Py_addbit
+ _Py_c_diff
+ _Py_c_neg
+ _Py_c_pow
+ _Py_c_prod
+ _Py_c_quot
+ _Py_c_sum
+; _Py_delbitset
+; _Py_mergebitset
+; _Py_meta_grammar
+; _Py_newbitset
+; _Py_samebitset
+ PyBuffer_Type
+ PyBuffer_FromObject
+ PyBuffer_FromMemory
+ PyBuffer_FromReadWriteMemory
+ PyBuffer_New
+
diff --git a/PC/os2vacpp/readme.txt b/PC/os2vacpp/readme.txt
new file mode 100644
index 0000000..dc58604
--- /dev/null
+++ b/PC/os2vacpp/readme.txt
@@ -0,0 +1,119 @@
+IBM VisualAge C/C++ for OS/2
+============================
+
+To build Python for OS/2, change into ./os2vacpp and issue an 'NMAKE'
+command. This will build a PYTHON15.DLL containing the set of Python
+modules listed in config.c and a small PYTHON.EXE to start the
+interpreter.
+
+By changing the C compiler flag /Gd- in the makefile to /Gd+, you can
+reduce the size of these by causing Python to dynamically link to the
+C runtime DLLs instead of including their bulk in your binaries.
+However, this means that any system on which you run Python must have
+the VAC++ compiler installed in order to have those DLLs available.
+
+During the build process you may see a couple of harmless warnings:
+
+ From the C Compiler, "No function prototype given for XXX", which
+ comes from the use of K&R parameters within Python for portability.
+
+ From the ILIB librarian, "Module Not Found (XXX)", which comes
+ from its attempt to perform the (-+) operation, which removes and
+ then adds a .OBJ to the library. The first time a build is done,
+ it obviously cannot remove what is not yet built.
+
+This build includes support for most Python functionality as well as
+TCP/IP sockets. It omits the Posix ability to 'fork' a process but
+supports threads using OS/2 native capabilities. I have tried to
+support everything possible but here are a few usage notes.
+
+
+-- os.popen() Usage Warnings
+
+With respect to my implementation of popen() under OS/2:
+
+ import os
+
+ fd = os.popen("pkzip.exe -@ junk.zip", 'wb')
+ fd.write("file1.txt\n")
+ fd.write("file2.txt\n")
+ fd.write("file3.txt\n")
+ fd.write("\x1a") # Should Not Be Necessary But Is
+ fd.close()
+
+There is a bug, either in the VAC++ compiler or OS/2 itself, where the
+simple closure of the write-side of a pipe -to- a process does not
+send an EOF to that process. I find I must explicitly write a
+control-Z (EOF) before closing the pipe. This is not a problem when
+using popen() in read mode.
+
+One other slight difference with my popen() is that I return None
+from the close(), instead of the Unix convention of the return code
+of the spawned program. I could find no easy way to do this under
+OS/2.
+
+
+-- BEGINLIBPATH/ENDLIBPATH
+
+With respect to environment variables, this OS/2 port supports the
+special-to-OS/2 magic names of 'BEGINLIBPATH' and 'ENDLIBPATH' to
+control where to load conventional DLLs from. Those names are
+intercepted and converted to calls on the OS/2 kernel APIs and
+are inherited by child processes, whether Python-based or not.
+
+A few new attributes have been added to the os module:
+
+ os.meminstalled # Count of Bytes of RAM Installed on Machine
+ os.memkernel # Count of Bytes of RAM Reserved (Non-Swappable)
+ os.memvirtual # Count of Bytes of Virtual RAM Possible
+ os.timeslice # Duration of Scheduler Timeslice, in Milliseconds
+ os.maxpathlen # Maximum Length of a Path Specification, in chars
+ os.maxnamelen # Maximum Length of a Single Dir/File Name, in chars
+ os.version # Version of OS/2 Being Run e.g. "4.00"
+ os.revision # Revision of OS/2 Being Run (usually zero)
+ os.bootdrive # Drive that System Booted From e.g. "C:"
+ # (useful to find the CONFIG.SYS used to boot with)
+
+
+-- Using Python as the Default OS/2 Batch Language
+
+Note that OS/2 supports the Unix technique of putting the special
+comment line at the time of scripts e.g. "#!/usr/bin/python" in
+a different syntactic form. To do this, put your script into a file
+with a .CMD extension and added 'extproc' to the top as follows:
+
+ extproc C:\Python\Python.exe -x
+ import os
+ print "Hello from Python"
+
+The '-x' option tells Python to skip the first line of the file
+while processing the rest as normal Python source.
+
+
+-- Suggested Environment Variable Setup
+
+With respect to the environment variables for Python, I use the
+following setup:
+
+ Set PYTHONHOME=E:\Tau\Projects\Python;D:\DLLs
+ Set PYTHONPATH=.;E:\Tau\Projects\Python\Lib; \
+ E:\Tau\Projects\Python\Lib\plat-win
+
+The EXEC_PREFIX (optional second pathspec on PYTHONHOME) is where
+you put any Python extension DLLs you may create/obtain. There
+are none provided with this release.
+
+
+-- Contact Info
+
+Jeff Rush is no longer supporting the VACPP port :-(
+
+I don't have the VACPP compiler, so can't reliably maintain this port.
+
+Anyone with VACPP who can contribute patches to keep this port buildable
+should upload them to the Python Patch Manager at Sourceforge and
+assign them to me for review/checkin.
+
+Andrew MacIntyre
+aimacintyre at users.sourceforge.net
+August 18, 2002.
diff --git a/PC/py.ico b/PC/py.ico
new file mode 100644
index 0000000..3357aef
--- /dev/null
+++ b/PC/py.ico
Binary files differ
diff --git a/PC/pyc.ico b/PC/pyc.ico
new file mode 100644
index 0000000..f7bd2b1
--- /dev/null
+++ b/PC/pyc.ico
Binary files differ
diff --git a/PC/pycon.ico b/PC/pycon.ico
new file mode 100644
index 0000000..1ab629e
--- /dev/null
+++ b/PC/pycon.ico
Binary files differ
diff --git a/PC/pyconfig.h b/PC/pyconfig.h
index 6a437ce..5fa6398 100644
--- a/PC/pyconfig.h
+++ b/PC/pyconfig.h
@@ -14,6 +14,7 @@ the following #defines
MS_WIN64 - Code specific to the MS Win64 API
MS_WIN32 - Code specific to the MS Win32 (and Win64) API (obsolete, this covers all supported APIs)
MS_WINDOWS - Code specific to Windows, but all versions.
+MS_WINCE - Code specific to Windows CE
Py_ENABLE_SHARED - Code if the Python core is built as a DLL.
Also note that neither "_M_IX86" or "_MSC_VER" should be used for
@@ -29,9 +30,13 @@ WIN32 is still required for the locale module.
*/
+#ifdef _WIN32_WCE
+#define MS_WINCE
+#endif
+
/* Deprecated USE_DL_EXPORT macro - please use Py_BUILD_CORE */
#ifdef USE_DL_EXPORT
-# define Py_BUILD_CORE
+# define Py_BUILD_CORE
#endif /* USE_DL_EXPORT */
/* Visual Studio 2005 introduces deprecation warnings for
@@ -48,6 +53,8 @@ WIN32 is still required for the locale module.
#define _CRT_NONSTDC_NO_DEPRECATE 1
#endif
+/* Windows CE does not have these */
+#ifndef MS_WINCE
#define HAVE_IO_H
#define HAVE_SYS_UTIME_H
#define HAVE_TEMPNAM
@@ -55,20 +62,25 @@ WIN32 is still required for the locale module.
#define HAVE_TMPNAM
#define HAVE_CLOCK
#define HAVE_STRERROR
+#endif
+#ifdef HAVE_IO_H
#include <io.h>
+#endif
#define HAVE_HYPOT
#define HAVE_STRFTIME
#define DONT_HAVE_SIG_ALARM
#define DONT_HAVE_SIG_PAUSE
-#define LONG_BIT 32
+#define LONG_BIT 32
#define WORD_BIT 32
+#define PREFIX ""
+#define EXEC_PREFIX ""
#define MS_WIN32 /* only support win32 and greater. */
#define MS_WINDOWS
#ifndef PYTHONPATH
-# define PYTHONPATH L".\\DLLs;.\\lib"
+# define PYTHONPATH ".\\DLLs;.\\lib;.\\lib\\plat-win;.\\lib\\lib-tk"
#endif
#define NT_THREADS
#define WITH_THREAD
@@ -76,6 +88,17 @@ WIN32 is still required for the locale module.
#define USE_SOCKET
#endif
+/* CE6 doesn't have strdup() but _strdup(). Assume the same for earlier versions. */
+#if defined(MS_WINCE)
+# include <stdlib.h>
+# define strdup _strdup
+#endif
+
+#ifdef MS_WINCE
+/* Windows CE does not support environment variables */
+#define getenv(v) (NULL)
+#define environ (NULL)
+#endif
/* Compiler specific defines */
@@ -90,9 +113,9 @@ WIN32 is still required for the locale module.
* literally in the string.
*/
#define _Py_PASTE_VERSION(SUFFIX) \
- ("[MSC v." _Py_STRINGIZE(_MSC_VER) " " SUFFIX "]")
+ ("[MSC v." _Py_STRINGIZE(_MSC_VER) " " SUFFIX "]")
/* e.g., this produces, after compile-time string catenation,
- * ("[MSC v.1200 32 bit (Intel)]")
+ * ("[MSC v.1200 32 bit (Intel)]")
*
* _Py_STRINGIZE(_MSC_VER) expands to
* _Py_STRINGIZE1((_MSC_VER)) expands to
@@ -111,7 +134,9 @@ WIN32 is still required for the locale module.
*and* on Win64. For the same reasons, in Python, MS_WIN32 is
defined on Win32 *and* Win64. Win32 only code must therefore be
guarded as follows:
- #if defined(MS_WIN32) && !defined(MS_WIN64)
+ #if defined(MS_WIN32) && !defined(MS_WIN64)
+ Some modules are disabled on Itanium processors, therefore we
+ have MS_WINI64 set for those targets, otherwise MS_WINX64
*/
#ifdef _WIN64
#define MS_WIN64
@@ -119,25 +144,35 @@ WIN32 is still required for the locale module.
/* set the COMPILER */
#ifdef MS_WIN64
-#if defined(_M_X64) || defined(_M_AMD64)
-#if defined(__INTEL_COMPILER)
+#if defined(_M_IA64)
+#define COMPILER _Py_PASTE_VERSION("64 bit (Itanium)")
+#define MS_WINI64
+#elif defined(_M_X64) || defined(_M_AMD64)
+#ifdef __INTEL_COMPILER
#define COMPILER ("[ICC v." _Py_STRINGIZE(__INTEL_COMPILER) " 64 bit (amd64) with MSC v." _Py_STRINGIZE(_MSC_VER) " CRT]")
#else
#define COMPILER _Py_PASTE_VERSION("64 bit (AMD64)")
#endif /* __INTEL_COMPILER */
-#define PYD_PLATFORM_TAG "win_amd64"
-#elif defined(_M_ARM64)
-#define COMPILER _Py_PASTE_VERSION("64 bit (ARM64)")
-#define PYD_PLATFORM_TAG "win_arm64"
+#define MS_WINX64
#else
#define COMPILER _Py_PASTE_VERSION("64 bit (Unknown)")
#endif
#endif /* MS_WIN64 */
/* set the version macros for the windows headers */
-/* Python 3.9+ requires Windows 8 or greater */
-#define Py_WINVER 0x0602 /* _WIN32_WINNT_WIN8 */
-#define Py_NTDDI NTDDI_WIN8
+#ifdef MS_WINX64
+/* 64 bit only runs on XP or greater */
+#define Py_WINVER _WIN32_WINNT_WINXP
+#define Py_NTDDI NTDDI_WINXP
+#else
+/* Python 2.6+ requires Windows 2000 or greater */
+#ifdef _WIN32_WINNT_WIN2K
+#define Py_WINVER _WIN32_WINNT_WIN2K
+#else
+#define Py_WINVER 0x0500
+#endif
+#define Py_NTDDI NTDDI_WIN2KSP4
+#endif
/* We only set these values when building Python - we don't want to force
these values on extensions, as that will affect the prototypes and
@@ -146,7 +181,7 @@ WIN32 is still required for the locale module.
structures etc so it can optionally use new Windows features if it
determines at runtime they are available.
*/
-#if defined(Py_BUILD_CORE) || defined(Py_BUILD_CORE_BUILTIN) || defined(Py_BUILD_CORE_MODULE)
+#if defined(Py_BUILD_CORE) || defined(Py_BUILD_CORE_MODULE)
#ifndef NTDDI_VERSION
#define NTDDI_VERSION Py_NTDDI
#endif
@@ -172,16 +207,12 @@ typedef _W64 int ssize_t;
#define HAVE_SSIZE_T 1
#if defined(MS_WIN32) && !defined(MS_WIN64)
-#if defined(_M_IX86)
-#if defined(__INTEL_COMPILER)
+#ifdef _M_IX86
+#ifdef __INTEL_COMPILER
#define COMPILER ("[ICC v." _Py_STRINGIZE(__INTEL_COMPILER) " 32 bit (Intel) with MSC v." _Py_STRINGIZE(_MSC_VER) " CRT]")
#else
#define COMPILER _Py_PASTE_VERSION("32 bit (Intel)")
#endif /* __INTEL_COMPILER */
-#define PYD_PLATFORM_TAG "win32"
-#elif defined(_M_ARM)
-#define COMPILER _Py_PASTE_VERSION("32 bit (ARM)")
-#define PYD_PLATFORM_TAG "win_arm32"
#else
#define COMPILER _Py_PASTE_VERSION("32 bit (Unknown)")
#endif
@@ -195,18 +226,42 @@ typedef int pid_t;
#define Py_IS_FINITE(X) _finite(X)
#define copysign _copysign
-/* Side by Side assemblies supported in VS 2005 and VS 2008 but not 2010*/
-#if _MSC_VER >= 1400 && _MSC_VER < 1600
-#define HAVE_SXS 1
-#endif
+#endif /* _MSC_VER */
/* define some ANSI types that are not defined in earlier Win headers */
-#if _MSC_VER >= 1200
+#if defined(_MSC_VER) && _MSC_VER >= 1200
/* This file only exists in VC 6.0 or higher */
#include <basetsd.h>
#endif
-#endif /* _MSC_VER */
+/* ------------------------------------------------------------------------*/
+/* The Borland compiler defines __BORLANDC__ */
+/* XXX These defines are likely incomplete, but should be easy to fix. */
+#ifdef __BORLANDC__
+#define COMPILER "[Borland]"
+
+#ifdef _WIN32
+/* tested with BCC 5.5 (__BORLANDC__ >= 0x0550)
+ */
+
+typedef int pid_t;
+/* BCC55 seems to understand __declspec(dllimport), it is used in its
+ own header files (winnt.h, ...) - so we can do nothing and get the default*/
+
+#undef HAVE_SYS_UTIME_H
+#define HAVE_UTIME_H
+#define HAVE_DIRENT_H
+
+/* rename a few functions for the Borland compiler */
+#include <io.h>
+#define _chsize chsize
+#define _setmode setmode
+
+#else /* !_WIN32 */
+#error "Only Win32 and later are supported"
+#endif /* !_WIN32 */
+
+#endif /* BORLANDC */
/* ------------------------------------------------------------------------*/
/* egcs/gnu-win32 defines __GNUC__ and _WIN32 */
@@ -244,22 +299,23 @@ typedef int pid_t;
/* End of compilers - finish up */
#ifndef NO_STDIO_H
-# include <stdio.h>
+# include <stdio.h>
#endif
/* 64 bit ints are usually spelt __int64 unless compiler has overridden */
+#define HAVE_LONG_LONG 1
#ifndef PY_LONG_LONG
-# define PY_LONG_LONG __int64
-# define PY_LLONG_MAX _I64_MAX
-# define PY_LLONG_MIN _I64_MIN
-# define PY_ULLONG_MAX _UI64_MAX
+# define PY_LONG_LONG __int64
+# define PY_LLONG_MAX _I64_MAX
+# define PY_LLONG_MIN _I64_MIN
+# define PY_ULLONG_MAX _UI64_MAX
#endif
/* For Windows the Python core is in a DLL by default. Test
Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
#if !defined(MS_NO_COREDLL) && !defined(Py_NO_ENABLE_SHARED)
-# define Py_ENABLE_SHARED 1 /* standard symbol for shared library */
-# define MS_COREDLL /* deprecated old symbol */
+# define Py_ENABLE_SHARED 1 /* standard symbol for shared library */
+# define MS_COREDLL /* deprecated old symbol */
#endif /* !MS_NO_COREDLL && ... */
/* All windows compilers that use this header support __declspec */
@@ -267,58 +323,55 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* For an MSVC DLL, we can nominate the .lib files used by extensions */
#ifdef MS_COREDLL
-# if !defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_BUILTIN)
- /* not building the core - must be an ext */
-# if defined(_MSC_VER)
- /* So MSVC users need not specify the .lib
- file in their Makefile (other compilers are
- generally taken care of by distutils.) */
-# if defined(_DEBUG)
-# pragma comment(lib,"python39_d.lib")
-# elif defined(Py_LIMITED_API)
-# pragma comment(lib,"python3.lib")
-# else
-# pragma comment(lib,"python39.lib")
-# endif /* _DEBUG */
-# endif /* _MSC_VER */
-# endif /* Py_BUILD_CORE */
+# ifndef Py_BUILD_CORE /* not building the core - must be an ext */
+# if defined(_MSC_VER)
+ /* So MSVC users need not specify the .lib file in
+ their Makefile (other compilers are generally
+ taken care of by distutils.) */
+# ifdef _DEBUG
+# pragma comment(lib,"python27_d.lib")
+# else
+# pragma comment(lib,"python27.lib")
+# endif /* _DEBUG */
+# endif /* _MSC_VER */
+# endif /* Py_BUILD_CORE */
#endif /* MS_COREDLL */
#if defined(MS_WIN64)
/* maintain "win32" sys.platform for backward compatibility of Python code,
the Win64 API should be close enough to the Win32 API to make this
preferable */
-# define PLATFORM "win32"
-# define SIZEOF_VOID_P 8
-# define SIZEOF_TIME_T 8
-# define SIZEOF_OFF_T 4
-# define SIZEOF_FPOS_T 8
-# define SIZEOF_HKEY 8
-# define SIZEOF_SIZE_T 8
-/* configure.ac defines HAVE_LARGEFILE_SUPPORT iff
- sizeof(off_t) > sizeof(long), and sizeof(long long) >= sizeof(off_t).
+# define PLATFORM "win32"
+# define SIZEOF_VOID_P 8
+# define SIZEOF_TIME_T 8
+# define SIZEOF_OFF_T 4
+# define SIZEOF_FPOS_T 8
+# define SIZEOF_HKEY 8
+# define SIZEOF_SIZE_T 8
+/* configure.ac defines HAVE_LARGEFILE_SUPPORT iff HAVE_LONG_LONG,
+ sizeof(off_t) > sizeof(long), and sizeof(PY_LONG_LONG) >= sizeof(off_t).
On Win64 the second condition is not true, but if fpos_t replaces off_t
then this is true. The uses of HAVE_LARGEFILE_SUPPORT imply that Win64
should define this. */
-# define HAVE_LARGEFILE_SUPPORT
+# define HAVE_LARGEFILE_SUPPORT
#elif defined(MS_WIN32)
-# define PLATFORM "win32"
-# define HAVE_LARGEFILE_SUPPORT
-# define SIZEOF_VOID_P 4
-# define SIZEOF_OFF_T 4
-# define SIZEOF_FPOS_T 8
-# define SIZEOF_HKEY 4
-# define SIZEOF_SIZE_T 4
- /* MS VS2005 changes time_t to a 64-bit type on all platforms */
-# if defined(_MSC_VER) && _MSC_VER >= 1400
-# define SIZEOF_TIME_T 8
-# else
-# define SIZEOF_TIME_T 4
-# endif
+# define PLATFORM "win32"
+# define HAVE_LARGEFILE_SUPPORT
+# define SIZEOF_VOID_P 4
+# define SIZEOF_OFF_T 4
+# define SIZEOF_FPOS_T 8
+# define SIZEOF_HKEY 4
+# define SIZEOF_SIZE_T 4
+ /* MS VS2005 changes time_t to a 64-bit type on all platforms */
+# if defined(_MSC_VER) && _MSC_VER >= 1400
+# define SIZEOF_TIME_T 8
+# else
+# define SIZEOF_TIME_T 4
+# endif
#endif
#ifdef _DEBUG
-# define Py_DEBUG
+# define Py_DEBUG
#endif
@@ -342,17 +395,46 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
#else
/* VC6, VS 2002 and eVC4 don't support the C99 LL suffix for 64-bit integer literals */
#define Py_LL(x) x##I64
-#endif /* _MSC_VER > 1300 */
+#endif /* _MSC_VER > 1200 */
#endif /* _MSC_VER */
#endif
/* define signed and unsigned exact-width 32-bit and 64-bit types, used in the
- implementation of Python integers. */
-#define PY_UINT32_T uint32_t
-#define PY_UINT64_T uint64_t
-#define PY_INT32_T int32_t
-#define PY_INT64_T int64_t
+ implementation of Python long integers. */
+#ifndef PY_UINT32_T
+#if SIZEOF_INT == 4
+#define HAVE_UINT32_T 1
+#define PY_UINT32_T unsigned int
+#elif SIZEOF_LONG == 4
+#define HAVE_UINT32_T 1
+#define PY_UINT32_T unsigned long
+#endif
+#endif
+
+#ifndef PY_UINT64_T
+#if SIZEOF_LONG_LONG == 8
+#define HAVE_UINT64_T 1
+#define PY_UINT64_T unsigned PY_LONG_LONG
+#endif
+#endif
+
+#ifndef PY_INT32_T
+#if SIZEOF_INT == 4
+#define HAVE_INT32_T 1
+#define PY_INT32_T int
+#elif SIZEOF_LONG == 4
+#define HAVE_INT32_T 1
+#define PY_INT32_T long
+#endif
+#endif
+
+#ifndef PY_INT64_T
+#if SIZEOF_LONG_LONG == 8
+#define HAVE_INT64_T 1
+#define PY_INT64_T PY_LONG_LONG
+#endif
+#endif
/* Fairly standard from here! */
@@ -381,14 +463,14 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* #define const */
/* Define to 1 if you have the <conio.h> header file. */
+#ifndef MS_WINCE
#define HAVE_CONIO_H 1
+#endif
/* Define to 1 if you have the <direct.h> header file. */
+#ifndef MS_WINCE
#define HAVE_DIRECT_H 1
-
-/* Define to 1 if you have the declaration of `tzname', and to 0 if you don't.
- */
-#define HAVE_DECL_TZNAME 1
+#endif
/* Define if you have dirent.h. */
/* #define DIRENT 1 */
@@ -461,7 +543,9 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* #define HAVE_ALTZONE */
/* Define if you have the putenv function. */
+#ifndef MS_WINCE
#define HAVE_PUTENV
+#endif
/* Define if your compiler supports function prototypes */
#define HAVE_PROTOTYPES
@@ -479,6 +563,13 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* Define if you want to use the GNU readline library */
/* #define WITH_READLINE 1 */
+/* Define if you want to have a Unicode type. */
+#define Py_USING_UNICODE
+
+/* Define as the size of the unicode type. */
+/* This is enough for unicodeobject.h to do the "right thing" on Windows. */
+#define Py_UNICODE_SIZE 2
+
/* Use Python's own small-block memory-allocator. */
#define WITH_PYMALLOC 1
@@ -489,7 +580,9 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
#define HAVE_DYNAMIC_LOADING
/* Define if you have ftime. */
+#ifndef MS_WINCE
#define HAVE_FTIME
+#endif
/* Define if you have getpeername. */
#define HAVE_GETPEERNAME
@@ -498,7 +591,9 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* #undef HAVE_GETPGRP */
/* Define if you have getpid. */
+#ifndef MS_WINCE
#define HAVE_GETPID
+#endif
/* Define if you have gettimeofday. */
/* #undef HAVE_GETTIMEOFDAY */
@@ -518,6 +613,9 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* Define if you have readlink. */
/* #undef HAVE_READLINK */
+/* Define if you have select. */
+/* #undef HAVE_SELECT */
+
/* Define if you have setpgid. */
/* #undef HAVE_SETPGID */
@@ -551,16 +649,10 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* Define if you have waitpid. */
/* #undef HAVE_WAITPID */
-/* Define to 1 if you have the `wcsftime' function. */
-#if defined(_MSC_VER) && _MSC_VER >= 1310
-#define HAVE_WCSFTIME 1
-#endif
-
/* Define to 1 if you have the `wcscoll' function. */
+#ifndef MS_WINCE
#define HAVE_WCSCOLL 1
-
-/* Define to 1 if you have the `wcsxfrm' function. */
-#define HAVE_WCSXFRM 1
+#endif
/* Define if the zlib library has inflateCopy */
#define HAVE_ZLIB_COPY 1
@@ -569,16 +661,24 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* #undef HAVE_DLFCN_H */
/* Define to 1 if you have the <errno.h> header file. */
+#ifndef MS_WINCE
#define HAVE_ERRNO_H 1
+#endif
/* Define if you have the <fcntl.h> header file. */
+#ifndef MS_WINCE
#define HAVE_FCNTL_H 1
+#endif
/* Define to 1 if you have the <process.h> header file. */
+#ifndef MS_WINCE
#define HAVE_PROCESS_H 1
+#endif
/* Define to 1 if you have the <signal.h> header file. */
+#ifndef MS_WINCE
#define HAVE_SIGNAL_H 1
+#endif
/* Define if you have the <stdarg.h> prototypes. */
#define HAVE_STDARG_PROTOTYPES
@@ -596,7 +696,9 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* #define HAVE_SYS_SELECT_H 1 */
/* Define to 1 if you have the <sys/stat.h> header file. */
+#ifndef MS_WINCE
#define HAVE_SYS_STAT_H 1
+#endif
/* Define if you have the <sys/time.h> header file. */
/* #define HAVE_SYS_TIME_H 1 */
@@ -605,7 +707,9 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* #define HAVE_SYS_TIMES_H 1 */
/* Define to 1 if you have the <sys/types.h> header file. */
+#ifndef MS_WINCE
#define HAVE_SYS_TYPES_H 1
+#endif
/* Define if you have the <sys/un.h> header file. */
/* #define HAVE_SYS_UN_H 1 */
@@ -616,6 +720,9 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* Define if you have the <sys/utsname.h> header file. */
/* #define HAVE_SYS_UTSNAME_H 1 */
+/* Define if you have the <thread.h> header file. */
+/* #undef HAVE_THREAD_H */
+
/* Define if you have the <unistd.h> header file. */
/* #define HAVE_UNISTD_H 1 */
@@ -625,15 +732,6 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* Define if the compiler provides a wchar.h header file. */
#define HAVE_WCHAR_H 1
-/* The size of `wchar_t', as computed by sizeof. */
-#define SIZEOF_WCHAR_T 2
-
-/* The size of `_Bool', as computed by sizeof. */
-#define SIZEOF__BOOL 1
-
-/* The size of `pid_t', as computed by sizeof. */
-#define SIZEOF_PID_T SIZEOF_INT
-
/* Define if you have the dl library (-ldl). */
/* #undef HAVE_LIBDL */
@@ -669,19 +767,4 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
least significant byte first */
#define DOUBLE_IS_LITTLE_ENDIAN_IEEE754 1
-/* Define to 1 if you have the `erf' function. */
-#define HAVE_ERF 1
-
-/* Define to 1 if you have the `erfc' function. */
-#define HAVE_ERFC 1
-
-/* Define if you have the 'inet_pton' function. */
-#define HAVE_INET_PTON 1
-
-/* framework name */
-#define _PYTHONFRAMEWORK ""
-
-/* Define if libssl has X509_VERIFY_PARAM_set1_host and related function */
-#define HAVE_X509_VERIFY_PARAM_SET1_HOST 1
-
#endif /* !Py_CONFIG_H */
diff --git a/PC/pylauncher.rc b/PC/pylauncher.rc
deleted file mode 100644
index 92987af..0000000
--- a/PC/pylauncher.rc
+++ /dev/null
@@ -1,60 +0,0 @@
-#include <windows.h>
-
-#include "python_ver_rc.h"
-
-// Include the manifest file that indicates we support all
-// current versions of Windows.
-#include <winuser.h>
-1 RT_MANIFEST "python.manifest"
-
-#if defined(PY_ICON)
-1 ICON DISCARDABLE "icons\python.ico"
-#elif defined(PYW_ICON)
-1 ICON DISCARDABLE "icons\pythonw.ico"
-#else
-1 ICON DISCARDABLE "icons\launcher.ico"
-2 ICON DISCARDABLE "icons\py.ico"
-3 ICON DISCARDABLE "icons\pyc.ico"
-4 ICON DISCARDABLE "icons\pyd.ico"
-5 ICON DISCARDABLE "icons\python.ico"
-6 ICON DISCARDABLE "icons\pythonw.ico"
-7 ICON DISCARDABLE "icons\setup.ico"
-#endif
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Version
-//
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION PYVERSION64
- PRODUCTVERSION PYVERSION64
- FILEFLAGSMASK 0x3fL
-#ifdef _DEBUG
- FILEFLAGS VS_FF_DEBUG
-#else
- FILEFLAGS 0x0L
-#endif
- FILEOS VOS__WINDOWS32
- FILETYPE VFT_APP
- FILESUBTYPE 0x0L
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "000004b0"
- BEGIN
- VALUE "CompanyName", PYTHON_COMPANY "\0"
- VALUE "FileDescription", "Python\0"
- VALUE "FileVersion", PYTHON_VERSION
- VALUE "InternalName", "Python Launcher\0"
- VALUE "LegalCopyright", PYTHON_COPYRIGHT "\0"
- VALUE "OriginalFilename", "py" PYTHON_DEBUG_EXT ".exe\0"
- VALUE "ProductName", "Python\0"
- VALUE "ProductVersion", PYTHON_VERSION
- END
- END
- BLOCK "VarFileInfo"
- BEGIN
- VALUE "Translation", 0x0, 1200
- END
-END \ No newline at end of file
diff --git a/PC/pyshellext.cpp b/PC/pyshellext.cpp
deleted file mode 100644
index 0198802..0000000
--- a/PC/pyshellext.cpp
+++ /dev/null
@@ -1,610 +0,0 @@
-// Support back to Vista
-#define _WIN32_WINNT _WIN32_WINNT_VISTA
-#include <sdkddkver.h>
-
-// Use WRL to define a classic COM class
-#define __WRL_CLASSIC_COM__
-#include <wrl.h>
-
-#include <windows.h>
-#include <shlobj.h>
-#include <shlwapi.h>
-#include <olectl.h>
-#include <strsafe.h>
-
-#include "pyshellext_h.h"
-
-#define DDWM_UPDATEWINDOW (WM_USER+3)
-
-static HINSTANCE hModule;
-static CLIPFORMAT cfDropDescription;
-static CLIPFORMAT cfDragWindow;
-
-static const LPCWSTR CLASS_SUBKEY = L"Software\\Classes\\CLSID\\{BEA218D2-6950-497B-9434-61683EC065FE}";
-static const LPCWSTR DRAG_MESSAGE = L"Open with %1";
-
-using namespace Microsoft::WRL;
-
-HRESULT FilenameListCchLengthA(LPCSTR pszSource, size_t cchMax, size_t *pcchLength, size_t *pcchCount) {
- HRESULT hr = S_OK;
- size_t count = 0;
- size_t length = 0;
-
- while (pszSource && pszSource[0]) {
- size_t oneLength;
- hr = StringCchLengthA(pszSource, cchMax - length, &oneLength);
- if (FAILED(hr)) {
- return hr;
- }
- count += 1;
- length += oneLength + (strchr(pszSource, ' ') ? 3 : 1);
- pszSource = &pszSource[oneLength + 1];
- }
-
- *pcchCount = count;
- *pcchLength = length;
- return hr;
-}
-
-HRESULT FilenameListCchLengthW(LPCWSTR pszSource, size_t cchMax, size_t *pcchLength, size_t *pcchCount) {
- HRESULT hr = S_OK;
- size_t count = 0;
- size_t length = 0;
-
- while (pszSource && pszSource[0]) {
- size_t oneLength;
- hr = StringCchLengthW(pszSource, cchMax - length, &oneLength);
- if (FAILED(hr)) {
- return hr;
- }
- count += 1;
- length += oneLength + (wcschr(pszSource, ' ') ? 3 : 1);
- pszSource = &pszSource[oneLength + 1];
- }
-
- *pcchCount = count;
- *pcchLength = length;
- return hr;
-}
-
-HRESULT FilenameListCchCopyA(STRSAFE_LPSTR pszDest, size_t cchDest, LPCSTR pszSource, LPCSTR pszSeparator) {
- HRESULT hr = S_OK;
- size_t count = 0;
- size_t length = 0;
-
- while (pszSource[0]) {
- STRSAFE_LPSTR newDest;
-
- hr = StringCchCopyExA(pszDest, cchDest, pszSource, &newDest, &cchDest, 0);
- if (FAILED(hr)) {
- return hr;
- }
- pszSource += (newDest - pszDest) + 1;
- pszDest = PathQuoteSpacesA(pszDest) ? newDest + 2 : newDest;
-
- if (pszSource[0]) {
- hr = StringCchCopyExA(pszDest, cchDest, pszSeparator, &newDest, &cchDest, 0);
- if (FAILED(hr)) {
- return hr;
- }
- pszDest = newDest;
- }
- }
-
- return hr;
-}
-
-HRESULT FilenameListCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, LPCWSTR pszSource, LPCWSTR pszSeparator) {
- HRESULT hr = S_OK;
- size_t count = 0;
- size_t length = 0;
-
- while (pszSource[0]) {
- STRSAFE_LPWSTR newDest;
-
- hr = StringCchCopyExW(pszDest, cchDest, pszSource, &newDest, &cchDest, 0);
- if (FAILED(hr)) {
- return hr;
- }
- pszSource += (newDest - pszDest) + 1;
- pszDest = PathQuoteSpacesW(pszDest) ? newDest + 2 : newDest;
-
- if (pszSource[0]) {
- hr = StringCchCopyExW(pszDest, cchDest, pszSeparator, &newDest, &cchDest, 0);
- if (FAILED(hr)) {
- return hr;
- }
- pszDest = newDest;
- }
- }
-
- return hr;
-}
-
-
-class PyShellExt : public RuntimeClass<
- RuntimeClassFlags<ClassicCom>,
- IDropTarget,
- IPersistFile
->
-{
- LPOLESTR target, target_dir;
- DWORD target_mode;
-
- IDataObject *data_obj;
-
-public:
- PyShellExt() : target(NULL), target_dir(NULL), target_mode(0), data_obj(NULL) {
- OutputDebugString(L"PyShellExt::PyShellExt");
- }
-
- ~PyShellExt() {
- if (target) {
- CoTaskMemFree(target);
- }
- if (target_dir) {
- CoTaskMemFree(target_dir);
- }
- if (data_obj) {
- data_obj->Release();
- }
- }
-
-private:
- HRESULT UpdateDropDescription(IDataObject *pDataObj) {
- STGMEDIUM medium;
- FORMATETC fmt = {
- cfDropDescription,
- NULL,
- DVASPECT_CONTENT,
- -1,
- TYMED_HGLOBAL
- };
-
- auto hr = pDataObj->GetData(&fmt, &medium);
- if (FAILED(hr)) {
- OutputDebugString(L"PyShellExt::UpdateDropDescription - failed to get DROPDESCRIPTION format");
- return hr;
- }
- if (!medium.hGlobal) {
- OutputDebugString(L"PyShellExt::UpdateDropDescription - DROPDESCRIPTION format had NULL hGlobal");
- ReleaseStgMedium(&medium);
- return E_FAIL;
- }
- auto dd = (DROPDESCRIPTION*)GlobalLock(medium.hGlobal);
- if (!dd) {
- OutputDebugString(L"PyShellExt::UpdateDropDescription - failed to lock DROPDESCRIPTION hGlobal");
- ReleaseStgMedium(&medium);
- return E_FAIL;
- }
- StringCchCopy(dd->szMessage, sizeof(dd->szMessage) / sizeof(dd->szMessage[0]), DRAG_MESSAGE);
- StringCchCopy(dd->szInsert, sizeof(dd->szInsert) / sizeof(dd->szInsert[0]), PathFindFileNameW(target));
- dd->type = DROPIMAGE_MOVE;
-
- GlobalUnlock(medium.hGlobal);
- ReleaseStgMedium(&medium);
-
- return S_OK;
- }
-
- HRESULT GetDragWindow(IDataObject *pDataObj, HWND *phWnd) {
- HRESULT hr;
- HWND *pMem;
- STGMEDIUM medium;
- FORMATETC fmt = {
- cfDragWindow,
- NULL,
- DVASPECT_CONTENT,
- -1,
- TYMED_HGLOBAL
- };
-
- hr = pDataObj->GetData(&fmt, &medium);
- if (FAILED(hr)) {
- OutputDebugString(L"PyShellExt::GetDragWindow - failed to get DragWindow format");
- return hr;
- }
- if (!medium.hGlobal) {
- OutputDebugString(L"PyShellExt::GetDragWindow - DragWindow format had NULL hGlobal");
- ReleaseStgMedium(&medium);
- return E_FAIL;
- }
-
- pMem = (HWND*)GlobalLock(medium.hGlobal);
- if (!pMem) {
- OutputDebugString(L"PyShellExt::GetDragWindow - failed to lock DragWindow hGlobal");
- ReleaseStgMedium(&medium);
- return E_FAIL;
- }
-
- *phWnd = *pMem;
-
- GlobalUnlock(medium.hGlobal);
- ReleaseStgMedium(&medium);
-
- return S_OK;
- }
-
- HRESULT GetArguments(IDataObject *pDataObj, LPCWSTR *pArguments) {
- HRESULT hr;
- DROPFILES *pdropfiles;
-
- STGMEDIUM medium;
- FORMATETC fmt = {
- CF_HDROP,
- NULL,
- DVASPECT_CONTENT,
- -1,
- TYMED_HGLOBAL
- };
-
- hr = pDataObj->GetData(&fmt, &medium);
- if (FAILED(hr)) {
- OutputDebugString(L"PyShellExt::GetArguments - failed to get CF_HDROP format");
- return hr;
- }
- if (!medium.hGlobal) {
- OutputDebugString(L"PyShellExt::GetArguments - CF_HDROP format had NULL hGlobal");
- ReleaseStgMedium(&medium);
- return E_FAIL;
- }
-
- pdropfiles = (DROPFILES*)GlobalLock(medium.hGlobal);
- if (!pdropfiles) {
- OutputDebugString(L"PyShellExt::GetArguments - failed to lock CF_HDROP hGlobal");
- ReleaseStgMedium(&medium);
- return E_FAIL;
- }
-
- if (pdropfiles->fWide) {
- LPCWSTR files = (LPCWSTR)((char*)pdropfiles + pdropfiles->pFiles);
- size_t len, count;
- hr = FilenameListCchLengthW(files, 32767, &len, &count);
- if (SUCCEEDED(hr)) {
- LPWSTR args = (LPWSTR)CoTaskMemAlloc(sizeof(WCHAR) * (len + 1));
- if (args) {
- hr = FilenameListCchCopyW(args, 32767, files, L" ");
- if (SUCCEEDED(hr)) {
- *pArguments = args;
- } else {
- CoTaskMemFree(args);
- }
- } else {
- hr = E_OUTOFMEMORY;
- }
- }
- } else {
- LPCSTR files = (LPCSTR)((char*)pdropfiles + pdropfiles->pFiles);
- size_t len, count;
- hr = FilenameListCchLengthA(files, 32767, &len, &count);
- if (SUCCEEDED(hr)) {
- LPSTR temp = (LPSTR)CoTaskMemAlloc(sizeof(CHAR) * (len + 1));
- if (temp) {
- hr = FilenameListCchCopyA(temp, 32767, files, " ");
- if (SUCCEEDED(hr)) {
- int wlen = MultiByteToWideChar(CP_ACP, 0, temp, (int)len, NULL, 0);
- if (wlen) {
- LPWSTR args = (LPWSTR)CoTaskMemAlloc(sizeof(WCHAR) * (wlen + 1));
- if (MultiByteToWideChar(CP_ACP, 0, temp, (int)len, args, wlen + 1)) {
- *pArguments = args;
- } else {
- OutputDebugString(L"PyShellExt::GetArguments - failed to convert multi-byte to wide-char path");
- CoTaskMemFree(args);
- hr = E_FAIL;
- }
- } else {
- OutputDebugString(L"PyShellExt::GetArguments - failed to get length of wide-char path");
- hr = E_FAIL;
- }
- }
- CoTaskMemFree(temp);
- } else {
- hr = E_OUTOFMEMORY;
- }
- }
- }
-
- GlobalUnlock(medium.hGlobal);
- ReleaseStgMedium(&medium);
-
- return hr;
- }
-
- HRESULT NotifyDragWindow(HWND hwnd) {
- LRESULT res;
-
- if (!hwnd) {
- return S_FALSE;
- }
-
- res = SendMessage(hwnd, DDWM_UPDATEWINDOW, 0, NULL);
-
- if (res) {
- OutputDebugString(L"PyShellExt::NotifyDragWindow - failed to post DDWM_UPDATEWINDOW");
- return E_FAIL;
- }
-
- return S_OK;
- }
-
-public:
- // IDropTarget implementation
-
- STDMETHODIMP DragEnter(IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect) {
- HWND hwnd;
-
- OutputDebugString(L"PyShellExt::DragEnter");
-
- pDataObj->AddRef();
- data_obj = pDataObj;
-
- *pdwEffect = DROPEFFECT_MOVE;
-
- if (FAILED(UpdateDropDescription(data_obj))) {
- OutputDebugString(L"PyShellExt::DragEnter - failed to update drop description");
- }
- if (FAILED(GetDragWindow(data_obj, &hwnd))) {
- OutputDebugString(L"PyShellExt::DragEnter - failed to get drag window");
- }
- if (FAILED(NotifyDragWindow(hwnd))) {
- OutputDebugString(L"PyShellExt::DragEnter - failed to notify drag window");
- }
-
- return S_OK;
- }
-
- STDMETHODIMP DragLeave() {
- return S_OK;
- }
-
- STDMETHODIMP DragOver(DWORD grfKeyState, POINTL pt, DWORD *pdwEffect) {
- return S_OK;
- }
-
- STDMETHODIMP Drop(IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect) {
- LPCWSTR args;
-
- OutputDebugString(L"PyShellExt::Drop");
- *pdwEffect = DROPEFFECT_NONE;
-
- if (pDataObj != data_obj) {
- OutputDebugString(L"PyShellExt::Drop - unexpected data object");
- return E_FAIL;
- }
-
- data_obj->Release();
- data_obj = NULL;
-
- if (SUCCEEDED(GetArguments(pDataObj, &args))) {
- OutputDebugString(args);
- ShellExecute(NULL, NULL, target, args, target_dir, SW_NORMAL);
-
- CoTaskMemFree((LPVOID)args);
- } else {
- OutputDebugString(L"PyShellExt::Drop - failed to get launch arguments");
- }
-
- return S_OK;
- }
-
- // IPersistFile implementation
-
- STDMETHODIMP GetCurFile(LPOLESTR *ppszFileName) {
- HRESULT hr;
- size_t len;
-
- if (!ppszFileName) {
- return E_POINTER;
- }
-
- hr = StringCchLength(target, STRSAFE_MAX_CCH - 1, &len);
- if (FAILED(hr)) {
- return E_FAIL;
- }
-
- *ppszFileName = (LPOLESTR)CoTaskMemAlloc(sizeof(WCHAR) * (len + 1));
- if (!*ppszFileName) {
- return E_OUTOFMEMORY;
- }
-
- hr = StringCchCopy(*ppszFileName, len + 1, target);
- if (FAILED(hr)) {
- CoTaskMemFree(*ppszFileName);
- *ppszFileName = NULL;
- return E_FAIL;
- }
-
- return S_OK;
- }
-
- STDMETHODIMP IsDirty() {
- return S_FALSE;
- }
-
- STDMETHODIMP Load(LPCOLESTR pszFileName, DWORD dwMode) {
- HRESULT hr;
- size_t len;
-
- OutputDebugString(L"PyShellExt::Load");
- OutputDebugString(pszFileName);
-
- hr = StringCchLength(pszFileName, STRSAFE_MAX_CCH - 1, &len);
- if (FAILED(hr)) {
- OutputDebugString(L"PyShellExt::Load - failed to get string length");
- return hr;
- }
-
- if (target) {
- CoTaskMemFree(target);
- }
- if (target_dir) {
- CoTaskMemFree(target_dir);
- }
-
- target = (LPOLESTR)CoTaskMemAlloc(sizeof(WCHAR) * (len + 1));
- if (!target) {
- OutputDebugString(L"PyShellExt::Load - E_OUTOFMEMORY");
- return E_OUTOFMEMORY;
- }
- target_dir = (LPOLESTR)CoTaskMemAlloc(sizeof(WCHAR) * (len + 1));
- if (!target_dir) {
- OutputDebugString(L"PyShellExt::Load - E_OUTOFMEMORY");
- return E_OUTOFMEMORY;
- }
-
- hr = StringCchCopy(target, len + 1, pszFileName);
- if (FAILED(hr)) {
- OutputDebugString(L"PyShellExt::Load - failed to copy string");
- return hr;
- }
-
- hr = StringCchCopy(target_dir, len + 1, pszFileName);
- if (FAILED(hr)) {
- OutputDebugString(L"PyShellExt::Load - failed to copy string");
- return hr;
- }
- if (!PathRemoveFileSpecW(target_dir)) {
- OutputDebugStringW(L"PyShellExt::Load - failed to remove filespec from target");
- return E_FAIL;
- }
-
- OutputDebugString(target);
- target_mode = dwMode;
- OutputDebugString(L"PyShellExt::Load - S_OK");
- return S_OK;
- }
-
- STDMETHODIMP Save(LPCOLESTR pszFileName, BOOL fRemember) {
- return E_NOTIMPL;
- }
-
- STDMETHODIMP SaveCompleted(LPCOLESTR pszFileName) {
- return E_NOTIMPL;
- }
-
- STDMETHODIMP GetClassID(CLSID *pClassID) {
- *pClassID = CLSID_PyShellExt;
- return S_OK;
- }
-};
-
-CoCreatableClass(PyShellExt);
-
-STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, _COM_Outptr_ void** ppv) {
- return Module<InProc>::GetModule().GetClassObject(rclsid, riid, ppv);
-}
-
-STDAPI DllCanUnloadNow() {
- return Module<InProc>::GetModule().Terminate() ? S_OK : S_FALSE;
-}
-
-STDAPI DllRegisterServer() {
- LONG res;
- SECURITY_ATTRIBUTES secattr = { sizeof(SECURITY_ATTRIBUTES), NULL, FALSE };
- LPSECURITY_ATTRIBUTES psecattr = NULL;
- HKEY key, ipsKey;
- WCHAR modname[MAX_PATH];
- DWORD modname_len;
-
- OutputDebugString(L"PyShellExt::DllRegisterServer");
- if (!hModule) {
- OutputDebugString(L"PyShellExt::DllRegisterServer - module handle was not set");
- return SELFREG_E_CLASS;
- }
- modname_len = GetModuleFileName(hModule, modname, MAX_PATH);
- if (modname_len == 0 ||
- (modname_len == MAX_PATH && GetLastError() == ERROR_INSUFFICIENT_BUFFER)) {
- OutputDebugString(L"PyShellExt::DllRegisterServer - failed to get module file name");
- return SELFREG_E_CLASS;
- }
-
- DWORD disp;
- res = RegCreateKeyEx(HKEY_LOCAL_MACHINE, CLASS_SUBKEY, 0, NULL, 0,
- KEY_ALL_ACCESS, psecattr, &key, &disp);
- if (res == ERROR_ACCESS_DENIED) {
- OutputDebugString(L"PyShellExt::DllRegisterServer - failed to write per-machine registration. Attempting per-user instead.");
- res = RegCreateKeyEx(HKEY_CURRENT_USER, CLASS_SUBKEY, 0, NULL, 0,
- KEY_ALL_ACCESS, psecattr, &key, &disp);
- }
- if (res != ERROR_SUCCESS) {
- OutputDebugString(L"PyShellExt::DllRegisterServer - failed to create class key");
- return SELFREG_E_CLASS;
- }
-
- res = RegCreateKeyEx(key, L"InProcServer32", 0, NULL, 0,
- KEY_ALL_ACCESS, psecattr, &ipsKey, NULL);
- if (res != ERROR_SUCCESS) {
- RegCloseKey(key);
- OutputDebugString(L"PyShellExt::DllRegisterServer - failed to create InProcServer32 key");
- return SELFREG_E_CLASS;
- }
-
- res = RegSetValueEx(ipsKey, NULL, 0,
- REG_SZ, (LPBYTE)modname, modname_len * sizeof(modname[0]));
-
- if (res != ERROR_SUCCESS) {
- RegCloseKey(ipsKey);
- RegCloseKey(key);
- OutputDebugString(L"PyShellExt::DllRegisterServer - failed to set server path");
- return SELFREG_E_CLASS;
- }
-
- res = RegSetValueEx(ipsKey, L"ThreadingModel", 0,
- REG_SZ, (LPBYTE)(L"Apartment"), sizeof(L"Apartment"));
-
- RegCloseKey(ipsKey);
- RegCloseKey(key);
- if (res != ERROR_SUCCESS) {
- OutputDebugString(L"PyShellExt::DllRegisterServer - failed to set threading model");
- return SELFREG_E_CLASS;
- }
-
- SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL);
-
- OutputDebugString(L"PyShellExt::DllRegisterServer - S_OK");
- return S_OK;
-}
-
-STDAPI DllUnregisterServer() {
- LONG res_lm, res_cu;
-
- res_lm = RegDeleteTree(HKEY_LOCAL_MACHINE, CLASS_SUBKEY);
- if (res_lm != ERROR_SUCCESS && res_lm != ERROR_FILE_NOT_FOUND) {
- OutputDebugString(L"PyShellExt::DllUnregisterServer - failed to delete per-machine registration");
- return SELFREG_E_CLASS;
- }
-
- res_cu = RegDeleteTree(HKEY_CURRENT_USER, CLASS_SUBKEY);
- if (res_cu != ERROR_SUCCESS && res_cu != ERROR_FILE_NOT_FOUND) {
- OutputDebugString(L"PyShellExt::DllUnregisterServer - failed to delete per-user registration");
- return SELFREG_E_CLASS;
- }
-
- if (res_lm == ERROR_FILE_NOT_FOUND && res_cu == ERROR_FILE_NOT_FOUND) {
- OutputDebugString(L"PyShellExt::DllUnregisterServer - extension was not registered");
- return SELFREG_E_CLASS;
- }
-
- SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL);
-
- OutputDebugString(L"PyShellExt::DllUnregisterServer - S_OK");
- return S_OK;
-}
-
-STDAPI_(BOOL) DllMain(_In_opt_ HINSTANCE hinst, DWORD reason, _In_opt_ void*) {
- if (reason == DLL_PROCESS_ATTACH) {
- hModule = hinst;
-
- cfDropDescription = RegisterClipboardFormat(CFSTR_DROPDESCRIPTION);
- if (!cfDropDescription) {
- OutputDebugString(L"PyShellExt::DllMain - failed to get CFSTR_DROPDESCRIPTION format");
- }
- cfDragWindow = RegisterClipboardFormat(L"DragWindow");
- if (!cfDragWindow) {
- OutputDebugString(L"PyShellExt::DllMain - failed to get DragWindow format");
- }
-
- DisableThreadLibraryCalls(hinst);
- }
- return TRUE;
-} \ No newline at end of file
diff --git a/PC/pyshellext.def b/PC/pyshellext.def
deleted file mode 100644
index 5424bd1..0000000
--- a/PC/pyshellext.def
+++ /dev/null
@@ -1,6 +0,0 @@
-LIBRARY "pyshellext"
-EXPORTS
- DllRegisterServer PRIVATE
- DllUnregisterServer PRIVATE
- DllGetClassObject PRIVATE
- DllCanUnloadNow PRIVATE
diff --git a/PC/pyshellext.idl b/PC/pyshellext.idl
deleted file mode 100644
index c0a1838..0000000
--- a/PC/pyshellext.idl
+++ /dev/null
@@ -1,12 +0,0 @@
-import "ocidl.idl";
-
-[uuid(44039A76-3BDD-41C1-A31B-71C00202CE81), version(1.0)]
-library PyShellExtLib
-{
- [uuid(BEA218D2-6950-497B-9434-61683EC065FE), version(1.0)]
- coclass PyShellExt
- {
- [default] interface IDropTarget;
- interface IPersistFile;
- }
-}; \ No newline at end of file
diff --git a/PC/pyshellext.rc b/PC/pyshellext.rc
deleted file mode 100644
index e5924a4..0000000
--- a/PC/pyshellext.rc
+++ /dev/null
@@ -1,46 +0,0 @@
-#include <windows.h>
-
-#include "python_ver_rc.h"
-
-// Include the manifest file that indicates we support all
-// current versions of Windows.
-#include <winuser.h>
-1 RT_MANIFEST "python.manifest"
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Version
-//
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION PYVERSION64
- PRODUCTVERSION PYVERSION64
- FILEFLAGSMASK 0x3fL
-#ifdef _DEBUG
- FILEFLAGS VS_FF_DEBUG
-#else
- FILEFLAGS 0x0L
-#endif
- FILEOS VOS__WINDOWS32
- FILETYPE VFT_APP
- FILESUBTYPE 0x0L
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "000004b0"
- BEGIN
- VALUE "CompanyName", PYTHON_COMPANY "\0"
- VALUE "FileDescription", "Python\0"
- VALUE "FileVersion", PYTHON_VERSION
- VALUE "InternalName", "Python Launcher Shell Extension\0"
- VALUE "LegalCopyright", PYTHON_COPYRIGHT "\0"
- VALUE "OriginalFilename", "pyshellext" PYTHON_DEBUG_EXT ".dll\0"
- VALUE "ProductName", "Python\0"
- VALUE "ProductVersion", PYTHON_VERSION
- END
- END
- BLOCK "VarFileInfo"
- BEGIN
- VALUE "Translation", 0x0, 1200
- END
-END \ No newline at end of file
diff --git a/PC/pyshellext_d.def b/PC/pyshellext_d.def
deleted file mode 100644
index 7d2148b..0000000
--- a/PC/pyshellext_d.def
+++ /dev/null
@@ -1,6 +0,0 @@
-LIBRARY "pyshellext_d"
-EXPORTS
- DllRegisterServer PRIVATE
- DllUnregisterServer PRIVATE
- DllGetClassObject PRIVATE
- DllCanUnloadNow PRIVATE
diff --git a/PC/python.manifest b/PC/python.manifest
deleted file mode 100644
index 8e1bc02..0000000
--- a/PC/python.manifest
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
- <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
- <security>
- <requestedPrivileges>
- <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
- </requestedPrivileges>
- </security>
- </trustInfo>
- <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
- <application>
- <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
- <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
- <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
- <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
- <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
- </application>
- </compatibility>
- <application xmlns="urn:schemas-microsoft-com:asm.v3">
- <windowsSettings>
- <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
- </windowsSettings>
- </application>
- <dependency>
- <dependentAssembly>
- <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls"
- version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" />
- </dependentAssembly>
- </dependency>
-</assembly>
diff --git a/PC/python.mk b/PC/python.mk
new file mode 100644
index 0000000..5f66eb9
--- /dev/null
+++ b/PC/python.mk
@@ -0,0 +1,5 @@
+project : n:\python\python-1.5.1\pc\wat_os2\pyth_os2.exe n:\python\python-1.&
+5.1\pc\wat_dos\pyth_dos.exe .SYMBOLIC
+
+!include n:\python\python-1.5.1\pc\wat_os2\pyth_os2.mk1
+!include n:\python\python-1.5.1\pc\wat_dos\pyth_dos.mk1
diff --git a/PC/python3.def b/PC/python3.def
deleted file mode 100644
index 4689b77..0000000
--- a/PC/python3.def
+++ /dev/null
@@ -1,801 +0,0 @@
-; This file specifies the import forwarding for python3.dll
-; It is used when building python3dll.vcxproj
-LIBRARY "python3"
-EXPORTS
- PyArg_Parse=python39.PyArg_Parse
- PyArg_ParseTuple=python39.PyArg_ParseTuple
- PyArg_ParseTupleAndKeywords=python39.PyArg_ParseTupleAndKeywords
- PyArg_UnpackTuple=python39.PyArg_UnpackTuple
- PyArg_VaParse=python39.PyArg_VaParse
- PyArg_VaParseTupleAndKeywords=python39.PyArg_VaParseTupleAndKeywords
- PyArg_ValidateKeywordArguments=python39.PyArg_ValidateKeywordArguments
- PyBaseObject_Type=python39.PyBaseObject_Type DATA
- PyBool_FromLong=python39.PyBool_FromLong
- PyBool_Type=python39.PyBool_Type DATA
- PyByteArrayIter_Type=python39.PyByteArrayIter_Type DATA
- PyByteArray_AsString=python39.PyByteArray_AsString
- PyByteArray_Concat=python39.PyByteArray_Concat
- PyByteArray_FromObject=python39.PyByteArray_FromObject
- PyByteArray_FromStringAndSize=python39.PyByteArray_FromStringAndSize
- PyByteArray_Resize=python39.PyByteArray_Resize
- PyByteArray_Size=python39.PyByteArray_Size
- PyByteArray_Type=python39.PyByteArray_Type DATA
- PyBytesIter_Type=python39.PyBytesIter_Type DATA
- PyBytes_AsString=python39.PyBytes_AsString
- PyBytes_AsStringAndSize=python39.PyBytes_AsStringAndSize
- PyBytes_Concat=python39.PyBytes_Concat
- PyBytes_ConcatAndDel=python39.PyBytes_ConcatAndDel
- PyBytes_DecodeEscape=python39.PyBytes_DecodeEscape
- PyBytes_FromFormat=python39.PyBytes_FromFormat
- PyBytes_FromFormatV=python39.PyBytes_FromFormatV
- PyBytes_FromObject=python39.PyBytes_FromObject
- PyBytes_FromString=python39.PyBytes_FromString
- PyBytes_FromStringAndSize=python39.PyBytes_FromStringAndSize
- PyBytes_Repr=python39.PyBytes_Repr
- PyBytes_Size=python39.PyBytes_Size
- PyBytes_Type=python39.PyBytes_Type DATA
- PyCFunction_Call=python39.PyCFunction_Call
- PyCFunction_ClearFreeList=python39.PyCFunction_ClearFreeList
- PyCFunction_GetFlags=python39.PyCFunction_GetFlags
- PyCFunction_GetFunction=python39.PyCFunction_GetFunction
- PyCFunction_GetSelf=python39.PyCFunction_GetSelf
- PyCFunction_New=python39.PyCFunction_New
- PyCFunction_NewEx=python39.PyCFunction_NewEx
- PyCFunction_Type=python39.PyCFunction_Type DATA
- PyCallIter_New=python39.PyCallIter_New
- PyCallIter_Type=python39.PyCallIter_Type DATA
- PyCallable_Check=python39.PyCallable_Check
- PyCapsule_GetContext=python39.PyCapsule_GetContext
- PyCapsule_GetDestructor=python39.PyCapsule_GetDestructor
- PyCapsule_GetName=python39.PyCapsule_GetName
- PyCapsule_GetPointer=python39.PyCapsule_GetPointer
- PyCapsule_Import=python39.PyCapsule_Import
- PyCapsule_IsValid=python39.PyCapsule_IsValid
- PyCapsule_New=python39.PyCapsule_New
- PyCapsule_SetContext=python39.PyCapsule_SetContext
- PyCapsule_SetDestructor=python39.PyCapsule_SetDestructor
- PyCapsule_SetName=python39.PyCapsule_SetName
- PyCapsule_SetPointer=python39.PyCapsule_SetPointer
- PyCapsule_Type=python39.PyCapsule_Type DATA
- PyClassMethodDescr_Type=python39.PyClassMethodDescr_Type DATA
- PyCodec_BackslashReplaceErrors=python39.PyCodec_BackslashReplaceErrors
- PyCodec_Decode=python39.PyCodec_Decode
- PyCodec_Decoder=python39.PyCodec_Decoder
- PyCodec_Encode=python39.PyCodec_Encode
- PyCodec_Encoder=python39.PyCodec_Encoder
- PyCodec_IgnoreErrors=python39.PyCodec_IgnoreErrors
- PyCodec_IncrementalDecoder=python39.PyCodec_IncrementalDecoder
- PyCodec_IncrementalEncoder=python39.PyCodec_IncrementalEncoder
- PyCodec_KnownEncoding=python39.PyCodec_KnownEncoding
- PyCodec_LookupError=python39.PyCodec_LookupError
- PyCodec_NameReplaceErrors=python39.PyCodec_NameReplaceErrors
- PyCodec_Register=python39.PyCodec_Register
- PyCodec_RegisterError=python39.PyCodec_RegisterError
- PyCodec_ReplaceErrors=python39.PyCodec_ReplaceErrors
- PyCodec_StreamReader=python39.PyCodec_StreamReader
- PyCodec_StreamWriter=python39.PyCodec_StreamWriter
- PyCodec_StrictErrors=python39.PyCodec_StrictErrors
- PyCodec_XMLCharRefReplaceErrors=python39.PyCodec_XMLCharRefReplaceErrors
- PyComplex_FromDoubles=python39.PyComplex_FromDoubles
- PyComplex_ImagAsDouble=python39.PyComplex_ImagAsDouble
- PyComplex_RealAsDouble=python39.PyComplex_RealAsDouble
- PyComplex_Type=python39.PyComplex_Type DATA
- PyDescr_NewClassMethod=python39.PyDescr_NewClassMethod
- PyDescr_NewGetSet=python39.PyDescr_NewGetSet
- PyDescr_NewMember=python39.PyDescr_NewMember
- PyDescr_NewMethod=python39.PyDescr_NewMethod
- PyDictItems_Type=python39.PyDictItems_Type DATA
- PyDictIterItem_Type=python39.PyDictIterItem_Type DATA
- PyDictIterKey_Type=python39.PyDictIterKey_Type DATA
- PyDictIterValue_Type=python39.PyDictIterValue_Type DATA
- PyDictKeys_Type=python39.PyDictKeys_Type DATA
- PyDictProxy_New=python39.PyDictProxy_New
- PyDictProxy_Type=python39.PyDictProxy_Type DATA
- PyDictValues_Type=python39.PyDictValues_Type DATA
- PyDict_Clear=python39.PyDict_Clear
- PyDict_Contains=python39.PyDict_Contains
- PyDict_Copy=python39.PyDict_Copy
- PyDict_DelItem=python39.PyDict_DelItem
- PyDict_DelItemString=python39.PyDict_DelItemString
- PyDict_GetItem=python39.PyDict_GetItem
- PyDict_GetItemString=python39.PyDict_GetItemString
- PyDict_GetItemWithError=python39.PyDict_GetItemWithError
- PyDict_Items=python39.PyDict_Items
- PyDict_Keys=python39.PyDict_Keys
- PyDict_Merge=python39.PyDict_Merge
- PyDict_MergeFromSeq2=python39.PyDict_MergeFromSeq2
- PyDict_New=python39.PyDict_New
- PyDict_Next=python39.PyDict_Next
- PyDict_SetItem=python39.PyDict_SetItem
- PyDict_SetItemString=python39.PyDict_SetItemString
- PyDict_Size=python39.PyDict_Size
- PyDict_Type=python39.PyDict_Type DATA
- PyDict_Update=python39.PyDict_Update
- PyDict_Values=python39.PyDict_Values
- PyEllipsis_Type=python39.PyEllipsis_Type DATA
- PyEnum_Type=python39.PyEnum_Type DATA
- PyErr_BadArgument=python39.PyErr_BadArgument
- PyErr_BadInternalCall=python39.PyErr_BadInternalCall
- PyErr_CheckSignals=python39.PyErr_CheckSignals
- PyErr_Clear=python39.PyErr_Clear
- PyErr_Display=python39.PyErr_Display
- PyErr_ExceptionMatches=python39.PyErr_ExceptionMatches
- PyErr_Fetch=python39.PyErr_Fetch
- PyErr_Format=python39.PyErr_Format
- PyErr_FormatV=python39.PyErr_FormatV
- PyErr_GetExcInfo=python39.PyErr_GetExcInfo
- PyErr_GivenExceptionMatches=python39.PyErr_GivenExceptionMatches
- PyErr_NewException=python39.PyErr_NewException
- PyErr_NewExceptionWithDoc=python39.PyErr_NewExceptionWithDoc
- PyErr_NoMemory=python39.PyErr_NoMemory
- PyErr_NormalizeException=python39.PyErr_NormalizeException
- PyErr_Occurred=python39.PyErr_Occurred
- PyErr_Print=python39.PyErr_Print
- PyErr_PrintEx=python39.PyErr_PrintEx
- PyErr_ProgramText=python39.PyErr_ProgramText
- PyErr_ResourceWarning=python39.PyErr_ResourceWarning
- PyErr_Restore=python39.PyErr_Restore
- PyErr_SetExcFromWindowsErr=python39.PyErr_SetExcFromWindowsErr
- PyErr_SetExcFromWindowsErrWithFilename=python39.PyErr_SetExcFromWindowsErrWithFilename
- PyErr_SetExcFromWindowsErrWithFilenameObject=python39.PyErr_SetExcFromWindowsErrWithFilenameObject
- PyErr_SetExcFromWindowsErrWithFilenameObjects=python39.PyErr_SetExcFromWindowsErrWithFilenameObjects
- PyErr_SetExcInfo=python39.PyErr_SetExcInfo
- PyErr_SetFromErrno=python39.PyErr_SetFromErrno
- PyErr_SetFromErrnoWithFilename=python39.PyErr_SetFromErrnoWithFilename
- PyErr_SetFromErrnoWithFilenameObject=python39.PyErr_SetFromErrnoWithFilenameObject
- PyErr_SetFromErrnoWithFilenameObjects=python39.PyErr_SetFromErrnoWithFilenameObjects
- PyErr_SetFromWindowsErr=python39.PyErr_SetFromWindowsErr
- PyErr_SetFromWindowsErrWithFilename=python39.PyErr_SetFromWindowsErrWithFilename
- PyErr_SetImportError=python39.PyErr_SetImportError
- PyErr_SetImportErrorSubclass=python39.PyErr_SetImportErrorSubclass
- PyErr_SetInterrupt=python39.PyErr_SetInterrupt
- PyErr_SetNone=python39.PyErr_SetNone
- PyErr_SetObject=python39.PyErr_SetObject
- PyErr_SetString=python39.PyErr_SetString
- PyErr_SyntaxLocation=python39.PyErr_SyntaxLocation
- PyErr_SyntaxLocationEx=python39.PyErr_SyntaxLocationEx
- PyErr_WarnEx=python39.PyErr_WarnEx
- PyErr_WarnExplicit=python39.PyErr_WarnExplicit
- PyErr_WarnFormat=python39.PyErr_WarnFormat
- PyErr_WriteUnraisable=python39.PyErr_WriteUnraisable
- PyEval_AcquireLock=python39.PyEval_AcquireLock
- PyEval_AcquireThread=python39.PyEval_AcquireThread
- PyEval_CallFunction=python39.PyEval_CallFunction
- PyEval_CallMethod=python39.PyEval_CallMethod
- PyEval_CallObjectWithKeywords=python39.PyEval_CallObjectWithKeywords
- PyEval_EvalCode=python39.PyEval_EvalCode
- PyEval_EvalCodeEx=python39.PyEval_EvalCodeEx
- PyEval_EvalFrame=python39.PyEval_EvalFrame
- PyEval_EvalFrameEx=python39.PyEval_EvalFrameEx
- PyEval_GetBuiltins=python39.PyEval_GetBuiltins
- PyEval_GetCallStats=python39.PyEval_GetCallStats
- PyEval_GetFrame=python39.PyEval_GetFrame
- PyEval_GetFuncDesc=python39.PyEval_GetFuncDesc
- PyEval_GetFuncName=python39.PyEval_GetFuncName
- PyEval_GetGlobals=python39.PyEval_GetGlobals
- PyEval_GetLocals=python39.PyEval_GetLocals
- PyEval_InitThreads=python39.PyEval_InitThreads
- PyEval_ReInitThreads=python39.PyEval_ReInitThreads
- PyEval_ReleaseLock=python39.PyEval_ReleaseLock
- PyEval_ReleaseThread=python39.PyEval_ReleaseThread
- PyEval_RestoreThread=python39.PyEval_RestoreThread
- PyEval_SaveThread=python39.PyEval_SaveThread
- PyEval_ThreadsInitialized=python39.PyEval_ThreadsInitialized
- PyExc_ArithmeticError=python39.PyExc_ArithmeticError DATA
- PyExc_AssertionError=python39.PyExc_AssertionError DATA
- PyExc_AttributeError=python39.PyExc_AttributeError DATA
- PyExc_BaseException=python39.PyExc_BaseException DATA
- PyExc_BlockingIOError=python39.PyExc_BlockingIOError DATA
- PyExc_BrokenPipeError=python39.PyExc_BrokenPipeError DATA
- PyExc_BufferError=python39.PyExc_BufferError DATA
- PyExc_BytesWarning=python39.PyExc_BytesWarning DATA
- PyExc_ChildProcessError=python39.PyExc_ChildProcessError DATA
- PyExc_ConnectionAbortedError=python39.PyExc_ConnectionAbortedError DATA
- PyExc_ConnectionError=python39.PyExc_ConnectionError DATA
- PyExc_ConnectionRefusedError=python39.PyExc_ConnectionRefusedError DATA
- PyExc_ConnectionResetError=python39.PyExc_ConnectionResetError DATA
- PyExc_DeprecationWarning=python39.PyExc_DeprecationWarning DATA
- PyExc_EOFError=python39.PyExc_EOFError DATA
- PyExc_EnvironmentError=python39.PyExc_EnvironmentError DATA
- PyExc_Exception=python39.PyExc_Exception DATA
- PyExc_FileExistsError=python39.PyExc_FileExistsError DATA
- PyExc_FileNotFoundError=python39.PyExc_FileNotFoundError DATA
- PyExc_FloatingPointError=python39.PyExc_FloatingPointError DATA
- PyExc_FutureWarning=python39.PyExc_FutureWarning DATA
- PyExc_GeneratorExit=python39.PyExc_GeneratorExit DATA
- PyExc_IOError=python39.PyExc_IOError DATA
- PyExc_ImportError=python39.PyExc_ImportError DATA
- PyExc_ImportWarning=python39.PyExc_ImportWarning DATA
- PyExc_IndentationError=python39.PyExc_IndentationError DATA
- PyExc_IndexError=python39.PyExc_IndexError DATA
- PyExc_InterruptedError=python39.PyExc_InterruptedError DATA
- PyExc_IsADirectoryError=python39.PyExc_IsADirectoryError DATA
- PyExc_KeyError=python39.PyExc_KeyError DATA
- PyExc_KeyboardInterrupt=python39.PyExc_KeyboardInterrupt DATA
- PyExc_LookupError=python39.PyExc_LookupError DATA
- PyExc_MemoryError=python39.PyExc_MemoryError DATA
- PyExc_ModuleNotFoundError=python39.PyExc_ModuleNotFoundError DATA
- PyExc_NameError=python39.PyExc_NameError DATA
- PyExc_NotADirectoryError=python39.PyExc_NotADirectoryError DATA
- PyExc_NotImplementedError=python39.PyExc_NotImplementedError DATA
- PyExc_OSError=python39.PyExc_OSError DATA
- PyExc_OverflowError=python39.PyExc_OverflowError DATA
- PyExc_PendingDeprecationWarning=python39.PyExc_PendingDeprecationWarning DATA
- PyExc_PermissionError=python39.PyExc_PermissionError DATA
- PyExc_ProcessLookupError=python39.PyExc_ProcessLookupError DATA
- PyExc_RecursionError=python39.PyExc_RecursionError DATA
- PyExc_ReferenceError=python39.PyExc_ReferenceError DATA
- PyExc_ResourceWarning=python39.PyExc_ResourceWarning DATA
- PyExc_RuntimeError=python39.PyExc_RuntimeError DATA
- PyExc_RuntimeWarning=python39.PyExc_RuntimeWarning DATA
- PyExc_StopAsyncIteration=python39.PyExc_StopAsyncIteration DATA
- PyExc_StopIteration=python39.PyExc_StopIteration DATA
- PyExc_SyntaxError=python39.PyExc_SyntaxError DATA
- PyExc_SyntaxWarning=python39.PyExc_SyntaxWarning DATA
- PyExc_SystemError=python39.PyExc_SystemError DATA
- PyExc_SystemExit=python39.PyExc_SystemExit DATA
- PyExc_TabError=python39.PyExc_TabError DATA
- PyExc_TimeoutError=python39.PyExc_TimeoutError DATA
- PyExc_TypeError=python39.PyExc_TypeError DATA
- PyExc_UnboundLocalError=python39.PyExc_UnboundLocalError DATA
- PyExc_UnicodeDecodeError=python39.PyExc_UnicodeDecodeError DATA
- PyExc_UnicodeEncodeError=python39.PyExc_UnicodeEncodeError DATA
- PyExc_UnicodeError=python39.PyExc_UnicodeError DATA
- PyExc_UnicodeTranslateError=python39.PyExc_UnicodeTranslateError DATA
- PyExc_UnicodeWarning=python39.PyExc_UnicodeWarning DATA
- PyExc_UserWarning=python39.PyExc_UserWarning DATA
- PyExc_ValueError=python39.PyExc_ValueError DATA
- PyExc_Warning=python39.PyExc_Warning DATA
- PyExc_WindowsError=python39.PyExc_WindowsError DATA
- PyExc_ZeroDivisionError=python39.PyExc_ZeroDivisionError DATA
- PyExceptionClass_Name=python39.PyExceptionClass_Name
- PyException_GetCause=python39.PyException_GetCause
- PyException_GetContext=python39.PyException_GetContext
- PyException_GetTraceback=python39.PyException_GetTraceback
- PyException_SetCause=python39.PyException_SetCause
- PyException_SetContext=python39.PyException_SetContext
- PyException_SetTraceback=python39.PyException_SetTraceback
- PyFile_FromFd=python39.PyFile_FromFd
- PyFile_GetLine=python39.PyFile_GetLine
- PyFile_WriteObject=python39.PyFile_WriteObject
- PyFile_WriteString=python39.PyFile_WriteString
- PyFilter_Type=python39.PyFilter_Type DATA
- PyFloat_AsDouble=python39.PyFloat_AsDouble
- PyFloat_FromDouble=python39.PyFloat_FromDouble
- PyFloat_FromString=python39.PyFloat_FromString
- PyFloat_GetInfo=python39.PyFloat_GetInfo
- PyFloat_GetMax=python39.PyFloat_GetMax
- PyFloat_GetMin=python39.PyFloat_GetMin
- PyFloat_Type=python39.PyFloat_Type DATA
- PyFrozenSet_New=python39.PyFrozenSet_New
- PyFrozenSet_Type=python39.PyFrozenSet_Type DATA
- PyGC_Collect=python39.PyGC_Collect
- PyGILState_Ensure=python39.PyGILState_Ensure
- PyGILState_GetThisThreadState=python39.PyGILState_GetThisThreadState
- PyGILState_Release=python39.PyGILState_Release
- PyGetSetDescr_Type=python39.PyGetSetDescr_Type DATA
- PyImport_AddModule=python39.PyImport_AddModule
- PyImport_AddModuleObject=python39.PyImport_AddModuleObject
- PyImport_AppendInittab=python39.PyImport_AppendInittab
- PyImport_Cleanup=python39.PyImport_Cleanup
- PyImport_ExecCodeModule=python39.PyImport_ExecCodeModule
- PyImport_ExecCodeModuleEx=python39.PyImport_ExecCodeModuleEx
- PyImport_ExecCodeModuleObject=python39.PyImport_ExecCodeModuleObject
- PyImport_ExecCodeModuleWithPathnames=python39.PyImport_ExecCodeModuleWithPathnames
- PyImport_GetImporter=python39.PyImport_GetImporter
- PyImport_GetMagicNumber=python39.PyImport_GetMagicNumber
- PyImport_GetMagicTag=python39.PyImport_GetMagicTag
- PyImport_GetModule=python39.PyImport_GetModule
- PyImport_GetModuleDict=python39.PyImport_GetModuleDict
- PyImport_Import=python39.PyImport_Import
- PyImport_ImportFrozenModule=python39.PyImport_ImportFrozenModule
- PyImport_ImportFrozenModuleObject=python39.PyImport_ImportFrozenModuleObject
- PyImport_ImportModule=python39.PyImport_ImportModule
- PyImport_ImportModuleLevel=python39.PyImport_ImportModuleLevel
- PyImport_ImportModuleLevelObject=python39.PyImport_ImportModuleLevelObject
- PyImport_ImportModuleNoBlock=python39.PyImport_ImportModuleNoBlock
- PyImport_ReloadModule=python39.PyImport_ReloadModule
- PyIndex_Check=python39.PyIndex_Check
- PyInterpreterState_Clear=python39.PyInterpreterState_Clear
- PyInterpreterState_Delete=python39.PyInterpreterState_Delete
- PyInterpreterState_New=python39.PyInterpreterState_New
- PyIter_Check=python39.PyIter_Check
- PyIter_Next=python39.PyIter_Next
- PyListIter_Type=python39.PyListIter_Type DATA
- PyListRevIter_Type=python39.PyListRevIter_Type DATA
- PyList_Append=python39.PyList_Append
- PyList_AsTuple=python39.PyList_AsTuple
- PyList_GetItem=python39.PyList_GetItem
- PyList_GetSlice=python39.PyList_GetSlice
- PyList_Insert=python39.PyList_Insert
- PyList_New=python39.PyList_New
- PyList_Reverse=python39.PyList_Reverse
- PyList_SetItem=python39.PyList_SetItem
- PyList_SetSlice=python39.PyList_SetSlice
- PyList_Size=python39.PyList_Size
- PyList_Sort=python39.PyList_Sort
- PyList_Type=python39.PyList_Type DATA
- PyLongRangeIter_Type=python39.PyLongRangeIter_Type DATA
- PyLong_AsDouble=python39.PyLong_AsDouble
- PyLong_AsLong=python39.PyLong_AsLong
- PyLong_AsLongAndOverflow=python39.PyLong_AsLongAndOverflow
- PyLong_AsLongLong=python39.PyLong_AsLongLong
- PyLong_AsLongLongAndOverflow=python39.PyLong_AsLongLongAndOverflow
- PyLong_AsSize_t=python39.PyLong_AsSize_t
- PyLong_AsSsize_t=python39.PyLong_AsSsize_t
- PyLong_AsUnsignedLong=python39.PyLong_AsUnsignedLong
- PyLong_AsUnsignedLongLong=python39.PyLong_AsUnsignedLongLong
- PyLong_AsUnsignedLongLongMask=python39.PyLong_AsUnsignedLongLongMask
- PyLong_AsUnsignedLongMask=python39.PyLong_AsUnsignedLongMask
- PyLong_AsVoidPtr=python39.PyLong_AsVoidPtr
- PyLong_FromDouble=python39.PyLong_FromDouble
- PyLong_FromLong=python39.PyLong_FromLong
- PyLong_FromLongLong=python39.PyLong_FromLongLong
- PyLong_FromSize_t=python39.PyLong_FromSize_t
- PyLong_FromSsize_t=python39.PyLong_FromSsize_t
- PyLong_FromString=python39.PyLong_FromString
- PyLong_FromUnsignedLong=python39.PyLong_FromUnsignedLong
- PyLong_FromUnsignedLongLong=python39.PyLong_FromUnsignedLongLong
- PyLong_FromVoidPtr=python39.PyLong_FromVoidPtr
- PyLong_GetInfo=python39.PyLong_GetInfo
- PyLong_Type=python39.PyLong_Type DATA
- PyMap_Type=python39.PyMap_Type DATA
- PyMapping_Check=python39.PyMapping_Check
- PyMapping_GetItemString=python39.PyMapping_GetItemString
- PyMapping_HasKey=python39.PyMapping_HasKey
- PyMapping_HasKeyString=python39.PyMapping_HasKeyString
- PyMapping_Items=python39.PyMapping_Items
- PyMapping_Keys=python39.PyMapping_Keys
- PyMapping_Length=python39.PyMapping_Length
- PyMapping_SetItemString=python39.PyMapping_SetItemString
- PyMapping_Size=python39.PyMapping_Size
- PyMapping_Values=python39.PyMapping_Values
- PyMem_Calloc=python39.PyMem_Calloc
- PyMem_Free=python39.PyMem_Free
- PyMem_Malloc=python39.PyMem_Malloc
- PyMem_Realloc=python39.PyMem_Realloc
- PyMemberDescr_Type=python39.PyMemberDescr_Type DATA
- PyMemoryView_FromMemory=python39.PyMemoryView_FromMemory
- PyMemoryView_FromObject=python39.PyMemoryView_FromObject
- PyMemoryView_GetContiguous=python39.PyMemoryView_GetContiguous
- PyMemoryView_Type=python39.PyMemoryView_Type DATA
- PyMethodDescr_Type=python39.PyMethodDescr_Type DATA
- PyModuleDef_Init=python39.PyModuleDef_Init
- PyModuleDef_Type=python39.PyModuleDef_Type DATA
- PyModule_AddFunctions=python39.PyModule_AddFunctions
- PyModule_AddIntConstant=python39.PyModule_AddIntConstant
- PyModule_AddObject=python39.PyModule_AddObject
- PyModule_AddStringConstant=python39.PyModule_AddStringConstant
- PyModule_Create2=python39.PyModule_Create2
- PyModule_ExecDef=python39.PyModule_ExecDef
- PyModule_FromDefAndSpec2=python39.PyModule_FromDefAndSpec2
- PyModule_GetDef=python39.PyModule_GetDef
- PyModule_GetDict=python39.PyModule_GetDict
- PyModule_GetFilename=python39.PyModule_GetFilename
- PyModule_GetFilenameObject=python39.PyModule_GetFilenameObject
- PyModule_GetName=python39.PyModule_GetName
- PyModule_GetNameObject=python39.PyModule_GetNameObject
- PyModule_GetState=python39.PyModule_GetState
- PyModule_New=python39.PyModule_New
- PyModule_NewObject=python39.PyModule_NewObject
- PyModule_SetDocString=python39.PyModule_SetDocString
- PyModule_Type=python39.PyModule_Type DATA
- PyNullImporter_Type=python39.PyNullImporter_Type DATA
- PyNumber_Absolute=python39.PyNumber_Absolute
- PyNumber_Add=python39.PyNumber_Add
- PyNumber_And=python39.PyNumber_And
- PyNumber_AsSsize_t=python39.PyNumber_AsSsize_t
- PyNumber_Check=python39.PyNumber_Check
- PyNumber_Divmod=python39.PyNumber_Divmod
- PyNumber_Float=python39.PyNumber_Float
- PyNumber_FloorDivide=python39.PyNumber_FloorDivide
- PyNumber_InPlaceAdd=python39.PyNumber_InPlaceAdd
- PyNumber_InPlaceAnd=python39.PyNumber_InPlaceAnd
- PyNumber_InPlaceFloorDivide=python39.PyNumber_InPlaceFloorDivide
- PyNumber_InPlaceLshift=python39.PyNumber_InPlaceLshift
- PyNumber_InPlaceMatrixMultiply=python39.PyNumber_InPlaceMatrixMultiply
- PyNumber_InPlaceMultiply=python39.PyNumber_InPlaceMultiply
- PyNumber_InPlaceOr=python39.PyNumber_InPlaceOr
- PyNumber_InPlacePower=python39.PyNumber_InPlacePower
- PyNumber_InPlaceRemainder=python39.PyNumber_InPlaceRemainder
- PyNumber_InPlaceRshift=python39.PyNumber_InPlaceRshift
- PyNumber_InPlaceSubtract=python39.PyNumber_InPlaceSubtract
- PyNumber_InPlaceTrueDivide=python39.PyNumber_InPlaceTrueDivide
- PyNumber_InPlaceXor=python39.PyNumber_InPlaceXor
- PyNumber_Index=python39.PyNumber_Index
- PyNumber_Invert=python39.PyNumber_Invert
- PyNumber_Long=python39.PyNumber_Long
- PyNumber_Lshift=python39.PyNumber_Lshift
- PyNumber_MatrixMultiply=python39.PyNumber_MatrixMultiply
- PyNumber_Multiply=python39.PyNumber_Multiply
- PyNumber_Negative=python39.PyNumber_Negative
- PyNumber_Or=python39.PyNumber_Or
- PyNumber_Positive=python39.PyNumber_Positive
- PyNumber_Power=python39.PyNumber_Power
- PyNumber_Remainder=python39.PyNumber_Remainder
- PyNumber_Rshift=python39.PyNumber_Rshift
- PyNumber_Subtract=python39.PyNumber_Subtract
- PyNumber_ToBase=python39.PyNumber_ToBase
- PyNumber_TrueDivide=python39.PyNumber_TrueDivide
- PyNumber_Xor=python39.PyNumber_Xor
- PyODictItems_Type=python39.PyODictItems_Type DATA
- PyODictIter_Type=python39.PyODictIter_Type DATA
- PyODictKeys_Type=python39.PyODictKeys_Type DATA
- PyODictValues_Type=python39.PyODictValues_Type DATA
- PyODict_DelItem=python39.PyODict_DelItem
- PyODict_New=python39.PyODict_New
- PyODict_SetItem=python39.PyODict_SetItem
- PyODict_Type=python39.PyODict_Type DATA
- PyOS_AfterFork=python39.PyOS_AfterFork
- PyOS_CheckStack=python39.PyOS_CheckStack
- PyOS_FSPath=python39.PyOS_FSPath
- PyOS_InitInterrupts=python39.PyOS_InitInterrupts
- PyOS_InputHook=python39.PyOS_InputHook DATA
- PyOS_InterruptOccurred=python39.PyOS_InterruptOccurred
- PyOS_ReadlineFunctionPointer=python39.PyOS_ReadlineFunctionPointer DATA
- PyOS_double_to_string=python39.PyOS_double_to_string
- PyOS_getsig=python39.PyOS_getsig
- PyOS_mystricmp=python39.PyOS_mystricmp
- PyOS_mystrnicmp=python39.PyOS_mystrnicmp
- PyOS_setsig=python39.PyOS_setsig
- PyOS_snprintf=python39.PyOS_snprintf
- PyOS_string_to_double=python39.PyOS_string_to_double
- PyOS_strtol=python39.PyOS_strtol
- PyOS_strtoul=python39.PyOS_strtoul
- PyOS_vsnprintf=python39.PyOS_vsnprintf
- PyObject_ASCII=python39.PyObject_ASCII
- PyObject_AsCharBuffer=python39.PyObject_AsCharBuffer
- PyObject_AsFileDescriptor=python39.PyObject_AsFileDescriptor
- PyObject_AsReadBuffer=python39.PyObject_AsReadBuffer
- PyObject_AsWriteBuffer=python39.PyObject_AsWriteBuffer
- PyObject_Bytes=python39.PyObject_Bytes
- PyObject_Call=python39.PyObject_Call
- PyObject_CallFunction=python39.PyObject_CallFunction
- PyObject_CallFunctionObjArgs=python39.PyObject_CallFunctionObjArgs
- PyObject_CallMethod=python39.PyObject_CallMethod
- PyObject_CallMethodObjArgs=python39.PyObject_CallMethodObjArgs
- PyObject_CallObject=python39.PyObject_CallObject
- PyObject_Calloc=python39.PyObject_Calloc
- PyObject_CheckReadBuffer=python39.PyObject_CheckReadBuffer
- PyObject_ClearWeakRefs=python39.PyObject_ClearWeakRefs
- PyObject_DelItem=python39.PyObject_DelItem
- PyObject_DelItemString=python39.PyObject_DelItemString
- PyObject_Dir=python39.PyObject_Dir
- PyObject_Format=python39.PyObject_Format
- PyObject_Free=python39.PyObject_Free
- PyObject_GC_Del=python39.PyObject_GC_Del
- PyObject_GC_Track=python39.PyObject_GC_Track
- PyObject_GC_UnTrack=python39.PyObject_GC_UnTrack
- PyObject_GenericGetAttr=python39.PyObject_GenericGetAttr
- PyObject_GenericSetAttr=python39.PyObject_GenericSetAttr
- PyObject_GenericSetDict=python39.PyObject_GenericSetDict
- PyObject_GetAttr=python39.PyObject_GetAttr
- PyObject_GetAttrString=python39.PyObject_GetAttrString
- PyObject_GetItem=python39.PyObject_GetItem
- PyObject_GetIter=python39.PyObject_GetIter
- PyObject_HasAttr=python39.PyObject_HasAttr
- PyObject_HasAttrString=python39.PyObject_HasAttrString
- PyObject_Hash=python39.PyObject_Hash
- PyObject_HashNotImplemented=python39.PyObject_HashNotImplemented
- PyObject_Init=python39.PyObject_Init
- PyObject_InitVar=python39.PyObject_InitVar
- PyObject_IsInstance=python39.PyObject_IsInstance
- PyObject_IsSubclass=python39.PyObject_IsSubclass
- PyObject_IsTrue=python39.PyObject_IsTrue
- PyObject_Length=python39.PyObject_Length
- PyObject_Malloc=python39.PyObject_Malloc
- PyObject_Not=python39.PyObject_Not
- PyObject_Realloc=python39.PyObject_Realloc
- PyObject_Repr=python39.PyObject_Repr
- PyObject_RichCompare=python39.PyObject_RichCompare
- PyObject_RichCompareBool=python39.PyObject_RichCompareBool
- PyObject_SelfIter=python39.PyObject_SelfIter
- PyObject_SetAttr=python39.PyObject_SetAttr
- PyObject_SetAttrString=python39.PyObject_SetAttrString
- PyObject_SetItem=python39.PyObject_SetItem
- PyObject_Size=python39.PyObject_Size
- PyObject_Str=python39.PyObject_Str
- PyObject_Type=python39.PyObject_Type
- PyParser_SimpleParseFileFlags=python39.PyParser_SimpleParseFileFlags
- PyParser_SimpleParseStringFlags=python39.PyParser_SimpleParseStringFlags
- PyParser_SimpleParseStringFlagsFilename=python39.PyParser_SimpleParseStringFlagsFilename
- PyProperty_Type=python39.PyProperty_Type DATA
- PyRangeIter_Type=python39.PyRangeIter_Type DATA
- PyRange_Type=python39.PyRange_Type DATA
- PyReversed_Type=python39.PyReversed_Type DATA
- PySeqIter_New=python39.PySeqIter_New
- PySeqIter_Type=python39.PySeqIter_Type DATA
- PySequence_Check=python39.PySequence_Check
- PySequence_Concat=python39.PySequence_Concat
- PySequence_Contains=python39.PySequence_Contains
- PySequence_Count=python39.PySequence_Count
- PySequence_DelItem=python39.PySequence_DelItem
- PySequence_DelSlice=python39.PySequence_DelSlice
- PySequence_Fast=python39.PySequence_Fast
- PySequence_GetItem=python39.PySequence_GetItem
- PySequence_GetSlice=python39.PySequence_GetSlice
- PySequence_In=python39.PySequence_In
- PySequence_InPlaceConcat=python39.PySequence_InPlaceConcat
- PySequence_InPlaceRepeat=python39.PySequence_InPlaceRepeat
- PySequence_Index=python39.PySequence_Index
- PySequence_Length=python39.PySequence_Length
- PySequence_List=python39.PySequence_List
- PySequence_Repeat=python39.PySequence_Repeat
- PySequence_SetItem=python39.PySequence_SetItem
- PySequence_SetSlice=python39.PySequence_SetSlice
- PySequence_Size=python39.PySequence_Size
- PySequence_Tuple=python39.PySequence_Tuple
- PySetIter_Type=python39.PySetIter_Type DATA
- PySet_Add=python39.PySet_Add
- PySet_Clear=python39.PySet_Clear
- PySet_Contains=python39.PySet_Contains
- PySet_Discard=python39.PySet_Discard
- PySet_New=python39.PySet_New
- PySet_Pop=python39.PySet_Pop
- PySet_Size=python39.PySet_Size
- PySet_Type=python39.PySet_Type DATA
- PySlice_AdjustIndices=python39.PySlice_AdjustIndices
- PySlice_GetIndices=python39.PySlice_GetIndices
- PySlice_GetIndicesEx=python39.PySlice_GetIndicesEx
- PySlice_New=python39.PySlice_New
- PySlice_Type=python39.PySlice_Type DATA
- PySlice_Unpack=python39.PySlice_Unpack
- PySortWrapper_Type=python39.PySortWrapper_Type DATA
- PyInterpreterState_GetID=python39.PyInterpreterState_GetID
- PyState_AddModule=python39.PyState_AddModule
- PyState_FindModule=python39.PyState_FindModule
- PyState_RemoveModule=python39.PyState_RemoveModule
- PyStructSequence_GetItem=python39.PyStructSequence_GetItem
- PyStructSequence_New=python39.PyStructSequence_New
- PyStructSequence_NewType=python39.PyStructSequence_NewType
- PyStructSequence_SetItem=python39.PyStructSequence_SetItem
- PySuper_Type=python39.PySuper_Type DATA
- PySys_AddWarnOption=python39.PySys_AddWarnOption
- PySys_AddWarnOptionUnicode=python39.PySys_AddWarnOptionUnicode
- PySys_AddXOption=python39.PySys_AddXOption
- PySys_FormatStderr=python39.PySys_FormatStderr
- PySys_FormatStdout=python39.PySys_FormatStdout
- PySys_GetObject=python39.PySys_GetObject
- PySys_GetXOptions=python39.PySys_GetXOptions
- PySys_HasWarnOptions=python39.PySys_HasWarnOptions
- PySys_ResetWarnOptions=python39.PySys_ResetWarnOptions
- PySys_SetArgv=python39.PySys_SetArgv
- PySys_SetArgvEx=python39.PySys_SetArgvEx
- PySys_SetObject=python39.PySys_SetObject
- PySys_SetPath=python39.PySys_SetPath
- PySys_WriteStderr=python39.PySys_WriteStderr
- PySys_WriteStdout=python39.PySys_WriteStdout
- PyThreadState_Clear=python39.PyThreadState_Clear
- PyThreadState_Delete=python39.PyThreadState_Delete
- PyThreadState_DeleteCurrent=python39.PyThreadState_DeleteCurrent
- PyThreadState_Get=python39.PyThreadState_Get
- PyThreadState_GetDict=python39.PyThreadState_GetDict
- PyThreadState_New=python39.PyThreadState_New
- PyThreadState_SetAsyncExc=python39.PyThreadState_SetAsyncExc
- PyThreadState_Swap=python39.PyThreadState_Swap
- PyThread_tss_alloc=python39.PyThread_tss_alloc
- PyThread_tss_create=python39.PyThread_tss_create
- PyThread_tss_delete=python39.PyThread_tss_delete
- PyThread_tss_free=python39.PyThread_tss_free
- PyThread_tss_get=python39.PyThread_tss_get
- PyThread_tss_is_created=python39.PyThread_tss_is_created
- PyThread_tss_set=python39.PyThread_tss_set
- PyTraceBack_Here=python39.PyTraceBack_Here
- PyTraceBack_Print=python39.PyTraceBack_Print
- PyTraceBack_Type=python39.PyTraceBack_Type DATA
- PyTupleIter_Type=python39.PyTupleIter_Type DATA
- PyTuple_ClearFreeList=python39.PyTuple_ClearFreeList
- PyTuple_GetItem=python39.PyTuple_GetItem
- PyTuple_GetSlice=python39.PyTuple_GetSlice
- PyTuple_New=python39.PyTuple_New
- PyTuple_Pack=python39.PyTuple_Pack
- PyTuple_SetItem=python39.PyTuple_SetItem
- PyTuple_Size=python39.PyTuple_Size
- PyTuple_Type=python39.PyTuple_Type DATA
- PyType_ClearCache=python39.PyType_ClearCache
- PyType_FromSpec=python39.PyType_FromSpec
- PyType_FromSpecWithBases=python39.PyType_FromSpecWithBases
- PyType_GenericAlloc=python39.PyType_GenericAlloc
- PyType_GenericNew=python39.PyType_GenericNew
- PyType_GetFlags=python39.PyType_GetFlags
- PyType_GetSlot=python39.PyType_GetSlot
- PyType_IsSubtype=python39.PyType_IsSubtype
- PyType_Modified=python39.PyType_Modified
- PyType_Ready=python39.PyType_Ready
- PyType_Type=python39.PyType_Type DATA
- PyUnicodeDecodeError_Create=python39.PyUnicodeDecodeError_Create
- PyUnicodeDecodeError_GetEncoding=python39.PyUnicodeDecodeError_GetEncoding
- PyUnicodeDecodeError_GetEnd=python39.PyUnicodeDecodeError_GetEnd
- PyUnicodeDecodeError_GetObject=python39.PyUnicodeDecodeError_GetObject
- PyUnicodeDecodeError_GetReason=python39.PyUnicodeDecodeError_GetReason
- PyUnicodeDecodeError_GetStart=python39.PyUnicodeDecodeError_GetStart
- PyUnicodeDecodeError_SetEnd=python39.PyUnicodeDecodeError_SetEnd
- PyUnicodeDecodeError_SetReason=python39.PyUnicodeDecodeError_SetReason
- PyUnicodeDecodeError_SetStart=python39.PyUnicodeDecodeError_SetStart
- PyUnicodeEncodeError_GetEncoding=python39.PyUnicodeEncodeError_GetEncoding
- PyUnicodeEncodeError_GetEnd=python39.PyUnicodeEncodeError_GetEnd
- PyUnicodeEncodeError_GetObject=python39.PyUnicodeEncodeError_GetObject
- PyUnicodeEncodeError_GetReason=python39.PyUnicodeEncodeError_GetReason
- PyUnicodeEncodeError_GetStart=python39.PyUnicodeEncodeError_GetStart
- PyUnicodeEncodeError_SetEnd=python39.PyUnicodeEncodeError_SetEnd
- PyUnicodeEncodeError_SetReason=python39.PyUnicodeEncodeError_SetReason
- PyUnicodeEncodeError_SetStart=python39.PyUnicodeEncodeError_SetStart
- PyUnicodeIter_Type=python39.PyUnicodeIter_Type DATA
- PyUnicodeTranslateError_GetEnd=python39.PyUnicodeTranslateError_GetEnd
- PyUnicodeTranslateError_GetObject=python39.PyUnicodeTranslateError_GetObject
- PyUnicodeTranslateError_GetReason=python39.PyUnicodeTranslateError_GetReason
- PyUnicodeTranslateError_GetStart=python39.PyUnicodeTranslateError_GetStart
- PyUnicodeTranslateError_SetEnd=python39.PyUnicodeTranslateError_SetEnd
- PyUnicodeTranslateError_SetReason=python39.PyUnicodeTranslateError_SetReason
- PyUnicodeTranslateError_SetStart=python39.PyUnicodeTranslateError_SetStart
- PyUnicode_Append=python39.PyUnicode_Append
- PyUnicode_AppendAndDel=python39.PyUnicode_AppendAndDel
- PyUnicode_AsASCIIString=python39.PyUnicode_AsASCIIString
- PyUnicode_AsCharmapString=python39.PyUnicode_AsCharmapString
- PyUnicode_AsDecodedObject=python39.PyUnicode_AsDecodedObject
- PyUnicode_AsDecodedUnicode=python39.PyUnicode_AsDecodedUnicode
- PyUnicode_AsEncodedObject=python39.PyUnicode_AsEncodedObject
- PyUnicode_AsEncodedString=python39.PyUnicode_AsEncodedString
- PyUnicode_AsEncodedUnicode=python39.PyUnicode_AsEncodedUnicode
- PyUnicode_AsLatin1String=python39.PyUnicode_AsLatin1String
- PyUnicode_AsMBCSString=python39.PyUnicode_AsMBCSString
- PyUnicode_AsRawUnicodeEscapeString=python39.PyUnicode_AsRawUnicodeEscapeString
- PyUnicode_AsUCS4=python39.PyUnicode_AsUCS4
- PyUnicode_AsUCS4Copy=python39.PyUnicode_AsUCS4Copy
- PyUnicode_AsUTF16String=python39.PyUnicode_AsUTF16String
- PyUnicode_AsUTF32String=python39.PyUnicode_AsUTF32String
- PyUnicode_AsUTF8String=python39.PyUnicode_AsUTF8String
- PyUnicode_AsUnicodeEscapeString=python39.PyUnicode_AsUnicodeEscapeString
- PyUnicode_AsWideChar=python39.PyUnicode_AsWideChar
- PyUnicode_AsWideCharString=python39.PyUnicode_AsWideCharString
- PyUnicode_BuildEncodingMap=python39.PyUnicode_BuildEncodingMap
- PyUnicode_Compare=python39.PyUnicode_Compare
- PyUnicode_CompareWithASCIIString=python39.PyUnicode_CompareWithASCIIString
- PyUnicode_Concat=python39.PyUnicode_Concat
- PyUnicode_Contains=python39.PyUnicode_Contains
- PyUnicode_Count=python39.PyUnicode_Count
- PyUnicode_Decode=python39.PyUnicode_Decode
- PyUnicode_DecodeASCII=python39.PyUnicode_DecodeASCII
- PyUnicode_DecodeCharmap=python39.PyUnicode_DecodeCharmap
- PyUnicode_DecodeCodePageStateful=python39.PyUnicode_DecodeCodePageStateful
- PyUnicode_DecodeFSDefault=python39.PyUnicode_DecodeFSDefault
- PyUnicode_DecodeFSDefaultAndSize=python39.PyUnicode_DecodeFSDefaultAndSize
- PyUnicode_DecodeLatin1=python39.PyUnicode_DecodeLatin1
- PyUnicode_DecodeLocale=python39.PyUnicode_DecodeLocale
- PyUnicode_DecodeLocaleAndSize=python39.PyUnicode_DecodeLocaleAndSize
- PyUnicode_DecodeMBCS=python39.PyUnicode_DecodeMBCS
- PyUnicode_DecodeMBCSStateful=python39.PyUnicode_DecodeMBCSStateful
- PyUnicode_DecodeRawUnicodeEscape=python39.PyUnicode_DecodeRawUnicodeEscape
- PyUnicode_DecodeUTF16=python39.PyUnicode_DecodeUTF16
- PyUnicode_DecodeUTF16Stateful=python39.PyUnicode_DecodeUTF16Stateful
- PyUnicode_DecodeUTF32=python39.PyUnicode_DecodeUTF32
- PyUnicode_DecodeUTF32Stateful=python39.PyUnicode_DecodeUTF32Stateful
- PyUnicode_DecodeUTF7=python39.PyUnicode_DecodeUTF7
- PyUnicode_DecodeUTF7Stateful=python39.PyUnicode_DecodeUTF7Stateful
- PyUnicode_DecodeUTF8=python39.PyUnicode_DecodeUTF8
- PyUnicode_DecodeUTF8Stateful=python39.PyUnicode_DecodeUTF8Stateful
- PyUnicode_DecodeUnicodeEscape=python39.PyUnicode_DecodeUnicodeEscape
- PyUnicode_EncodeCodePage=python39.PyUnicode_EncodeCodePage
- PyUnicode_EncodeFSDefault=python39.PyUnicode_EncodeFSDefault
- PyUnicode_EncodeLocale=python39.PyUnicode_EncodeLocale
- PyUnicode_FSConverter=python39.PyUnicode_FSConverter
- PyUnicode_FSDecoder=python39.PyUnicode_FSDecoder
- PyUnicode_Find=python39.PyUnicode_Find
- PyUnicode_FindChar=python39.PyUnicode_FindChar
- PyUnicode_Format=python39.PyUnicode_Format
- PyUnicode_FromEncodedObject=python39.PyUnicode_FromEncodedObject
- PyUnicode_FromFormat=python39.PyUnicode_FromFormat
- PyUnicode_FromFormatV=python39.PyUnicode_FromFormatV
- PyUnicode_FromObject=python39.PyUnicode_FromObject
- PyUnicode_FromOrdinal=python39.PyUnicode_FromOrdinal
- PyUnicode_FromString=python39.PyUnicode_FromString
- PyUnicode_FromStringAndSize=python39.PyUnicode_FromStringAndSize
- PyUnicode_FromWideChar=python39.PyUnicode_FromWideChar
- PyUnicode_GetDefaultEncoding=python39.PyUnicode_GetDefaultEncoding
- PyUnicode_GetLength=python39.PyUnicode_GetLength
- PyUnicode_GetSize=python39.PyUnicode_GetSize
- PyUnicode_InternFromString=python39.PyUnicode_InternFromString
- PyUnicode_InternImmortal=python39.PyUnicode_InternImmortal
- PyUnicode_InternInPlace=python39.PyUnicode_InternInPlace
- PyUnicode_IsIdentifier=python39.PyUnicode_IsIdentifier
- PyUnicode_Join=python39.PyUnicode_Join
- PyUnicode_Partition=python39.PyUnicode_Partition
- PyUnicode_RPartition=python39.PyUnicode_RPartition
- PyUnicode_RSplit=python39.PyUnicode_RSplit
- PyUnicode_ReadChar=python39.PyUnicode_ReadChar
- PyUnicode_Replace=python39.PyUnicode_Replace
- PyUnicode_Resize=python39.PyUnicode_Resize
- PyUnicode_RichCompare=python39.PyUnicode_RichCompare
- PyUnicode_Split=python39.PyUnicode_Split
- PyUnicode_Splitlines=python39.PyUnicode_Splitlines
- PyUnicode_Substring=python39.PyUnicode_Substring
- PyUnicode_Tailmatch=python39.PyUnicode_Tailmatch
- PyUnicode_Translate=python39.PyUnicode_Translate
- PyUnicode_Type=python39.PyUnicode_Type DATA
- PyUnicode_WriteChar=python39.PyUnicode_WriteChar
- PyWeakref_GetObject=python39.PyWeakref_GetObject
- PyWeakref_NewProxy=python39.PyWeakref_NewProxy
- PyWeakref_NewRef=python39.PyWeakref_NewRef
- PyWrapperDescr_Type=python39.PyWrapperDescr_Type DATA
- PyWrapper_New=python39.PyWrapper_New
- PyZip_Type=python39.PyZip_Type DATA
- Py_AddPendingCall=python39.Py_AddPendingCall
- Py_AtExit=python39.Py_AtExit
- Py_BuildValue=python39.Py_BuildValue
- Py_CompileString=python39.Py_CompileString
- Py_DecRef=python39.Py_DecRef
- Py_DecodeLocale=python39.Py_DecodeLocale
- Py_EncodeLocale=python39.Py_EncodeLocale
- Py_EndInterpreter=python39.Py_EndInterpreter
- Py_Exit=python39.Py_Exit
- Py_FatalError=python39.Py_FatalError
- Py_FileSystemDefaultEncodeErrors=python39.Py_FileSystemDefaultEncodeErrors DATA
- Py_FileSystemDefaultEncoding=python39.Py_FileSystemDefaultEncoding DATA
- Py_Finalize=python39.Py_Finalize
- Py_FinalizeEx=python39.Py_FinalizeEx
- Py_GetBuildInfo=python39.Py_GetBuildInfo
- Py_GetCompiler=python39.Py_GetCompiler
- Py_GetCopyright=python39.Py_GetCopyright
- Py_GetExecPrefix=python39.Py_GetExecPrefix
- Py_GetPath=python39.Py_GetPath
- Py_GetPlatform=python39.Py_GetPlatform
- Py_GetPrefix=python39.Py_GetPrefix
- Py_GetProgramFullPath=python39.Py_GetProgramFullPath
- Py_GetProgramName=python39.Py_GetProgramName
- Py_GetPythonHome=python39.Py_GetPythonHome
- Py_GetRecursionLimit=python39.Py_GetRecursionLimit
- Py_GetVersion=python39.Py_GetVersion
- Py_HasFileSystemDefaultEncoding=python39.Py_HasFileSystemDefaultEncoding DATA
- Py_IncRef=python39.Py_IncRef
- Py_Initialize=python39.Py_Initialize
- Py_InitializeEx=python39.Py_InitializeEx
- Py_IsInitialized=python39.Py_IsInitialized
- Py_Main=python39.Py_Main
- Py_MakePendingCalls=python39.Py_MakePendingCalls
- Py_NewInterpreter=python39.Py_NewInterpreter
- Py_ReprEnter=python39.Py_ReprEnter
- Py_ReprLeave=python39.Py_ReprLeave
- Py_SetPath=python39.Py_SetPath
- Py_SetProgramName=python39.Py_SetProgramName
- Py_SetPythonHome=python39.Py_SetPythonHome
- Py_SetRecursionLimit=python39.Py_SetRecursionLimit
- Py_SymtableString=python39.Py_SymtableString
- Py_UTF8Mode=python39.Py_UTF8Mode DATA
- Py_VaBuildValue=python39.Py_VaBuildValue
- _PyArg_ParseTupleAndKeywords_SizeT=python39._PyArg_ParseTupleAndKeywords_SizeT
- _PyArg_ParseTuple_SizeT=python39._PyArg_ParseTuple_SizeT
- _PyArg_Parse_SizeT=python39._PyArg_Parse_SizeT
- _PyArg_VaParseTupleAndKeywords_SizeT=python39._PyArg_VaParseTupleAndKeywords_SizeT
- _PyArg_VaParse_SizeT=python39._PyArg_VaParse_SizeT
- _PyErr_BadInternalCall=python39._PyErr_BadInternalCall
- _PyObject_CallFunction_SizeT=python39._PyObject_CallFunction_SizeT
- _PyObject_CallMethod_SizeT=python39._PyObject_CallMethod_SizeT
- _PyObject_GC_Malloc=python39._PyObject_GC_Malloc
- _PyObject_GC_New=python39._PyObject_GC_New
- _PyObject_GC_NewVar=python39._PyObject_GC_NewVar
- _PyObject_GC_Resize=python39._PyObject_GC_Resize
- _PyObject_New=python39._PyObject_New
- _PyObject_NewVar=python39._PyObject_NewVar
- _PyState_AddModule=python39._PyState_AddModule
- _PyThreadState_Init=python39._PyThreadState_Init
- _PyThreadState_Prealloc=python39._PyThreadState_Prealloc
- _PyTrash_delete_later=python39._PyTrash_delete_later DATA
- _PyTrash_delete_nesting=python39._PyTrash_delete_nesting DATA
- _PyTrash_deposit_object=python39._PyTrash_deposit_object
- _PyTrash_destroy_chain=python39._PyTrash_destroy_chain
- _PyTrash_thread_deposit_object=python39._PyTrash_thread_deposit_object
- _PyTrash_thread_destroy_chain=python39._PyTrash_thread_destroy_chain
- _PyWeakref_CallableProxyType=python39._PyWeakref_CallableProxyType DATA
- _PyWeakref_ProxyType=python39._PyWeakref_ProxyType DATA
- _PyWeakref_RefType=python39._PyWeakref_RefType DATA
- _Py_BuildValue_SizeT=python39._Py_BuildValue_SizeT
- _Py_CheckRecursionLimit=python39._Py_CheckRecursionLimit DATA
- _Py_CheckRecursiveCall=python39._Py_CheckRecursiveCall
- _Py_Dealloc=python39._Py_Dealloc
- _Py_EllipsisObject=python39._Py_EllipsisObject DATA
- _Py_FalseStruct=python39._Py_FalseStruct DATA
- _Py_NoneStruct=python39._Py_NoneStruct DATA
- _Py_NotImplementedStruct=python39._Py_NotImplementedStruct DATA
- _Py_SwappedOp=python39._Py_SwappedOp DATA
- _Py_TrueStruct=python39._Py_TrueStruct DATA
- _Py_VaBuildValue_SizeT=python39._Py_VaBuildValue_SizeT
diff --git a/PC/python3dll.c b/PC/python3dll.c
deleted file mode 100644
index ef29071..0000000
--- a/PC/python3dll.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include <windows.h>
-
-BOOL WINAPI
-DllMain(HINSTANCE hInstDLL,
- DWORD fdwReason,
- LPVOID lpReserved)
-{
- return TRUE;
-} \ No newline at end of file
diff --git a/PC/python_exe.rc b/PC/python_exe.rc
index ae0b029..14e2574 100644
--- a/PC/python_exe.rc
+++ b/PC/python_exe.rc
@@ -1,49 +1 @@
-// Resource script for Python console EXEs.
-
-#include "python_ver_rc.h"
-
-// Include the manifest file that indicates we support all
-// current versions of Windows.
-#include <winuser.h>
-1 RT_MANIFEST "python.manifest"
-
-1 ICON DISCARDABLE "icons\python.ico"
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Version
-//
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION PYVERSION64
- PRODUCTVERSION PYVERSION64
- FILEFLAGSMASK 0x3fL
-#ifdef _DEBUG
- FILEFLAGS VS_FF_DEBUG
-#else
- FILEFLAGS 0x0L
-#endif
- FILEOS VOS__WINDOWS32
- FILETYPE VFT_APP
- FILESUBTYPE 0x0L
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "000004b0"
- BEGIN
- VALUE "CompanyName", PYTHON_COMPANY "\0"
- VALUE "FileDescription", "Python\0"
- VALUE "FileVersion", PYTHON_VERSION
- VALUE "InternalName", "Python Console\0"
- VALUE "LegalCopyright", PYTHON_COPYRIGHT "\0"
- VALUE "OriginalFilename", "python" PYTHON_DEBUG_EXT ".exe\0"
- VALUE "ProductName", "Python\0"
- VALUE "ProductVersion", PYTHON_VERSION
- END
- END
- BLOCK "VarFileInfo"
- BEGIN
- VALUE "Translation", 0x0, 1200
- END
-END
+1 ICON DISCARDABLE "pycon.ico"
diff --git a/PC/python_nt.rc b/PC/python_nt.rc
index fac6105..2b2be3c 100644
--- a/PC/python_nt.rc
+++ b/PC/python_nt.rc
@@ -1,11 +1,33 @@
// Resource script for Python core DLL.
+// Currently only holds version information.
+//
+#include "winver.h"
+
+#define MS_WINDOWS
+#include "modsupport.h"
+#include "patchlevel.h"
+#ifdef _DEBUG
+# include "pythonnt_rc_d.h"
+#else
+# include "pythonnt_rc.h"
+#endif
-#include "python_ver_rc.h"
+/* e.g., 2.1a2
+ * PY_VERSION comes from patchevel.h
+ */
+#define PYTHON_VERSION PY_VERSION "\0"
-// Include the manifest file that indicates we support all
-// current versions of Windows.
-#include <winuser.h>
-2 RT_MANIFEST "python.manifest"
+/* 64-bit version number as comma-separated list of 4 16-bit ints */
+#if PY_MICRO_VERSION > 64
+# error "PY_MICRO_VERSION > 64"
+#endif
+#if PY_RELEASE_LEVEL > 99
+# error "PY_RELEASE_LEVEL > 99"
+#endif
+#if PY_RELEASE_SERIAL > 9
+# error "PY_RELEASE_SERIAL > 9"
+#endif
+#define PYVERSION64 PY_MAJOR_VERSION, PY_MINOR_VERSION, FIELD3, PYTHON_API_VERSION
// String Tables
STRINGTABLE DISCARDABLE
@@ -23,23 +45,23 @@ VS_VERSION_INFO VERSIONINFO
PRODUCTVERSION PYVERSION64
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
- FILEFLAGS VS_FF_DEBUG
+ FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
- FILEOS VOS__WINDOWS32
- FILETYPE VFT_DLL
+ FILEOS 0x40004L
+ FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "000004b0"
BEGIN
- VALUE "CompanyName", PYTHON_COMPANY "\0"
+ VALUE "CompanyName", "Python Software Foundation\0"
VALUE "FileDescription", "Python Core\0"
VALUE "FileVersion", PYTHON_VERSION
VALUE "InternalName", "Python DLL\0"
- VALUE "LegalCopyright", PYTHON_COPYRIGHT "\0"
+ VALUE "LegalCopyright", "Copyright © 2001-2017 Python Software Foundation. Copyright © 2000 BeOpen.com. Copyright © 1995-2001 CNRI. Copyright © 1991-1995 SMC.\0"
VALUE "OriginalFilename", PYTHON_DLL_NAME "\0"
VALUE "ProductName", "Python\0"
VALUE "ProductVersion", PYTHON_VERSION
diff --git a/PC/python_uwp.cpp b/PC/python_uwp.cpp
deleted file mode 100644
index 88369e8..0000000
--- a/PC/python_uwp.cpp
+++ /dev/null
@@ -1,263 +0,0 @@
-/* Main program when embedded in a UWP application on Windows */
-
-#include "Python.h"
-#include <string.h>
-
-#define WIN32_LEAN_AND_MEAN
-#include <Windows.h>
-#include <shellapi.h>
-#include <shlobj.h>
-
-#include <string>
-
-#include <winrt\Windows.ApplicationModel.h>
-#include <winrt\Windows.Storage.h>
-
-#ifdef PYTHONW
-#ifdef _DEBUG
-const wchar_t *PROGNAME = L"pythonw_d.exe";
-#else
-const wchar_t *PROGNAME = L"pythonw.exe";
-#endif
-#else
-#ifdef _DEBUG
-const wchar_t *PROGNAME = L"python_d.exe";
-#else
-const wchar_t *PROGNAME = L"python.exe";
-#endif
-#endif
-
-static std::wstring
-get_user_base()
-{
- try {
- const auto appData = winrt::Windows::Storage::ApplicationData::Current();
- if (appData) {
- const auto localCache = appData.LocalCacheFolder();
- if (localCache) {
- auto path = localCache.Path();
- if (!path.empty()) {
- return std::wstring(path) + L"\\local-packages";
- }
- }
- }
- } catch (...) {
- }
- return std::wstring();
-}
-
-static std::wstring
-get_package_family()
-{
- try {
- const auto package = winrt::Windows::ApplicationModel::Package::Current();
- if (package) {
- const auto id = package.Id();
- if (id) {
- return std::wstring(id.FamilyName());
- }
- }
- }
- catch (...) {
- }
-
- return std::wstring();
-}
-
-static std::wstring
-get_package_home()
-{
- try {
- const auto package = winrt::Windows::ApplicationModel::Package::Current();
- if (package) {
- const auto path = package.InstalledLocation();
- if (path) {
- return std::wstring(path.Path());
- }
- }
- }
- catch (...) {
- }
-
- return std::wstring();
-}
-
-static PyStatus
-set_process_name(PyConfig *config)
-{
- PyStatus status = PyStatus_Ok();
- std::wstring executable;
-
- const auto home = get_package_home();
- const auto family = get_package_family();
-
- if (!family.empty()) {
- PWSTR localAppData;
- if (SUCCEEDED(SHGetKnownFolderPath(FOLDERID_LocalAppData, 0,
- NULL, &localAppData))) {
- executable = std::wstring(localAppData)
- + L"\\Microsoft\\WindowsApps\\"
- + family
- + L"\\"
- + PROGNAME;
-
- CoTaskMemFree(localAppData);
- }
- }
-
- /* Only use module filename if we don't have a home */
- if (home.empty() && executable.empty()) {
- executable.resize(MAX_PATH);
- while (true) {
- DWORD len = GetModuleFileNameW(
- NULL, executable.data(), (DWORD)executable.size());
- if (len == 0) {
- executable.clear();
- break;
- } else if (len == executable.size() &&
- GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
- executable.resize(len * 2);
- } else {
- executable.resize(len);
- break;
- }
- }
- size_t i = executable.find_last_of(L"/\\");
- if (i == std::wstring::npos) {
- executable = PROGNAME;
- } else {
- executable.replace(i + 1, std::wstring::npos, PROGNAME);
- }
- }
-
- if (!home.empty()) {
- status = PyConfig_SetString(config, &config->home, home.c_str());
- if (PyStatus_Exception(status)) {
- return status;
- }
- }
-
- const wchar_t *launcherPath = _wgetenv(L"__PYVENV_LAUNCHER__");
- if (launcherPath) {
- if (!executable.empty()) {
- status = PyConfig_SetString(config, &config->base_executable,
- executable.c_str());
- if (PyStatus_Exception(status)) {
- return status;
- }
- }
-
- status = PyConfig_SetString(
- config, &config->executable, launcherPath);
-
- /* bpo-35873: Clear the environment variable to avoid it being
- * inherited by child processes. */
- _wputenv_s(L"__PYVENV_LAUNCHER__", L"");
- } else if (!executable.empty()) {
- status = PyConfig_SetString(
- config, &config->executable, executable.c_str());
- }
-
- return status;
-}
-
-int
-wmain(int argc, wchar_t **argv)
-{
- PyStatus status;
- PyPreConfig preconfig;
- PyConfig config;
-
- const wchar_t *moduleName = NULL;
- const wchar_t *p = wcsrchr(argv[0], L'\\');
- if (!p) {
- p = argv[0];
- }
- if (p) {
- if (*p == L'\\') {
- p++;
- }
-
- if (wcsnicmp(p, L"pip", 3) == 0) {
- moduleName = L"pip";
- } else if (wcsnicmp(p, L"idle", 4) == 0) {
- moduleName = L"idlelib";
- }
- }
-
- PyPreConfig_InitPythonConfig(&preconfig);
- if (!moduleName) {
- status = Py_PreInitializeFromArgs(&preconfig, argc, argv);
- if (PyStatus_Exception(status)) {
- goto fail_without_config;
- }
- }
-
- PyConfig_InitPythonConfig(&config);
-
- status = PyConfig_SetArgv(&config, argc, argv);
- if (PyStatus_Exception(status)) {
- goto fail;
- }
- if (moduleName) {
- config.parse_argv = 0;
- }
-
- status = set_process_name(&config);
- if (PyStatus_Exception(status)) {
- goto fail;
- }
-
- p = _wgetenv(L"PYTHONUSERBASE");
- if (!p || !*p) {
- _wputenv_s(L"PYTHONUSERBASE", get_user_base().c_str());
- }
-
- if (moduleName) {
- status = PyConfig_SetString(&config, &config.run_module, moduleName);
- if (PyStatus_Exception(status)) {
- goto fail;
- }
- status = PyConfig_SetString(&config, &config.run_filename, NULL);
- if (PyStatus_Exception(status)) {
- goto fail;
- }
- status = PyConfig_SetString(&config, &config.run_command, NULL);
- if (PyStatus_Exception(status)) {
- goto fail;
- }
- }
-
- status = Py_InitializeFromConfig(&config);
- if (PyStatus_Exception(status)) {
- goto fail;
- }
- PyConfig_Clear(&config);
-
- return Py_RunMain();
-
-fail:
- PyConfig_Clear(&config);
-fail_without_config:
- if (PyStatus_IsExit(status)) {
- return status.exitcode;
- }
- assert(PyStatus_Exception(status));
- Py_ExitStatusException(status);
- /* Unreachable code */
- return 0;
-}
-
-#ifdef PYTHONW
-
-int WINAPI wWinMain(
- HINSTANCE hInstance, /* handle to current instance */
- HINSTANCE hPrevInstance, /* handle to previous instance */
- LPWSTR lpCmdLine, /* pointer to command line */
- int nCmdShow /* show state of window */
-)
-{
- return wmain(__argc, __wargv);
-}
-
-#endif
diff --git a/PC/python_ver_rc.h b/PC/python_ver_rc.h
deleted file mode 100644
index f95e755..0000000
--- a/PC/python_ver_rc.h
+++ /dev/null
@@ -1,34 +0,0 @@
-// Resource script for Python core DLL.
-// Currently only holds version information.
-//
-#include "winver.h"
-
-#define PYTHON_COMPANY "Python Software Foundation"
-#define PYTHON_COPYRIGHT "Copyright \xA9 2001-2016 Python Software Foundation. Copyright \xA9 2000 BeOpen.com. Copyright \xA9 1995-2001 CNRI. Copyright \xA9 1991-1995 SMC."
-
-#define MS_WINDOWS
-#include "modsupport.h"
-#include "patchlevel.h"
-#include <pythonnt_rc.h>
-#ifdef _DEBUG
-# define PYTHON_DEBUG_EXT "_d"
-#else
-# define PYTHON_DEBUG_EXT
-#endif
-
-/* e.g., 3.3.0a1
- * PY_VERSION comes from patchlevel.h
- */
-#define PYTHON_VERSION PY_VERSION "\0"
-
-/* 64-bit version number as comma-separated list of 4 16-bit ints */
-#if PY_MICRO_VERSION > 64
-# error "PY_MICRO_VERSION > 64"
-#endif
-#if PY_RELEASE_LEVEL > 99
-# error "PY_RELEASE_LEVEL > 99"
-#endif
-#if PY_RELEASE_SERIAL > 9
-# error "PY_RELEASE_SERIAL > 9"
-#endif
-#define PYVERSION64 PY_MAJOR_VERSION, PY_MINOR_VERSION, FIELD3, PYTHON_API_VERSION
diff --git a/PC/pythonw_exe.rc b/PC/pythonw_exe.rc
deleted file mode 100644
index 88bf359..0000000
--- a/PC/pythonw_exe.rc
+++ /dev/null
@@ -1,49 +0,0 @@
-// Resource script for Python console EXEs.
-
-#include "python_ver_rc.h"
-
-// Include the manifest file that indicates we support all
-// current versions of Windows.
-#include <winuser.h>
-1 RT_MANIFEST "python.manifest"
-
-1 ICON DISCARDABLE "icons\pythonw.ico"
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Version
-//
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION PYVERSION64
- PRODUCTVERSION PYVERSION64
- FILEFLAGSMASK 0x3fL
-#ifdef _DEBUG
- FILEFLAGS VS_FF_DEBUG
-#else
- FILEFLAGS 0x0L
-#endif
- FILEOS VOS__WINDOWS32
- FILETYPE VFT_APP
- FILESUBTYPE 0x0L
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "000004b0"
- BEGIN
- VALUE "CompanyName", PYTHON_COMPANY "\0"
- VALUE "FileDescription", "Python\0"
- VALUE "FileVersion", PYTHON_VERSION
- VALUE "InternalName", "Python Application\0"
- VALUE "LegalCopyright", PYTHON_COPYRIGHT "\0"
- VALUE "OriginalFilename", "pythonw" PYTHON_DEBUG_EXT ".exe\0"
- VALUE "ProductName", "Python\0"
- VALUE "ProductVersion", PYTHON_VERSION
- END
- END
- BLOCK "VarFileInfo"
- BEGIN
- VALUE "Translation", 0x0, 1200
- END
-END
diff --git a/PC/readme.txt b/PC/readme.txt
index 0a96d26..5b6f88c 100644
--- a/PC/readme.txt
+++ b/PC/readme.txt
@@ -63,7 +63,7 @@ Additional files and subdirectories for 32-bit Windows
python_nt.rc Resource compiler input for python15.dll.
-dl_nt.c
+dl_nt.c, import_nt.c
Additional sources used for 32-bit Windows features.
getpathp.c Default sys.path calculations (for all PC platforms).
@@ -72,6 +72,24 @@ dllbase_nt.txt A (manually maintained) list of base addresses for
various DLLs, to avoid run-time relocation.
+Legacy support for older versions of Visual Studio
+==================================================
+The subdirectories VC6, VS7.1 and VS8.0 contain legacy support older
+versions of Microsoft Visual Studio. See PCbuild/readme.txt.
+
+EMX development tools for OS/2
+==============================
+
+See os2emx/readme.txt. This platform is maintained by Andrew MacIntyre.
+
+IBM VisualAge C/C++ for OS/2
+============================
+
+See os2vacpp/readme.txt. This platform is supported by Jeff Rush.
+
+NOTE: Support for os2vacpp may be dropped in the near future. Please move
+ to EMX.
+
Note for Windows 3.x and DOS users
==================================
diff --git a/PC/sqlite3.rc b/PC/sqlite3.rc
deleted file mode 100644
index 84bd87d..0000000
--- a/PC/sqlite3.rc
+++ /dev/null
@@ -1,49 +0,0 @@
-// Resource script for Sqlite DLL.
-
-#include <winver.h>
-
-// Include the manifest file that indicates we support all
-// current versions of Windows.
-#include <winuser.h>
-2 RT_MANIFEST "python.manifest"
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Version
-//
-
-#define _S(x) #x
-#define S(x) _S(x)
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION SQLITE_MAJOR_VERSION, SQLITE_MINOR_VERSION, SQLITE_MICRO_VERSION, SQLITE_PATCH_VERSION
- PRODUCTVERSION SQLITE_MAJOR_VERSION, SQLITE_MINOR_VERSION, SQLITE_MICRO_VERSION, SQLITE_PATCH_VERSION
- FILEFLAGSMASK 0x3fL
-#ifdef _DEBUG
- FILEFLAGS VS_FF_DEBUG
-#else
- FILEFLAGS 0x0L
-#endif
- FILEOS VOS__WINDOWS32
- FILETYPE VFT_DLL
- FILESUBTYPE 0x0L
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "000004b0"
- BEGIN
- VALUE "CompanyName", "SQLite3\0"
- VALUE "FileDescription", "SQLite3\0"
- VALUE "FileVersion", S(SQLITE_VERSION) "\0"
- VALUE "InternalName", "SQLite3 DLL\0"
- VALUE "LegalCopyright", "Unspecified\0"
- VALUE "OriginalFilename", "sqlite3.dll\0"
- VALUE "ProductName", "SQLite3\0"
- VALUE "ProductVersion", S(SQLITE_VERSION) "\0"
- END
- END
- BLOCK "VarFileInfo"
- BEGIN
- VALUE "Translation", 0x0, 1200
- END
-END
diff --git a/PC/store_info.txt b/PC/store_info.txt
deleted file mode 100644
index 8c20412..0000000
--- a/PC/store_info.txt
+++ /dev/null
@@ -1,156 +0,0 @@
-# Overview
-
-NOTE: This file requires more content.
-
-Since Python 3.7.2, releases have been made through the Microsoft Store
-to allow easy installation on Windows 10.0.17763.0 and later.
-
-# Building
-
-To build the store package, the PC/layout script should be used.
-Execute the directory with the build of Python to package, and pass
-"-h" for full command-line options.
-
-To sideload test builds, you will need a local certificate.
-Instructions are available at
-https://docs.microsoft.com/windows/uwp/packaging/create-certificate-package-signing.
-
-After exporting your certificate, you will need the subject name and
-SHA256 hash. The `certutil -dump <cert file>` command will display this
-information.
-
-To build for sideloading, use these commands in PowerShell:
-
-```
-$env:APPX_DATA_PUBLISHER=<your certificate subject name>
-$env:APPX_DATA_SHA256=<your certificate SHA256>
-$env:SigningCertificateFile=<your certificate file>
-
-python PC/layout --copy <layout directory> --include-appxmanifest
-Tools/msi/make_appx.ps1 <layout directory> python.msix -sign
-
-Add-AppxPackage python.msix
-```
-
-(Note that only the last command requires PowerShell, and the others
-can be used from Command Prompt. You can also double-click to install
-the final package.)
-
-To build for publishing to the Store, use these commands:
-
-```
-$env:APPX_DATA_PUBLISHER = $null
-$env:APPX_DATA_SHA256 = $null
-
-python PC/layout --copy <layout directory> --preset-appxmanifest --precompile
-Tools/msi/make_appx.ps1 <layout directory> python.msix
-```
-
-Note that this package cannot be installed locally. It may only be
-added to a submission for the store.
-
-
-# Submission Metadata
-
-This file contains the text that we use to fill out the store listing
-for the Microsoft Store. It needs to be entered manually when creating
-a new submission via the dashboard at
-https://partner.microsoft.com/dashboard.
-
-We keep it here for convenience and to allow it to be updated via pull
-requests.
-
-When submitting a new app, the HeadlessAppBypass waiver will be needed.
-To request this, send an email to PartnerOps@microsoft.com with the app
-ID (12 character token available from the dashboard). The waiver needs
-to be applied *before* uploading the package (as of November 2019).
-
-Ensure that the new app is named "Python.3.X", where X is the minor
-version of the release. If the name provided initially does not match
-the name used when building the package, the upload will fail. The
-display name shown to users can be set later.
-
-## Title
-
-Python 3.9
-
-## Short Title
-
-Python
-
-## Description
-
-Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python’s elegant syntax and dynamic typing, together with its interpreted nature, make it an ideal language for scripting and rapid application development in many areas on most platforms.
-
-The Python interpreter and the extensive standard library are freely available in source or binary form for all major platforms from the Python Web site, https://www.python.org/, and may be freely distributed. The same site also contains distributions of and pointers to many free third party Python modules, programs and tools, and additional documentation.
-
-The Python interpreter is easily extended with new functions and data types implemented in C or C++ (or other languages callable from C). Python is also suitable as an extension language for customizable applications.
-
-## ShortDescription
-
-The Python 3.9 interpreter and runtime.
-
-## Copyright Trademark Information
-
-(c) Python Software Foundation
-
-## Additional License Terms
-
-Visit https://docs.python.org/3.9/license.html for latest license terms.
-
-PSF LICENSE AGREEMENT FOR PYTHON 3.9
-
-1. This LICENSE AGREEMENT is between the Python Software Foundation ("PSF"), and
- the Individual or Organization ("Licensee") accessing and otherwise using Python
- 3.9 software in source or binary form and its associated documentation.
-
-2. Subject to the terms and conditions of this License Agreement, PSF hereby
- grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
- analyze, test, perform and/or display publicly, prepare derivative works,
- distribute, and otherwise use Python 3.9 alone or in any derivative
- version, provided, however, that PSF's License Agreement and PSF's notice of
- copyright, i.e., "Copyright © 2001-2018 Python Software Foundation; All Rights
- Reserved" are retained in Python 3.9 alone or in any derivative version
- prepared by Licensee.
-
-3. In the event Licensee prepares a derivative work that is based on or
- incorporates Python 3.9 or any part thereof, and wants to make the
- derivative work available to others as provided herein, then Licensee hereby
- agrees to include in any such work a brief summary of the changes made to Python
- 3.9.
-
-4. PSF is making Python 3.9 available to Licensee on an "AS IS" basis.
- PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF
- EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR
- WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE
- USE OF PYTHON 3.9 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
-
-5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON 3.9
- FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF
- MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 3.9, OR ANY DERIVATIVE
- THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
-
-6. This License Agreement will automatically terminate upon a material breach of
- its terms and conditions.
-
-7. Nothing in this License Agreement shall be deemed to create any relationship
- of agency, partnership, or joint venture between PSF and Licensee. This License
- Agreement does not grant permission to use PSF trademarks or trade name in a
- trademark sense to endorse or promote products or services of Licensee, or any
- third party.
-
-8. By copying, installing or otherwise using Python 3.9, Licensee agrees
- to be bound by the terms and conditions of this License Agreement.
-
-## Features
-
-* Easy to install Python runtime
-* Supported by core CPython team
-* Find Python, Pip and Idle on PATH
-
-## Search Terms
-
-* Python
-* Scripting
-* Interpreter
-
diff --git a/PC/testpy.py b/PC/testpy.py
index 709f35c..78ad63c 100644
--- a/PC/testpy.py
+++ b/PC/testpy.py
@@ -7,17 +7,19 @@ import sys
try:
import os
except:
- print("""Could not import the standard "os" module.
- Please check your PYTHONPATH environment variable.""")
+ print """Could not import the standard "os" module.
+ Please check your PYTHONPATH environment variable."""
sys.exit(1)
try:
import symbol
except:
- print("""Could not import the standard "symbol" module. If this is
- a PC, you should add the dos_8x3 directory to your PYTHONPATH.""")
+ print """Could not import the standard "symbol" module. If this is
+ a PC, you should add the dos_8x3 directory to your PYTHONPATH."""
sys.exit(1)
+import os
+
for dir in sys.path:
file = os.path.join(dir, "os.py")
if os.path.isfile(file):
@@ -26,5 +28,5 @@ for dir in sys.path:
# Add the "test" directory to PYTHONPATH.
sys.path = sys.path + [test]
-import libregrtest # Standard Python tester.
-libregrtest.main()
+import regrtest # Standard Python tester.
+regrtest.main()
diff --git a/PC/validate_ucrtbase.py b/PC/validate_ucrtbase.py
deleted file mode 100644
index 0ba54ab..0000000
--- a/PC/validate_ucrtbase.py
+++ /dev/null
@@ -1,89 +0,0 @@
-'''
-This script gets the version number from ucrtbased.dll and checks
-whether it is a version with a known issue.
-'''
-
-import sys
-
-from ctypes import (c_buffer, POINTER, byref, create_unicode_buffer,
- Structure, WinDLL)
-from ctypes.wintypes import DWORD, HANDLE
-
-class VS_FIXEDFILEINFO(Structure):
- _fields_ = [
- ("dwSignature", DWORD),
- ("dwStrucVersion", DWORD),
- ("dwFileVersionMS", DWORD),
- ("dwFileVersionLS", DWORD),
- ("dwProductVersionMS", DWORD),
- ("dwProductVersionLS", DWORD),
- ("dwFileFlagsMask", DWORD),
- ("dwFileFlags", DWORD),
- ("dwFileOS", DWORD),
- ("dwFileType", DWORD),
- ("dwFileSubtype", DWORD),
- ("dwFileDateMS", DWORD),
- ("dwFileDateLS", DWORD),
- ]
-
-kernel32 = WinDLL('kernel32')
-version = WinDLL('version')
-
-if len(sys.argv) < 2:
- print('Usage: validate_ucrtbase.py <ucrtbase|ucrtbased>')
- sys.exit(2)
-
-try:
- ucrtbased = WinDLL(sys.argv[1])
-except OSError:
- print('Cannot find ucrtbased.dll')
- # This likely means that VS is not installed, but that is an
- # obvious enough problem if you're trying to produce a debug
- # build that we don't need to fail here.
- sys.exit(0)
-
-# We will immediately double the length up to MAX_PATH, but the
-# path may be longer, so we retry until the returned string is
-# shorter than our buffer.
-name_len = actual_len = 130
-while actual_len == name_len:
- name_len *= 2
- name = create_unicode_buffer(name_len)
- actual_len = kernel32.GetModuleFileNameW(HANDLE(ucrtbased._handle),
- name, len(name))
- if not actual_len:
- print('Failed to get full module name.')
- sys.exit(2)
-
-size = version.GetFileVersionInfoSizeW(name, None)
-if not size:
- print('Failed to get size of version info.')
- sys.exit(2)
-
-ver_block = c_buffer(size)
-if (not version.GetFileVersionInfoW(name, None, size, ver_block) or
- not ver_block):
- print('Failed to get version info.')
- sys.exit(2)
-
-pvi = POINTER(VS_FIXEDFILEINFO)()
-if not version.VerQueryValueW(ver_block, "", byref(pvi), byref(DWORD())):
- print('Failed to get version value from info.')
- sys.exit(2)
-
-ver = (
- pvi.contents.dwProductVersionMS >> 16,
- pvi.contents.dwProductVersionMS & 0xFFFF,
- pvi.contents.dwProductVersionLS >> 16,
- pvi.contents.dwProductVersionLS & 0xFFFF,
-)
-
-print('{} is version {}.{}.{}.{}'.format(name.value, *ver))
-
-if ver < (10, 0, 10586):
- print('WARN: ucrtbased contains known issues. '
- 'Please update the Windows 10 SDK.')
- print('See:')
- print(' http://bugs.python.org/issue27705')
- print(' https://developer.microsoft.com/en-US/windows/downloads/windows-10-sdk')
- sys.exit(1)
diff --git a/PC/w9xpopen.c b/PC/w9xpopen.c
new file mode 100644
index 0000000..b3978dd
--- /dev/null
+++ b/PC/w9xpopen.c
@@ -0,0 +1,112 @@
+/*
+ * w9xpopen.c
+ *
+ * Serves as an intermediate stub Win32 console application to
+ * avoid a hanging pipe when redirecting 16-bit console based
+ * programs (including MS-DOS console based programs and batch
+ * files) on Window 95 and Windows 98.
+ *
+ * This program is to be launched with redirected standard
+ * handles. It will launch the command line specified 16-bit
+ * console based application in the same console, forwarding
+ * its own redirected standard handles to the 16-bit child.
+
+ * AKA solution to the problem described in KB: Q150956.
+ */
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <stdio.h>
+#include <stdlib.h> /* for malloc and its friends */
+
+const char *usage =
+"This program is used by Python's os.popen function\n"
+"to work around a limitation in Windows 95/98. It is\n"
+"not designed to be used as a stand-alone program.";
+
+int main(int argc, char *argv[])
+{
+ BOOL bRet;
+ STARTUPINFO si;
+ PROCESS_INFORMATION pi;
+ DWORD exit_code=0;
+ size_t cmdlen = 0;
+ int i;
+ char *cmdline, *cmdlinefill;
+
+ if (argc < 2) {
+ if (GetFileType(GetStdHandle(STD_INPUT_HANDLE))==FILE_TYPE_CHAR)
+ /* Attached to a console, and therefore not executed by Python
+ Display a message box for the inquisitive user
+ */
+ MessageBox(NULL, usage, argv[0], MB_OK);
+ else {
+ /* Eeek - executed by Python, but args are screwed!
+ Write an error message to stdout so there is at
+ least some clue for the end user when it appears
+ in their output.
+ A message box would be hidden and blocks the app.
+ */
+ fprintf(stdout, "Internal popen error - no args specified\n%s\n", usage);
+ }
+ return 1;
+ }
+ /* Build up the command-line from the args.
+ Args with a space are quoted, existing quotes are escaped.
+ To keep things simple calculating the buffer size, we assume
+ every character is a quote - ie, we allocate double what we need
+ in the worst case. As this is only double the command line passed
+ to us, there is a good chance this is reasonably small, so the total
+ allocation will almost always be < 512 bytes.
+ */
+ for (i=1;i<argc;i++)
+ cmdlen += strlen(argv[i])*2 + 3; /* one space, maybe 2 quotes */
+ cmdline = cmdlinefill = (char *)malloc(cmdlen+1);
+ if (cmdline == NULL)
+ return -1;
+ for (i=1;i<argc;i++) {
+ const char *arglook;
+ int bQuote = strchr(argv[i], ' ') != NULL;
+ if (bQuote)
+ *cmdlinefill++ = '"';
+ /* escape quotes */
+ for (arglook=argv[i];*arglook;arglook++) {
+ if (*arglook=='"')
+ *cmdlinefill++ = '\\';
+ *cmdlinefill++ = *arglook;
+ }
+ if (bQuote)
+ *cmdlinefill++ = '"';
+ *cmdlinefill++ = ' ';
+ }
+ *cmdlinefill = '\0';
+
+ /* Make child process use this app's standard files. */
+ ZeroMemory(&si, sizeof si);
+ si.cb = sizeof si;
+ si.dwFlags = STARTF_USESTDHANDLES;
+ si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
+ si.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
+ si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
+
+ bRet = CreateProcess(
+ NULL, cmdline,
+ NULL, NULL,
+ TRUE, 0,
+ NULL, NULL,
+ &si, &pi
+ );
+
+ free(cmdline);
+
+ if (bRet) {
+ if (WaitForSingleObject(pi.hProcess, INFINITE) != WAIT_FAILED) {
+ GetExitCodeProcess(pi.hProcess, &exit_code);
+ }
+ CloseHandle(pi.hProcess);
+ CloseHandle(pi.hThread);
+ return exit_code;
+ }
+
+ return 1;
+}
diff --git a/PC/winreg.c b/PC/winreg.c
deleted file mode 100644
index 5dff7de..0000000
--- a/PC/winreg.c
+++ /dev/null
@@ -1,2088 +0,0 @@
-/*
- winreg.c
-
- Windows Registry access module for Python.
-
- * Simple registry access written by Mark Hammond in win32api
- module circa 1995.
- * Bill Tutt expanded the support significantly not long after.
- * Numerous other people have submitted patches since then.
- * Ripped from win32api module 03-Feb-2000 by Mark Hammond, and
- basic Unicode support added.
-
-*/
-
-#define PY_SSIZE_T_CLEAN
-#include "Python.h"
-#include "structmember.h"
-#include "windows.h"
-
-static BOOL PyHKEY_AsHKEY(PyObject *ob, HKEY *pRes, BOOL bNoneOK);
-static BOOL clinic_HKEY_converter(PyObject *ob, void *p);
-static PyObject *PyHKEY_FromHKEY(HKEY h);
-static BOOL PyHKEY_Close(PyObject *obHandle);
-
-static char errNotAHandle[] = "Object is not a handle";
-
-/* The win32api module reports the function name that failed,
- but this concept is not in the Python core.
- Hopefully it will one day, and in the meantime I don't
- want to lose this info...
-*/
-#define PyErr_SetFromWindowsErrWithFunction(rc, fnname) \
- PyErr_SetFromWindowsErr(rc)
-
-/* Forward declares */
-
-/* Doc strings */
-PyDoc_STRVAR(module_doc,
-"This module provides access to the Windows registry API.\n"
-"\n"
-"Functions:\n"
-"\n"
-"CloseKey() - Closes a registry key.\n"
-"ConnectRegistry() - Establishes a connection to a predefined registry handle\n"
-" on another computer.\n"
-"CreateKey() - Creates the specified key, or opens it if it already exists.\n"
-"DeleteKey() - Deletes the specified key.\n"
-"DeleteValue() - Removes a named value from the specified registry key.\n"
-"EnumKey() - Enumerates subkeys of the specified open registry key.\n"
-"EnumValue() - Enumerates values of the specified open registry key.\n"
-"ExpandEnvironmentStrings() - Expand the env strings in a REG_EXPAND_SZ\n"
-" string.\n"
-"FlushKey() - Writes all the attributes of the specified key to the registry.\n"
-"LoadKey() - Creates a subkey under HKEY_USER or HKEY_LOCAL_MACHINE and\n"
-" stores registration information from a specified file into that\n"
-" subkey.\n"
-"OpenKey() - Opens the specified key.\n"
-"OpenKeyEx() - Alias of OpenKey().\n"
-"QueryValue() - Retrieves the value associated with the unnamed value for a\n"
-" specified key in the registry.\n"
-"QueryValueEx() - Retrieves the type and data for a specified value name\n"
-" associated with an open registry key.\n"
-"QueryInfoKey() - Returns information about the specified key.\n"
-"SaveKey() - Saves the specified key, and all its subkeys a file.\n"
-"SetValue() - Associates a value with a specified key.\n"
-"SetValueEx() - Stores data in the value field of an open registry key.\n"
-"\n"
-"Special objects:\n"
-"\n"
-"HKEYType -- type object for HKEY objects\n"
-"error -- exception raised for Win32 errors\n"
-"\n"
-"Integer constants:\n"
-"Many constants are defined - see the documentation for each function\n"
-"to see what constants are used, and where.");
-
-
-
-/* PyHKEY docstrings */
-PyDoc_STRVAR(PyHKEY_doc,
-"PyHKEY Object - A Python object, representing a win32 registry key.\n"
-"\n"
-"This object wraps a Windows HKEY object, automatically closing it when\n"
-"the object is destroyed. To guarantee cleanup, you can call either\n"
-"the Close() method on the PyHKEY, or the CloseKey() method.\n"
-"\n"
-"All functions which accept a handle object also accept an integer --\n"
-"however, use of the handle object is encouraged.\n"
-"\n"
-"Functions:\n"
-"Close() - Closes the underlying handle.\n"
-"Detach() - Returns the integer Win32 handle, detaching it from the object\n"
-"\n"
-"Properties:\n"
-"handle - The integer Win32 handle.\n"
-"\n"
-"Operations:\n"
-"__bool__ - Handles with an open object return true, otherwise false.\n"
-"__int__ - Converting a handle to an integer returns the Win32 handle.\n"
-"rich comparison - Handle objects are compared using the handle value.");
-
-
-
-/************************************************************************
-
- The PyHKEY object definition
-
-************************************************************************/
-typedef struct {
- PyObject_VAR_HEAD
- HKEY hkey;
-} PyHKEYObject;
-
-#define PyHKEY_Check(op) ((op)->ob_type == &PyHKEY_Type)
-
-static char *failMsg = "bad operand type";
-
-static PyObject *
-PyHKEY_unaryFailureFunc(PyObject *ob)
-{
- PyErr_SetString(PyExc_TypeError, failMsg);
- return NULL;
-}
-static PyObject *
-PyHKEY_binaryFailureFunc(PyObject *ob1, PyObject *ob2)
-{
- PyErr_SetString(PyExc_TypeError, failMsg);
- return NULL;
-}
-static PyObject *
-PyHKEY_ternaryFailureFunc(PyObject *ob1, PyObject *ob2, PyObject *ob3)
-{
- PyErr_SetString(PyExc_TypeError, failMsg);
- return NULL;
-}
-
-static void
-PyHKEY_deallocFunc(PyObject *ob)
-{
- /* Can not call PyHKEY_Close, as the ob->tp_type
- has already been cleared, thus causing the type
- check to fail!
- */
- PyHKEYObject *obkey = (PyHKEYObject *)ob;
- if (obkey->hkey)
- RegCloseKey((HKEY)obkey->hkey);
- PyObject_DEL(ob);
-}
-
-static int
-PyHKEY_boolFunc(PyObject *ob)
-{
- return ((PyHKEYObject *)ob)->hkey != 0;
-}
-
-static PyObject *
-PyHKEY_intFunc(PyObject *ob)
-{
- PyHKEYObject *pyhkey = (PyHKEYObject *)ob;
- return PyLong_FromVoidPtr(pyhkey->hkey);
-}
-
-static PyObject *
-PyHKEY_strFunc(PyObject *ob)
-{
- PyHKEYObject *pyhkey = (PyHKEYObject *)ob;
- return PyUnicode_FromFormat("<PyHKEY:%p>", pyhkey->hkey);
-}
-
-static int
-PyHKEY_compareFunc(PyObject *ob1, PyObject *ob2)
-{
- PyHKEYObject *pyhkey1 = (PyHKEYObject *)ob1;
- PyHKEYObject *pyhkey2 = (PyHKEYObject *)ob2;
- return pyhkey1 == pyhkey2 ? 0 :
- (pyhkey1 < pyhkey2 ? -1 : 1);
-}
-
-static Py_hash_t
-PyHKEY_hashFunc(PyObject *ob)
-{
- /* Just use the address.
- XXX - should we use the handle value?
- */
- return _Py_HashPointer(ob);
-}
-
-
-static PyNumberMethods PyHKEY_NumberMethods =
-{
- PyHKEY_binaryFailureFunc, /* nb_add */
- PyHKEY_binaryFailureFunc, /* nb_subtract */
- PyHKEY_binaryFailureFunc, /* nb_multiply */
- PyHKEY_binaryFailureFunc, /* nb_remainder */
- PyHKEY_binaryFailureFunc, /* nb_divmod */
- PyHKEY_ternaryFailureFunc, /* nb_power */
- PyHKEY_unaryFailureFunc, /* nb_negative */
- PyHKEY_unaryFailureFunc, /* nb_positive */
- PyHKEY_unaryFailureFunc, /* nb_absolute */
- PyHKEY_boolFunc, /* nb_bool */
- PyHKEY_unaryFailureFunc, /* nb_invert */
- PyHKEY_binaryFailureFunc, /* nb_lshift */
- PyHKEY_binaryFailureFunc, /* nb_rshift */
- PyHKEY_binaryFailureFunc, /* nb_and */
- PyHKEY_binaryFailureFunc, /* nb_xor */
- PyHKEY_binaryFailureFunc, /* nb_or */
- PyHKEY_intFunc, /* nb_int */
- 0, /* nb_reserved */
- PyHKEY_unaryFailureFunc, /* nb_float */
-};
-
-/*[clinic input]
-module winreg
-class winreg.HKEYType "PyHKEYObject *" "&PyHKEY_Type"
-[clinic start generated code]*/
-/*[clinic end generated code: output=da39a3ee5e6b4b0d input=4c964eba3bf914d6]*/
-
-/*[python input]
-class REGSAM_converter(CConverter):
- type = 'REGSAM'
- format_unit = 'i'
-
-class DWORD_converter(CConverter):
- type = 'DWORD'
- format_unit = 'k'
-
-class HKEY_converter(CConverter):
- type = 'HKEY'
- converter = 'clinic_HKEY_converter'
-
-class HKEY_return_converter(CReturnConverter):
- type = 'HKEY'
-
- def render(self, function, data):
- self.declare(data)
- self.err_occurred_if_null_pointer("_return_value", data)
- data.return_conversion.append(
- 'return_value = PyHKEY_FromHKEY(_return_value);\n')
-
-# HACK: this only works for PyHKEYObjects, nothing else.
-# Should this be generalized and enshrined in clinic.py,
-# destroy this converter with prejudice.
-class self_return_converter(CReturnConverter):
- type = 'PyHKEYObject *'
-
- def render(self, function, data):
- self.declare(data)
- data.return_conversion.append(
- 'return_value = (PyObject *)_return_value;\n')
-[python start generated code]*/
-/*[python end generated code: output=da39a3ee5e6b4b0d input=22f7aedc6d68e80e]*/
-
-#include "clinic/winreg.c.h"
-
-/************************************************************************
-
- The PyHKEY object methods
-
-************************************************************************/
-/*[clinic input]
-winreg.HKEYType.Close
-
-Closes the underlying Windows handle.
-
-If the handle is already closed, no error is raised.
-[clinic start generated code]*/
-
-static PyObject *
-winreg_HKEYType_Close_impl(PyHKEYObject *self)
-/*[clinic end generated code: output=fced3a624fb0c344 input=6786ac75f6b89de6]*/
-{
- if (!PyHKEY_Close((PyObject *)self))
- return NULL;
- Py_RETURN_NONE;
-}
-
-/*[clinic input]
-winreg.HKEYType.Detach
-
-Detaches the Windows handle from the handle object.
-
-The result is the value of the handle before it is detached. If the
-handle is already detached, this will return zero.
-
-After calling this function, the handle is effectively invalidated,
-but the handle is not closed. You would call this function when you
-need the underlying win32 handle to exist beyond the lifetime of the
-handle object.
-[clinic start generated code]*/
-
-static PyObject *
-winreg_HKEYType_Detach_impl(PyHKEYObject *self)
-/*[clinic end generated code: output=dda5a9e1a01ae78f input=dd2cc09e6c6ba833]*/
-{
- void* ret;
- if (PySys_Audit("winreg.PyHKEY.Detach", "n", (Py_ssize_t)self->hkey) < 0) {
- return NULL;
- }
- ret = (void*)self->hkey;
- self->hkey = 0;
- return PyLong_FromVoidPtr(ret);
-}
-
-/*[clinic input]
-winreg.HKEYType.__enter__ -> self
-[clinic start generated code]*/
-
-static PyHKEYObject *
-winreg_HKEYType___enter___impl(PyHKEYObject *self)
-/*[clinic end generated code: output=52c34986dab28990 input=c40fab1f0690a8e2]*/
-{
- Py_XINCREF(self);
- return self;
-}
-
-
-/*[clinic input]
-winreg.HKEYType.__exit__
-
- exc_type: object
- exc_value: object
- traceback: object
-[clinic start generated code]*/
-
-static PyObject *
-winreg_HKEYType___exit___impl(PyHKEYObject *self, PyObject *exc_type,
- PyObject *exc_value, PyObject *traceback)
-/*[clinic end generated code: output=923ebe7389e6a263 input=fb32489ee92403c7]*/
-{
- if (!PyHKEY_Close((PyObject *)self))
- return NULL;
- Py_RETURN_NONE;
-}
-
-/*[clinic input]
-[clinic start generated code]*/
-/*[clinic end generated code: output=da39a3ee5e6b4b0d input=da39a3ee5e6b4b0d]*/
-
-static struct PyMethodDef PyHKEY_methods[] = {
- WINREG_HKEYTYPE_CLOSE_METHODDEF
- WINREG_HKEYTYPE_DETACH_METHODDEF
- WINREG_HKEYTYPE___ENTER___METHODDEF
- WINREG_HKEYTYPE___EXIT___METHODDEF
- {NULL}
-};
-
-#define OFF(e) offsetof(PyHKEYObject, e)
-static PyMemberDef PyHKEY_memberlist[] = {
- {"handle", T_INT, OFF(hkey), READONLY},
- {NULL} /* Sentinel */
-};
-
-/* The type itself */
-PyTypeObject PyHKEY_Type =
-{
- PyVarObject_HEAD_INIT(0, 0) /* fill in type at module init */
- "PyHKEY",
- sizeof(PyHKEYObject),
- 0,
- PyHKEY_deallocFunc, /* tp_dealloc */
- 0, /* tp_vectorcall_offset */
- 0, /* tp_getattr */
- 0, /* tp_setattr */
- 0, /* tp_as_async */
- 0, /* tp_repr */
- &PyHKEY_NumberMethods, /* tp_as_number */
- 0, /* tp_as_sequence */
- 0, /* tp_as_mapping */
- PyHKEY_hashFunc, /* tp_hash */
- 0, /* tp_call */
- PyHKEY_strFunc, /* tp_str */
- 0, /* tp_getattro */
- 0, /* tp_setattro */
- 0, /* tp_as_buffer */
- 0, /* tp_flags */
- PyHKEY_doc, /* tp_doc */
- 0, /*tp_traverse*/
- 0, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- PyHKEY_methods, /*tp_methods*/
- PyHKEY_memberlist, /*tp_members*/
-};
-
-/************************************************************************
- The public PyHKEY API (well, not public yet :-)
-************************************************************************/
-PyObject *
-PyHKEY_New(HKEY hInit)
-{
- PyHKEYObject *key = PyObject_NEW(PyHKEYObject, &PyHKEY_Type);
- if (key)
- key->hkey = hInit;
- return (PyObject *)key;
-}
-
-BOOL
-PyHKEY_Close(PyObject *ob_handle)
-{
- LONG rc;
- HKEY key;
-
- if (!PyHKEY_AsHKEY(ob_handle, &key, TRUE)) {
- return FALSE;
- }
- if (PyHKEY_Check(ob_handle)) {
- ((PyHKEYObject*)ob_handle)->hkey = 0;
- }
- rc = key ? RegCloseKey(key) : ERROR_SUCCESS;
- if (rc != ERROR_SUCCESS)
- PyErr_SetFromWindowsErrWithFunction(rc, "RegCloseKey");
- return rc == ERROR_SUCCESS;
-}
-
-BOOL
-PyHKEY_AsHKEY(PyObject *ob, HKEY *pHANDLE, BOOL bNoneOK)
-{
- if (ob == Py_None) {
- if (!bNoneOK) {
- PyErr_SetString(
- PyExc_TypeError,
- "None is not a valid HKEY in this context");
- return FALSE;
- }
- *pHANDLE = (HKEY)0;
- }
- else if (PyHKEY_Check(ob)) {
- PyHKEYObject *pH = (PyHKEYObject *)ob;
- *pHANDLE = pH->hkey;
- }
- else if (PyLong_Check(ob)) {
- /* We also support integers */
- PyErr_Clear();
- *pHANDLE = (HKEY)PyLong_AsVoidPtr(ob);
- if (PyErr_Occurred())
- return FALSE;
- }
- else {
- PyErr_SetString(
- PyExc_TypeError,
- "The object is not a PyHKEY object");
- return FALSE;
- }
- return TRUE;
-}
-
-BOOL
-clinic_HKEY_converter(PyObject *ob, void *p)
-{
- if (!PyHKEY_AsHKEY(ob, (HKEY *)p, FALSE))
- return FALSE;
- return TRUE;
-}
-
-PyObject *
-PyHKEY_FromHKEY(HKEY h)
-{
- PyHKEYObject *op;
-
- /* Inline PyObject_New */
- op = (PyHKEYObject *) PyObject_MALLOC(sizeof(PyHKEYObject));
- if (op == NULL)
- return PyErr_NoMemory();
- PyObject_INIT(op, &PyHKEY_Type);
- op->hkey = h;
- return (PyObject *)op;
-}
-
-
-/************************************************************************
- The module methods
-************************************************************************/
-BOOL
-PyWinObject_CloseHKEY(PyObject *obHandle)
-{
- BOOL ok;
- if (PyHKEY_Check(obHandle)) {
- ok = PyHKEY_Close(obHandle);
- }
-#if SIZEOF_LONG >= SIZEOF_HKEY
- else if (PyLong_Check(obHandle)) {
- long rc = RegCloseKey((HKEY)PyLong_AsLong(obHandle));
- ok = (rc == ERROR_SUCCESS);
- if (!ok)
- PyErr_SetFromWindowsErrWithFunction(rc, "RegCloseKey");
- }
-#else
- else if (PyLong_Check(obHandle)) {
- long rc = RegCloseKey((HKEY)PyLong_AsVoidPtr(obHandle));
- ok = (rc == ERROR_SUCCESS);
- if (!ok)
- PyErr_SetFromWindowsErrWithFunction(rc, "RegCloseKey");
- }
-#endif
- else {
- PyErr_SetString(
- PyExc_TypeError,
- "A handle must be a HKEY object or an integer");
- return FALSE;
- }
- return ok;
-}
-
-
-/*
- Private Helper functions for the registry interfaces
-
-** Note that fixupMultiSZ and countString have both had changes
-** made to support "incorrect strings". The registry specification
-** calls for strings to be terminated with 2 null bytes. It seems
-** some commercial packages install strings which don't conform,
-** causing this code to fail - however, "regedit" etc still work
-** with these strings (ie only we don't!).
-*/
-static void
-fixupMultiSZ(wchar_t **str, wchar_t *data, int len)
-{
- wchar_t *P;
- int i;
- wchar_t *Q;
-
- if (len > 0 && data[len - 1] == '\0') {
- Q = data + len - 1;
- }
- else {
- Q = data + len;
- }
-
- for (P = data, i = 0; P < Q; P++, i++) {
- str[i] = P;
- for (; P < Q && *P != '\0'; P++) {
- ;
- }
- }
-}
-
-static int
-countStrings(wchar_t *data, int len)
-{
- int strings;
- wchar_t *P, *Q;
-
- if (len > 0 && data[len - 1] == '\0') {
- Q = data + len - 1;
- }
- else {
- Q = data + len;
- }
-
- for (P = data, strings = 0; P < Q; P++, strings++) {
- for (; P < Q && *P != '\0'; P++) {
- ;
- }
- }
- return strings;
-}
-
-/* Convert PyObject into Registry data.
- Allocates space as needed. */
-static BOOL
-Py2Reg(PyObject *value, DWORD typ, BYTE **retDataBuf, DWORD *retDataSize)
-{
- Py_ssize_t i,j;
- switch (typ) {
- case REG_DWORD:
- if (value != Py_None && !PyLong_Check(value))
- return FALSE;
- *retDataBuf = (BYTE *)PyMem_NEW(DWORD, 1);
- if (*retDataBuf == NULL){
- PyErr_NoMemory();
- return FALSE;
- }
- *retDataSize = sizeof(DWORD);
- if (value == Py_None) {
- DWORD zero = 0;
- memcpy(*retDataBuf, &zero, sizeof(DWORD));
- }
- else {
- DWORD d = PyLong_AsUnsignedLong(value);
- memcpy(*retDataBuf, &d, sizeof(DWORD));
- }
- break;
- case REG_QWORD:
- if (value != Py_None && !PyLong_Check(value))
- return FALSE;
- *retDataBuf = (BYTE *)PyMem_NEW(DWORD64, 1);
- if (*retDataBuf == NULL){
- PyErr_NoMemory();
- return FALSE;
- }
- *retDataSize = sizeof(DWORD64);
- if (value == Py_None) {
- DWORD64 zero = 0;
- memcpy(*retDataBuf, &zero, sizeof(DWORD64));
- }
- else {
- DWORD64 d = PyLong_AsUnsignedLongLong(value);
- memcpy(*retDataBuf, &d, sizeof(DWORD64));
- }
- break;
- case REG_SZ:
- case REG_EXPAND_SZ:
- {
- if (value != Py_None) {
- Py_ssize_t len;
- if (!PyUnicode_Check(value))
- return FALSE;
- *retDataBuf = (BYTE*)PyUnicode_AsWideCharString(value, &len);
- if (*retDataBuf == NULL)
- return FALSE;
- *retDataSize = Py_SAFE_DOWNCAST(
- (len + 1) * sizeof(wchar_t),
- Py_ssize_t, DWORD);
- }
- else {
- *retDataBuf = (BYTE *)PyMem_NEW(wchar_t, 1);
- if (*retDataBuf == NULL) {
- PyErr_NoMemory();
- return FALSE;
- }
- ((wchar_t *)*retDataBuf)[0] = L'\0';
- *retDataSize = 1 * sizeof(wchar_t);
- }
- break;
- }
- case REG_MULTI_SZ:
- {
- DWORD size = 0;
- wchar_t *P;
-
- if (value == Py_None)
- i = 0;
- else {
- if (!PyList_Check(value))
- return FALSE;
- i = PyList_Size(value);
- }
- for (j = 0; j < i; j++)
- {
- PyObject *t;
- wchar_t *wstr;
- Py_ssize_t len;
-
- t = PyList_GET_ITEM(value, j);
- if (!PyUnicode_Check(t))
- return FALSE;
- wstr = PyUnicode_AsUnicodeAndSize(t, &len);
- if (wstr == NULL)
- return FALSE;
- size += Py_SAFE_DOWNCAST((len + 1) * sizeof(wchar_t),
- size_t, DWORD);
- }
-
- *retDataSize = size + 2;
- *retDataBuf = (BYTE *)PyMem_NEW(char,
- *retDataSize);
- if (*retDataBuf == NULL){
- PyErr_NoMemory();
- return FALSE;
- }
- P = (wchar_t *)*retDataBuf;
-
- for (j = 0; j < i; j++)
- {
- PyObject *t;
- wchar_t *wstr;
- Py_ssize_t len;
-
- t = PyList_GET_ITEM(value, j);
- wstr = PyUnicode_AsUnicodeAndSize(t, &len);
- assert(wstr);
- wcscpy(P, wstr);
- P += (len + 1);
- }
- /* And doubly-terminate the list... */
- *P = '\0';
- break;
- }
- case REG_BINARY:
- /* ALSO handle ALL unknown data types here. Even if we can't
- support it natively, we should handle the bits. */
- default:
- if (value == Py_None) {
- *retDataSize = 0;
- *retDataBuf = NULL;
- }
- else {
- Py_buffer view;
-
- if (!PyObject_CheckBuffer(value)) {
- PyErr_Format(PyExc_TypeError,
- "Objects of type '%s' can not "
- "be used as binary registry values",
- value->ob_type->tp_name);
- return FALSE;
- }
-
- if (PyObject_GetBuffer(value, &view, PyBUF_SIMPLE) < 0)
- return FALSE;
-
- *retDataBuf = (BYTE *)PyMem_NEW(char, view.len);
- if (*retDataBuf == NULL){
- PyBuffer_Release(&view);
- PyErr_NoMemory();
- return FALSE;
- }
- *retDataSize = Py_SAFE_DOWNCAST(view.len, Py_ssize_t, DWORD);
- memcpy(*retDataBuf, view.buf, view.len);
- PyBuffer_Release(&view);
- }
- break;
- }
- return TRUE;
-}
-
-/* Convert Registry data into PyObject*/
-static PyObject *
-Reg2Py(BYTE *retDataBuf, DWORD retDataSize, DWORD typ)
-{
- PyObject *obData;
-
- switch (typ) {
- case REG_DWORD:
- if (retDataSize == 0)
- obData = PyLong_FromUnsignedLong(0);
- else
- obData = PyLong_FromUnsignedLong(*(DWORD *)retDataBuf);
- break;
- case REG_QWORD:
- if (retDataSize == 0)
- obData = PyLong_FromUnsignedLongLong(0);
- else
- obData = PyLong_FromUnsignedLongLong(*(DWORD64 *)retDataBuf);
- break;
- case REG_SZ:
- case REG_EXPAND_SZ:
- {
- /* REG_SZ should be a NUL terminated string, but only by
- * convention. The buffer may have been saved without a NUL
- * or with embedded NULs. To be consistent with reg.exe and
- * regedit.exe, consume only up to the first NUL. */
- wchar_t *data = (wchar_t *)retDataBuf;
- size_t len = wcsnlen(data, retDataSize / sizeof(wchar_t));
- obData = PyUnicode_FromWideChar(data, len);
- break;
- }
- case REG_MULTI_SZ:
- if (retDataSize == 0)
- obData = PyList_New(0);
- else
- {
- int index = 0;
- wchar_t *data = (wchar_t *)retDataBuf;
- int len = retDataSize / 2;
- int s = countStrings(data, len);
- wchar_t **str = PyMem_New(wchar_t *, s);
- if (str == NULL)
- return PyErr_NoMemory();
-
- fixupMultiSZ(str, data, len);
- obData = PyList_New(s);
- if (obData == NULL) {
- PyMem_Free(str);
- return NULL;
- }
- for (index = 0; index < s; index++)
- {
- size_t slen = wcsnlen(str[index], len);
- PyObject *uni = PyUnicode_FromWideChar(str[index], slen);
- if (uni == NULL) {
- Py_DECREF(obData);
- PyMem_Free(str);
- return NULL;
- }
- PyList_SET_ITEM(obData, index, uni);
- len -= Py_SAFE_DOWNCAST(slen + 1, size_t, int);
- }
- PyMem_Free(str);
-
- break;
- }
- case REG_BINARY:
- /* ALSO handle ALL unknown data types here. Even if we can't
- support it natively, we should handle the bits. */
- default:
- if (retDataSize == 0) {
- Py_INCREF(Py_None);
- obData = Py_None;
- }
- else
- obData = PyBytes_FromStringAndSize(
- (char *)retDataBuf, retDataSize);
- break;
- }
- return obData;
-}
-
-/* The Python methods */
-
-/*[clinic input]
-winreg.CloseKey
-
- hkey: object
- A previously opened key.
- /
-
-Closes a previously opened registry key.
-
-Note that if the key is not closed using this method, it will be
-closed when the hkey object is destroyed by Python.
-[clinic start generated code]*/
-
-static PyObject *
-winreg_CloseKey(PyObject *module, PyObject *hkey)
-/*[clinic end generated code: output=a4fa537019a80d15 input=5b1aac65ba5127ad]*/
-{
- if (!PyHKEY_Close(hkey))
- return NULL;
- Py_RETURN_NONE;
-}
-
-/*[clinic input]
-winreg.ConnectRegistry -> HKEY
-
- computer_name: Py_UNICODE(accept={str, NoneType})
- The name of the remote computer, of the form r"\\computername". If
- None, the local computer is used.
- key: HKEY
- The predefined key to connect to.
- /
-
-Establishes a connection to the registry on another computer.
-
-The return value is the handle of the opened key.
-If the function fails, an OSError exception is raised.
-[clinic start generated code]*/
-
-static HKEY
-winreg_ConnectRegistry_impl(PyObject *module,
- const Py_UNICODE *computer_name, HKEY key)
-/*[clinic end generated code: output=cd4f70fb9ec901fb input=5f98a891a347e68e]*/
-{
- HKEY retKey;
- long rc;
- if (PySys_Audit("winreg.ConnectRegistry", "un",
- computer_name, (Py_ssize_t)key) < 0) {
- return NULL;
- }
- Py_BEGIN_ALLOW_THREADS
- rc = RegConnectRegistryW(computer_name, key, &retKey);
- Py_END_ALLOW_THREADS
- if (rc != ERROR_SUCCESS) {
- PyErr_SetFromWindowsErrWithFunction(rc, "ConnectRegistry");
- return NULL;
- }
- return retKey;
-}
-
-/*[clinic input]
-winreg.CreateKey -> HKEY
-
- key: HKEY
- An already open key, or one of the predefined HKEY_* constants.
- sub_key: Py_UNICODE(accept={str, NoneType})
- The name of the key this method opens or creates.
- /
-
-Creates or opens the specified key.
-
-If key is one of the predefined keys, sub_key may be None. In that case,
-the handle returned is the same key handle passed in to the function.
-
-If the key already exists, this function opens the existing key.
-
-The return value is the handle of the opened key.
-If the function fails, an OSError exception is raised.
-[clinic start generated code]*/
-
-static HKEY
-winreg_CreateKey_impl(PyObject *module, HKEY key, const Py_UNICODE *sub_key)
-/*[clinic end generated code: output=2af13910d56eae26 input=3cdd1622488acea2]*/
-{
- HKEY retKey;
- long rc;
-
- if (PySys_Audit("winreg.CreateKey", "nun",
- (Py_ssize_t)key, sub_key,
- (Py_ssize_t)KEY_WRITE) < 0) {
- return NULL;
- }
- rc = RegCreateKeyW(key, sub_key, &retKey);
- if (rc != ERROR_SUCCESS) {
- PyErr_SetFromWindowsErrWithFunction(rc, "CreateKey");
- return NULL;
- }
- if (PySys_Audit("winreg.OpenKey/result", "n",
- (Py_ssize_t)retKey) < 0) {
- return NULL;
- }
- return retKey;
-}
-
-/*[clinic input]
-winreg.CreateKeyEx -> HKEY
-
- key: HKEY
- An already open key, or one of the predefined HKEY_* constants.
- sub_key: Py_UNICODE(accept={str, NoneType})
- The name of the key this method opens or creates.
- reserved: int = 0
- A reserved integer, and must be zero. Default is zero.
- access: REGSAM(c_default='KEY_WRITE') = winreg.KEY_WRITE
- An integer that specifies an access mask that describes the
- desired security access for the key. Default is KEY_WRITE.
-
-Creates or opens the specified key.
-
-If key is one of the predefined keys, sub_key may be None. In that case,
-the handle returned is the same key handle passed in to the function.
-
-If the key already exists, this function opens the existing key
-
-The return value is the handle of the opened key.
-If the function fails, an OSError exception is raised.
-[clinic start generated code]*/
-
-static HKEY
-winreg_CreateKeyEx_impl(PyObject *module, HKEY key,
- const Py_UNICODE *sub_key, int reserved,
- REGSAM access)
-/*[clinic end generated code: output=643a70ad6a361a97 input=42c2b03f98406b66]*/
-{
- HKEY retKey;
- long rc;
-
- if (PySys_Audit("winreg.CreateKey", "nun",
- (Py_ssize_t)key, sub_key,
- (Py_ssize_t)access) < 0) {
- return NULL;
- }
- rc = RegCreateKeyExW(key, sub_key, reserved, NULL, 0,
- access, NULL, &retKey, NULL);
- if (rc != ERROR_SUCCESS) {
- PyErr_SetFromWindowsErrWithFunction(rc, "CreateKeyEx");
- return NULL;
- }
- if (PySys_Audit("winreg.OpenKey/result", "n",
- (Py_ssize_t)retKey) < 0) {
- return NULL;
- }
- return retKey;
-}
-
-/*[clinic input]
-winreg.DeleteKey
- key: HKEY
- An already open key, or any one of the predefined HKEY_* constants.
- sub_key: Py_UNICODE
- A string that must be the name of a subkey of the key identified by
- the key parameter. This value must not be None, and the key may not
- have subkeys.
- /
-
-Deletes the specified key.
-
-This method can not delete keys with subkeys.
-
-If the function succeeds, the entire key, including all of its values,
-is removed. If the function fails, an OSError exception is raised.
-[clinic start generated code]*/
-
-static PyObject *
-winreg_DeleteKey_impl(PyObject *module, HKEY key, const Py_UNICODE *sub_key)
-/*[clinic end generated code: output=d2652a84f70e0862 input=b31d225b935e4211]*/
-{
- long rc;
- if (PySys_Audit("winreg.DeleteKey", "nun",
- (Py_ssize_t)key, sub_key,
- (Py_ssize_t)0) < 0) {
- return NULL;
- }
- rc = RegDeleteKeyW(key, sub_key );
- if (rc != ERROR_SUCCESS)
- return PyErr_SetFromWindowsErrWithFunction(rc, "RegDeleteKey");
- Py_RETURN_NONE;
-}
-
-/*[clinic input]
-winreg.DeleteKeyEx
-
- key: HKEY
- An already open key, or any one of the predefined HKEY_* constants.
- sub_key: Py_UNICODE
- A string that must be the name of a subkey of the key identified by
- the key parameter. This value must not be None, and the key may not
- have subkeys.
- access: REGSAM(c_default='KEY_WOW64_64KEY') = winreg.KEY_WOW64_64KEY
- An integer that specifies an access mask that describes the
- desired security access for the key. Default is KEY_WOW64_64KEY.
- reserved: int = 0
- A reserved integer, and must be zero. Default is zero.
-
-Deletes the specified key (64-bit OS only).
-
-This method can not delete keys with subkeys.
-
-If the function succeeds, the entire key, including all of its values,
-is removed. If the function fails, an OSError exception is raised.
-On unsupported Windows versions, NotImplementedError is raised.
-[clinic start generated code]*/
-
-static PyObject *
-winreg_DeleteKeyEx_impl(PyObject *module, HKEY key,
- const Py_UNICODE *sub_key, REGSAM access,
- int reserved)
-/*[clinic end generated code: output=52a1c8b374ebc003 input=711d9d89e7ecbed7]*/
-{
- HMODULE hMod;
- typedef LONG (WINAPI *RDKEFunc)(HKEY, const wchar_t*, REGSAM, int);
- RDKEFunc pfn = NULL;
- long rc;
-
- if (PySys_Audit("winreg.DeleteKey", "nun",
- (Py_ssize_t)key, sub_key,
- (Py_ssize_t)access) < 0) {
- return NULL;
- }
- /* Only available on 64bit platforms, so we must load it
- dynamically. */
- Py_BEGIN_ALLOW_THREADS
- hMod = GetModuleHandleW(L"advapi32.dll");
- if (hMod)
- pfn = (RDKEFunc)GetProcAddress(hMod, "RegDeleteKeyExW");
- Py_END_ALLOW_THREADS
- if (!pfn) {
- PyErr_SetString(PyExc_NotImplementedError,
- "not implemented on this platform");
- return NULL;
- }
- Py_BEGIN_ALLOW_THREADS
- rc = (*pfn)(key, sub_key, access, reserved);
- Py_END_ALLOW_THREADS
-
- if (rc != ERROR_SUCCESS)
- return PyErr_SetFromWindowsErrWithFunction(rc, "RegDeleteKeyEx");
- Py_RETURN_NONE;
-}
-
-/*[clinic input]
-winreg.DeleteValue
-
- key: HKEY
- An already open key, or any one of the predefined HKEY_* constants.
- value: Py_UNICODE(accept={str, NoneType})
- A string that identifies the value to remove.
- /
-
-Removes a named value from a registry key.
-[clinic start generated code]*/
-
-static PyObject *
-winreg_DeleteValue_impl(PyObject *module, HKEY key, const Py_UNICODE *value)
-/*[clinic end generated code: output=56fa9d21f3a54371 input=a78d3407a4197b21]*/
-{
- long rc;
- if (PySys_Audit("winreg.DeleteValue", "nu",
- (Py_ssize_t)key, value) < 0) {
- return NULL;
- }
- Py_BEGIN_ALLOW_THREADS
- rc = RegDeleteValueW(key, value);
- Py_END_ALLOW_THREADS
- if (rc !=ERROR_SUCCESS)
- return PyErr_SetFromWindowsErrWithFunction(rc,
- "RegDeleteValue");
- Py_RETURN_NONE;
-}
-
-/*[clinic input]
-winreg.EnumKey
-
- key: HKEY
- An already open key, or any one of the predefined HKEY_* constants.
- index: int
- An integer that identifies the index of the key to retrieve.
- /
-
-Enumerates subkeys of an open registry key.
-
-The function retrieves the name of one subkey each time it is called.
-It is typically called repeatedly until an OSError exception is
-raised, indicating no more values are available.
-[clinic start generated code]*/
-
-static PyObject *
-winreg_EnumKey_impl(PyObject *module, HKEY key, int index)
-/*[clinic end generated code: output=25a6ec52cd147bc4 input=fad9a7c00ab0e04b]*/
-{
- long rc;
- PyObject *retStr;
-
- if (PySys_Audit("winreg.EnumKey", "ni",
- (Py_ssize_t)key, index) < 0) {
- return NULL;
- }
- /* The Windows docs claim that the max key name length is 255
- * characters, plus a terminating nul character. However,
- * empirical testing demonstrates that it is possible to
- * create a 256 character key that is missing the terminating
- * nul. RegEnumKeyEx requires a 257 character buffer to
- * retrieve such a key name. */
- wchar_t tmpbuf[257];
- DWORD len = sizeof(tmpbuf)/sizeof(wchar_t); /* includes NULL terminator */
-
- Py_BEGIN_ALLOW_THREADS
- rc = RegEnumKeyExW(key, index, tmpbuf, &len, NULL, NULL, NULL, NULL);
- Py_END_ALLOW_THREADS
- if (rc != ERROR_SUCCESS)
- return PyErr_SetFromWindowsErrWithFunction(rc, "RegEnumKeyEx");
-
- retStr = PyUnicode_FromWideChar(tmpbuf, len);
- return retStr; /* can be NULL */
-}
-
-/*[clinic input]
-winreg.EnumValue
-
- key: HKEY
- An already open key, or any one of the predefined HKEY_* constants.
- index: int
- An integer that identifies the index of the value to retrieve.
- /
-
-Enumerates values of an open registry key.
-
-The function retrieves the name of one subkey each time it is called.
-It is typically called repeatedly, until an OSError exception
-is raised, indicating no more values.
-
-The result is a tuple of 3 items:
- value_name
- A string that identifies the value.
- value_data
- An object that holds the value data, and whose type depends
- on the underlying registry type.
- data_type
- An integer that identifies the type of the value data.
-[clinic start generated code]*/
-
-static PyObject *
-winreg_EnumValue_impl(PyObject *module, HKEY key, int index)
-/*[clinic end generated code: output=d363b5a06f8789ac input=4414f47a6fb238b5]*/
-{
- long rc;
- wchar_t *retValueBuf;
- BYTE *tmpBuf;
- BYTE *retDataBuf;
- DWORD retValueSize, bufValueSize;
- DWORD retDataSize, bufDataSize;
- DWORD typ;
- PyObject *obData;
- PyObject *retVal;
-
- if (PySys_Audit("winreg.EnumValue", "ni",
- (Py_ssize_t)key, index) < 0) {
- return NULL;
- }
- if ((rc = RegQueryInfoKeyW(key, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL,
- &retValueSize, &retDataSize, NULL, NULL))
- != ERROR_SUCCESS)
- return PyErr_SetFromWindowsErrWithFunction(rc,
- "RegQueryInfoKey");
- ++retValueSize; /* include null terminators */
- ++retDataSize;
- bufDataSize = retDataSize;
- bufValueSize = retValueSize;
- retValueBuf = PyMem_New(wchar_t, retValueSize);
- if (retValueBuf == NULL)
- return PyErr_NoMemory();
- retDataBuf = (BYTE *)PyMem_Malloc(retDataSize);
- if (retDataBuf == NULL) {
- PyMem_Free(retValueBuf);
- return PyErr_NoMemory();
- }
-
- while (1) {
- Py_BEGIN_ALLOW_THREADS
- rc = RegEnumValueW(key,
- index,
- retValueBuf,
- &retValueSize,
- NULL,
- &typ,
- (BYTE *)retDataBuf,
- &retDataSize);
- Py_END_ALLOW_THREADS
-
- if (rc != ERROR_MORE_DATA)
- break;
-
- bufDataSize *= 2;
- tmpBuf = (BYTE *)PyMem_Realloc(retDataBuf, bufDataSize);
- if (tmpBuf == NULL) {
- PyErr_NoMemory();
- retVal = NULL;
- goto fail;
- }
- retDataBuf = tmpBuf;
- retDataSize = bufDataSize;
- retValueSize = bufValueSize;
- }
-
- if (rc != ERROR_SUCCESS) {
- retVal = PyErr_SetFromWindowsErrWithFunction(rc,
- "PyRegEnumValue");
- goto fail;
- }
- obData = Reg2Py(retDataBuf, retDataSize, typ);
- if (obData == NULL) {
- retVal = NULL;
- goto fail;
- }
- retVal = Py_BuildValue("uOi", retValueBuf, obData, typ);
- Py_DECREF(obData);
- fail:
- PyMem_Free(retValueBuf);
- PyMem_Free(retDataBuf);
- return retVal;
-}
-
-/*[clinic input]
-winreg.ExpandEnvironmentStrings
-
- string: Py_UNICODE
- /
-
-Expand environment vars.
-[clinic start generated code]*/
-
-static PyObject *
-winreg_ExpandEnvironmentStrings_impl(PyObject *module,
- const Py_UNICODE *string)
-/*[clinic end generated code: output=8fa4e959747a7312 input=b2a9714d2b751aa6]*/
-{
- wchar_t *retValue = NULL;
- DWORD retValueSize;
- DWORD rc;
- PyObject *o;
-
- if (PySys_Audit("winreg.ExpandEnvironmentStrings", "u",
- string) < 0) {
- return NULL;
- }
-
- retValueSize = ExpandEnvironmentStringsW(string, retValue, 0);
- if (retValueSize == 0) {
- return PyErr_SetFromWindowsErrWithFunction(retValueSize,
- "ExpandEnvironmentStrings");
- }
- retValue = PyMem_New(wchar_t, retValueSize);
- if (retValue == NULL) {
- return PyErr_NoMemory();
- }
-
- rc = ExpandEnvironmentStringsW(string, retValue, retValueSize);
- if (rc == 0) {
- PyMem_Free(retValue);
- return PyErr_SetFromWindowsErrWithFunction(retValueSize,
- "ExpandEnvironmentStrings");
- }
- o = PyUnicode_FromWideChar(retValue, wcslen(retValue));
- PyMem_Free(retValue);
- return o;
-}
-
-/*[clinic input]
-winreg.FlushKey
-
- key: HKEY
- An already open key, or any one of the predefined HKEY_* constants.
- /
-
-Writes all the attributes of a key to the registry.
-
-It is not necessary to call FlushKey to change a key. Registry changes
-are flushed to disk by the registry using its lazy flusher. Registry
-changes are also flushed to disk at system shutdown. Unlike
-CloseKey(), the FlushKey() method returns only when all the data has
-been written to the registry.
-
-An application should only call FlushKey() if it requires absolute
-certainty that registry changes are on disk. If you don't know whether
-a FlushKey() call is required, it probably isn't.
-[clinic start generated code]*/
-
-static PyObject *
-winreg_FlushKey_impl(PyObject *module, HKEY key)
-/*[clinic end generated code: output=e6fc230d4c5dc049 input=f57457c12297d82f]*/
-{
- long rc;
- Py_BEGIN_ALLOW_THREADS
- rc = RegFlushKey(key);
- Py_END_ALLOW_THREADS
- if (rc != ERROR_SUCCESS)
- return PyErr_SetFromWindowsErrWithFunction(rc, "RegFlushKey");
- Py_RETURN_NONE;
-}
-
-
-/*[clinic input]
-winreg.LoadKey
-
- key: HKEY
- An already open key, or any one of the predefined HKEY_* constants.
- sub_key: Py_UNICODE
- A string that identifies the sub-key to load.
- file_name: Py_UNICODE
- The name of the file to load registry data from. This file must
- have been created with the SaveKey() function. Under the file
- allocation table (FAT) file system, the filename may not have an
- extension.
- /
-
-Insert data into the registry from a file.
-
-Creates a subkey under the specified key and stores registration
-information from a specified file into that subkey.
-
-A call to LoadKey() fails if the calling process does not have the
-SE_RESTORE_PRIVILEGE privilege.
-
-If key is a handle returned by ConnectRegistry(), then the path
-specified in fileName is relative to the remote computer.
-
-The MSDN docs imply key must be in the HKEY_USER or HKEY_LOCAL_MACHINE
-tree.
-[clinic start generated code]*/
-
-static PyObject *
-winreg_LoadKey_impl(PyObject *module, HKEY key, const Py_UNICODE *sub_key,
- const Py_UNICODE *file_name)
-/*[clinic end generated code: output=65f89f2548cb27c7 input=e3b5b45ade311582]*/
-{
- long rc;
-
- if (PySys_Audit("winreg.LoadKey", "nuu",
- (Py_ssize_t)key, sub_key, file_name) < 0) {
- return NULL;
- }
- Py_BEGIN_ALLOW_THREADS
- rc = RegLoadKeyW(key, sub_key, file_name );
- Py_END_ALLOW_THREADS
- if (rc != ERROR_SUCCESS)
- return PyErr_SetFromWindowsErrWithFunction(rc, "RegLoadKey");
- Py_RETURN_NONE;
-}
-
-/*[clinic input]
-winreg.OpenKey -> HKEY
-
- key: HKEY
- An already open key, or any one of the predefined HKEY_* constants.
- sub_key: Py_UNICODE(accept={str, NoneType})
- A string that identifies the sub_key to open.
- reserved: int = 0
- A reserved integer that must be zero. Default is zero.
- access: REGSAM(c_default='KEY_READ') = winreg.KEY_READ
- An integer that specifies an access mask that describes the desired
- security access for the key. Default is KEY_READ.
-
-Opens the specified key.
-
-The result is a new handle to the specified key.
-If the function fails, an OSError exception is raised.
-[clinic start generated code]*/
-
-static HKEY
-winreg_OpenKey_impl(PyObject *module, HKEY key, const Py_UNICODE *sub_key,
- int reserved, REGSAM access)
-/*[clinic end generated code: output=8849bff2c30104ad input=098505ac36a9ae28]*/
-{
- HKEY retKey;
- long rc;
-
- if (PySys_Audit("winreg.OpenKey", "nun",
- (Py_ssize_t)key, sub_key,
- (Py_ssize_t)access) < 0) {
- return NULL;
- }
- Py_BEGIN_ALLOW_THREADS
- rc = RegOpenKeyExW(key, sub_key, reserved, access, &retKey);
- Py_END_ALLOW_THREADS
- if (rc != ERROR_SUCCESS) {
- PyErr_SetFromWindowsErrWithFunction(rc, "RegOpenKeyEx");
- return NULL;
- }
- if (PySys_Audit("winreg.OpenKey/result", "n",
- (Py_ssize_t)retKey) < 0) {
- return NULL;
- }
- return retKey;
-}
-
-/*[clinic input]
-winreg.OpenKeyEx = winreg.OpenKey
-
-Opens the specified key.
-
-The result is a new handle to the specified key.
-If the function fails, an OSError exception is raised.
-[clinic start generated code]*/
-
-static HKEY
-winreg_OpenKeyEx_impl(PyObject *module, HKEY key, const Py_UNICODE *sub_key,
- int reserved, REGSAM access)
-/*[clinic end generated code: output=81bc2bd684bc77ae input=c6c4972af8622959]*/
-{
- return winreg_OpenKey_impl(module, key, sub_key, reserved, access);
-}
-
-/*[clinic input]
-winreg.QueryInfoKey
-
- key: HKEY
- An already open key, or any one of the predefined HKEY_* constants.
- /
-
-Returns information about a key.
-
-The result is a tuple of 3 items:
-An integer that identifies the number of sub keys this key has.
-An integer that identifies the number of values this key has.
-An integer that identifies when the key was last modified (if available)
-as 100's of nanoseconds since Jan 1, 1600.
-[clinic start generated code]*/
-
-static PyObject *
-winreg_QueryInfoKey_impl(PyObject *module, HKEY key)
-/*[clinic end generated code: output=dc657b8356a4f438 input=c3593802390cde1f]*/
-{
- long rc;
- DWORD nSubKeys, nValues;
- FILETIME ft;
- LARGE_INTEGER li;
- PyObject *l;
- PyObject *ret;
-
- if (PySys_Audit("winreg.QueryInfoKey", "n", (Py_ssize_t)key) < 0) {
- return NULL;
- }
- if ((rc = RegQueryInfoKey(key, NULL, NULL, 0, &nSubKeys, NULL, NULL,
- &nValues, NULL, NULL, NULL, &ft))
- != ERROR_SUCCESS) {
- return PyErr_SetFromWindowsErrWithFunction(rc, "RegQueryInfoKey");
- }
- li.LowPart = ft.dwLowDateTime;
- li.HighPart = ft.dwHighDateTime;
- l = PyLong_FromLongLong(li.QuadPart);
- if (l == NULL) {
- return NULL;
- }
- ret = Py_BuildValue("iiO", nSubKeys, nValues, l);
- Py_DECREF(l);
- return ret;
-}
-
-/*[clinic input]
-winreg.QueryValue
-
- key: HKEY
- An already open key, or any one of the predefined HKEY_* constants.
- sub_key: Py_UNICODE(accept={str, NoneType})
- A string that holds the name of the subkey with which the value
- is associated. If this parameter is None or empty, the function
- retrieves the value set by the SetValue() method for the key
- identified by key.
- /
-
-Retrieves the unnamed value for a key.
-
-Values in the registry have name, type, and data components. This method
-retrieves the data for a key's first value that has a NULL name.
-But since the underlying API call doesn't return the type, you'll
-probably be happier using QueryValueEx; this function is just here for
-completeness.
-[clinic start generated code]*/
-
-static PyObject *
-winreg_QueryValue_impl(PyObject *module, HKEY key, const Py_UNICODE *sub_key)
-/*[clinic end generated code: output=c655810ae50c63a9 input=41cafbbf423b21d6]*/
-{
- long rc;
- PyObject *retStr;
- wchar_t *retBuf;
- DWORD bufSize = 0;
- DWORD retSize = 0;
- wchar_t *tmp;
-
- if (PySys_Audit("winreg.QueryValue", "nuu",
- (Py_ssize_t)key, sub_key, NULL) < 0) {
- return NULL;
- }
- rc = RegQueryValueW(key, sub_key, NULL, &retSize);
- if (rc == ERROR_MORE_DATA)
- retSize = 256;
- else if (rc != ERROR_SUCCESS)
- return PyErr_SetFromWindowsErrWithFunction(rc,
- "RegQueryValue");
-
- bufSize = retSize;
- retBuf = (wchar_t *) PyMem_Malloc(bufSize);
- if (retBuf == NULL)
- return PyErr_NoMemory();
-
- while (1) {
- retSize = bufSize;
- rc = RegQueryValueW(key, sub_key, retBuf, &retSize);
- if (rc != ERROR_MORE_DATA)
- break;
-
- bufSize *= 2;
- tmp = (wchar_t *) PyMem_Realloc(retBuf, bufSize);
- if (tmp == NULL) {
- PyMem_Free(retBuf);
- return PyErr_NoMemory();
- }
- retBuf = tmp;
- }
-
- if (rc != ERROR_SUCCESS) {
- PyMem_Free(retBuf);
- return PyErr_SetFromWindowsErrWithFunction(rc,
- "RegQueryValue");
- }
-
- retStr = PyUnicode_FromWideChar(retBuf, wcslen(retBuf));
- PyMem_Free(retBuf);
- return retStr;
-}
-
-
-/*[clinic input]
-winreg.QueryValueEx
-
- key: HKEY
- An already open key, or any one of the predefined HKEY_* constants.
- name: Py_UNICODE(accept={str, NoneType})
- A string indicating the value to query.
- /
-
-Retrieves the type and value of a specified sub-key.
-
-Behaves mostly like QueryValue(), but also returns the type of the
-specified value name associated with the given open registry key.
-
-The return value is a tuple of the value and the type_id.
-[clinic start generated code]*/
-
-static PyObject *
-winreg_QueryValueEx_impl(PyObject *module, HKEY key, const Py_UNICODE *name)
-/*[clinic end generated code: output=f1b85b1c3d887ec7 input=cf366cada4836891]*/
-{
- long rc;
- BYTE *retBuf, *tmp;
- DWORD bufSize = 0, retSize;
- DWORD typ;
- PyObject *obData;
- PyObject *result;
-
- if (PySys_Audit("winreg.QueryValue", "nuu",
- (Py_ssize_t)key, NULL, name) < 0) {
- return NULL;
- }
- rc = RegQueryValueExW(key, name, NULL, NULL, NULL, &bufSize);
- if (rc == ERROR_MORE_DATA)
- bufSize = 256;
- else if (rc != ERROR_SUCCESS)
- return PyErr_SetFromWindowsErrWithFunction(rc,
- "RegQueryValueEx");
- retBuf = (BYTE *)PyMem_Malloc(bufSize);
- if (retBuf == NULL)
- return PyErr_NoMemory();
-
- while (1) {
- retSize = bufSize;
- rc = RegQueryValueExW(key, name, NULL, &typ,
- (BYTE *)retBuf, &retSize);
- if (rc != ERROR_MORE_DATA)
- break;
-
- bufSize *= 2;
- tmp = (char *) PyMem_Realloc(retBuf, bufSize);
- if (tmp == NULL) {
- PyMem_Free(retBuf);
- return PyErr_NoMemory();
- }
- retBuf = tmp;
- }
-
- if (rc != ERROR_SUCCESS) {
- PyMem_Free(retBuf);
- return PyErr_SetFromWindowsErrWithFunction(rc,
- "RegQueryValueEx");
- }
- obData = Reg2Py(retBuf, bufSize, typ);
- PyMem_Free(retBuf);
- if (obData == NULL)
- return NULL;
- result = Py_BuildValue("Oi", obData, typ);
- Py_DECREF(obData);
- return result;
-}
-
-/*[clinic input]
-winreg.SaveKey
-
- key: HKEY
- An already open key, or any one of the predefined HKEY_* constants.
- file_name: Py_UNICODE
- The name of the file to save registry data to. This file cannot
- already exist. If this filename includes an extension, it cannot be
- used on file allocation table (FAT) file systems by the LoadKey(),
- ReplaceKey() or RestoreKey() methods.
- /
-
-Saves the specified key, and all its subkeys to the specified file.
-
-If key represents a key on a remote computer, the path described by
-file_name is relative to the remote computer.
-
-The caller of this method must possess the SeBackupPrivilege
-security privilege. This function passes NULL for security_attributes
-to the API.
-[clinic start generated code]*/
-
-static PyObject *
-winreg_SaveKey_impl(PyObject *module, HKEY key, const Py_UNICODE *file_name)
-/*[clinic end generated code: output=ca94b835c88f112b input=da735241f91ac7a2]*/
-{
- LPSECURITY_ATTRIBUTES pSA = NULL;
-
- long rc;
-/* One day we may get security into the core?
- if (!PyWinObject_AsSECURITY_ATTRIBUTES(obSA, &pSA, TRUE))
- return NULL;
-*/
- if (PySys_Audit("winreg.SaveKey", "nu",
- (Py_ssize_t)key, file_name) < 0) {
- return NULL;
- }
- Py_BEGIN_ALLOW_THREADS
- rc = RegSaveKeyW(key, file_name, pSA );
- Py_END_ALLOW_THREADS
- if (rc != ERROR_SUCCESS)
- return PyErr_SetFromWindowsErrWithFunction(rc, "RegSaveKey");
- Py_RETURN_NONE;
-}
-
-/*[clinic input]
-winreg.SetValue
-
- key: HKEY
- An already open key, or any one of the predefined HKEY_* constants.
- sub_key: Py_UNICODE(accept={str, NoneType})
- A string that names the subkey with which the value is associated.
- type: DWORD
- An integer that specifies the type of the data. Currently this must
- be REG_SZ, meaning only strings are supported.
- value: Py_UNICODE(zeroes=True)
- A string that specifies the new value.
- /
-
-Associates a value with a specified key.
-
-If the key specified by the sub_key parameter does not exist, the
-SetValue function creates it.
-
-Value lengths are limited by available memory. Long values (more than
-2048 bytes) should be stored as files with the filenames stored in
-the configuration registry to help the registry perform efficiently.
-
-The key identified by the key parameter must have been opened with
-KEY_SET_VALUE access.
-[clinic start generated code]*/
-
-static PyObject *
-winreg_SetValue_impl(PyObject *module, HKEY key, const Py_UNICODE *sub_key,
- DWORD type, const Py_UNICODE *value,
- Py_ssize_clean_t value_length)
-/*[clinic end generated code: output=686bedb1cbb4367b input=2cd2adab79339c53]*/
-{
- long rc;
-
- if (type != REG_SZ) {
- PyErr_SetString(PyExc_TypeError, "type must be winreg.REG_SZ");
- return NULL;
- }
- if ((size_t)value_length >= PY_DWORD_MAX) {
- PyErr_SetString(PyExc_OverflowError, "value is too long");
- return NULL;
- }
-
- if (PySys_Audit("winreg.SetValue", "nunu#",
- (Py_ssize_t)key, sub_key, (Py_ssize_t)type,
- value, value_length) < 0) {
- return NULL;
- }
-
- Py_BEGIN_ALLOW_THREADS
- rc = RegSetValueW(key, sub_key, REG_SZ, value, (DWORD)(value_length + 1));
- Py_END_ALLOW_THREADS
- if (rc != ERROR_SUCCESS)
- return PyErr_SetFromWindowsErrWithFunction(rc, "RegSetValue");
- Py_RETURN_NONE;
-}
-
-/*[clinic input]
-winreg.SetValueEx
-
- key: HKEY
- An already open key, or any one of the predefined HKEY_* constants.
- value_name: Py_UNICODE(accept={str, NoneType})
- A string containing the name of the value to set, or None.
- reserved: object
- Can be anything - zero is always passed to the API.
- type: DWORD
- An integer that specifies the type of the data, one of:
- REG_BINARY -- Binary data in any form.
- REG_DWORD -- A 32-bit number.
- REG_DWORD_LITTLE_ENDIAN -- A 32-bit number in little-endian format. Equivalent to REG_DWORD
- REG_DWORD_BIG_ENDIAN -- A 32-bit number in big-endian format.
- REG_EXPAND_SZ -- A null-terminated string that contains unexpanded
- references to environment variables (for example,
- %PATH%).
- REG_LINK -- A Unicode symbolic link.
- REG_MULTI_SZ -- A sequence of null-terminated strings, terminated
- by two null characters. Note that Python handles
- this termination automatically.
- REG_NONE -- No defined value type.
- REG_QWORD -- A 64-bit number.
- REG_QWORD_LITTLE_ENDIAN -- A 64-bit number in little-endian format. Equivalent to REG_QWORD.
- REG_RESOURCE_LIST -- A device-driver resource list.
- REG_SZ -- A null-terminated string.
- value: object
- A string that specifies the new value.
- /
-
-Stores data in the value field of an open registry key.
-
-This method can also set additional value and type information for the
-specified key. The key identified by the key parameter must have been
-opened with KEY_SET_VALUE access.
-
-To open the key, use the CreateKeyEx() or OpenKeyEx() methods.
-
-Value lengths are limited by available memory. Long values (more than
-2048 bytes) should be stored as files with the filenames stored in
-the configuration registry to help the registry perform efficiently.
-[clinic start generated code]*/
-
-static PyObject *
-winreg_SetValueEx_impl(PyObject *module, HKEY key,
- const Py_UNICODE *value_name, PyObject *reserved,
- DWORD type, PyObject *value)
-/*[clinic end generated code: output=811b769a66ae11b7 input=900a9e3990bfb196]*/
-{
- BYTE *data;
- DWORD len;
-
- LONG rc;
-
- if (!Py2Reg(value, type, &data, &len))
- {
- if (!PyErr_Occurred())
- PyErr_SetString(PyExc_ValueError,
- "Could not convert the data to the specified type.");
- return NULL;
- }
- if (PySys_Audit("winreg.SetValue", "nunO",
- (Py_ssize_t)key, value_name, (Py_ssize_t)type,
- value) < 0) {
- return NULL;
- }
- Py_BEGIN_ALLOW_THREADS
- rc = RegSetValueExW(key, value_name, 0, type, data, len);
- Py_END_ALLOW_THREADS
- PyMem_DEL(data);
- if (rc != ERROR_SUCCESS)
- return PyErr_SetFromWindowsErrWithFunction(rc,
- "RegSetValueEx");
- Py_RETURN_NONE;
-}
-
-/*[clinic input]
-winreg.DisableReflectionKey
-
- key: HKEY
- An already open key, or any one of the predefined HKEY_* constants.
- /
-
-Disables registry reflection for 32bit processes running on a 64bit OS.
-
-Will generally raise NotImplementedError if executed on a 32bit OS.
-
-If the key is not on the reflection list, the function succeeds but has
-no effect. Disabling reflection for a key does not affect reflection
-of any subkeys.
-[clinic start generated code]*/
-
-static PyObject *
-winreg_DisableReflectionKey_impl(PyObject *module, HKEY key)
-/*[clinic end generated code: output=830cce504cc764b4 input=70bece2dee02e073]*/
-{
- HMODULE hMod;
- typedef LONG (WINAPI *RDRKFunc)(HKEY);
- RDRKFunc pfn = NULL;
- LONG rc;
-
- if (PySys_Audit("winreg.DisableReflectionKey", "n", (Py_ssize_t)key) < 0) {
- return NULL;
- }
-
- /* Only available on 64bit platforms, so we must load it
- dynamically.*/
- Py_BEGIN_ALLOW_THREADS
- hMod = GetModuleHandleW(L"advapi32.dll");
- if (hMod)
- pfn = (RDRKFunc)GetProcAddress(hMod,
- "RegDisableReflectionKey");
- Py_END_ALLOW_THREADS
- if (!pfn) {
- PyErr_SetString(PyExc_NotImplementedError,
- "not implemented on this platform");
- return NULL;
- }
- Py_BEGIN_ALLOW_THREADS
- rc = (*pfn)(key);
- Py_END_ALLOW_THREADS
- if (rc != ERROR_SUCCESS)
- return PyErr_SetFromWindowsErrWithFunction(rc,
- "RegDisableReflectionKey");
- Py_RETURN_NONE;
-}
-
-/*[clinic input]
-winreg.EnableReflectionKey
-
- key: HKEY
- An already open key, or any one of the predefined HKEY_* constants.
- /
-
-Restores registry reflection for the specified disabled key.
-
-Will generally raise NotImplementedError if executed on a 32bit OS.
-Restoring reflection for a key does not affect reflection of any
-subkeys.
-[clinic start generated code]*/
-
-static PyObject *
-winreg_EnableReflectionKey_impl(PyObject *module, HKEY key)
-/*[clinic end generated code: output=86fa1385fdd9ce57 input=eeae770c6eb9f559]*/
-{
- HMODULE hMod;
- typedef LONG (WINAPI *RERKFunc)(HKEY);
- RERKFunc pfn = NULL;
- LONG rc;
-
- if (PySys_Audit("winreg.EnableReflectionKey", "n", (Py_ssize_t)key) < 0) {
- return NULL;
- }
-
- /* Only available on 64bit platforms, so we must load it
- dynamically.*/
- Py_BEGIN_ALLOW_THREADS
- hMod = GetModuleHandleW(L"advapi32.dll");
- if (hMod)
- pfn = (RERKFunc)GetProcAddress(hMod,
- "RegEnableReflectionKey");
- Py_END_ALLOW_THREADS
- if (!pfn) {
- PyErr_SetString(PyExc_NotImplementedError,
- "not implemented on this platform");
- return NULL;
- }
- Py_BEGIN_ALLOW_THREADS
- rc = (*pfn)(key);
- Py_END_ALLOW_THREADS
- if (rc != ERROR_SUCCESS)
- return PyErr_SetFromWindowsErrWithFunction(rc,
- "RegEnableReflectionKey");
- Py_RETURN_NONE;
-}
-
-/*[clinic input]
-winreg.QueryReflectionKey
-
- key: HKEY
- An already open key, or any one of the predefined HKEY_* constants.
- /
-
-Returns the reflection state for the specified key as a bool.
-
-Will generally raise NotImplementedError if executed on a 32bit OS.
-[clinic start generated code]*/
-
-static PyObject *
-winreg_QueryReflectionKey_impl(PyObject *module, HKEY key)
-/*[clinic end generated code: output=4e774af288c3ebb9 input=a98fa51d55ade186]*/
-{
- HMODULE hMod;
- typedef LONG (WINAPI *RQRKFunc)(HKEY, BOOL *);
- RQRKFunc pfn = NULL;
- BOOL result;
- LONG rc;
-
- if (PySys_Audit("winreg.QueryReflectionKey", "n", (Py_ssize_t)key) < 0) {
- return NULL;
- }
-
- /* Only available on 64bit platforms, so we must load it
- dynamically.*/
- Py_BEGIN_ALLOW_THREADS
- hMod = GetModuleHandleW(L"advapi32.dll");
- if (hMod)
- pfn = (RQRKFunc)GetProcAddress(hMod,
- "RegQueryReflectionKey");
- Py_END_ALLOW_THREADS
- if (!pfn) {
- PyErr_SetString(PyExc_NotImplementedError,
- "not implemented on this platform");
- return NULL;
- }
- Py_BEGIN_ALLOW_THREADS
- rc = (*pfn)(key, &result);
- Py_END_ALLOW_THREADS
- if (rc != ERROR_SUCCESS)
- return PyErr_SetFromWindowsErrWithFunction(rc,
- "RegQueryReflectionKey");
- return PyBool_FromLong(result);
-}
-
-static struct PyMethodDef winreg_methods[] = {
- WINREG_CLOSEKEY_METHODDEF
- WINREG_CONNECTREGISTRY_METHODDEF
- WINREG_CREATEKEY_METHODDEF
- WINREG_CREATEKEYEX_METHODDEF
- WINREG_DELETEKEY_METHODDEF
- WINREG_DELETEKEYEX_METHODDEF
- WINREG_DELETEVALUE_METHODDEF
- WINREG_DISABLEREFLECTIONKEY_METHODDEF
- WINREG_ENABLEREFLECTIONKEY_METHODDEF
- WINREG_ENUMKEY_METHODDEF
- WINREG_ENUMVALUE_METHODDEF
- WINREG_EXPANDENVIRONMENTSTRINGS_METHODDEF
- WINREG_FLUSHKEY_METHODDEF
- WINREG_LOADKEY_METHODDEF
- WINREG_OPENKEY_METHODDEF
- WINREG_OPENKEYEX_METHODDEF
- WINREG_QUERYVALUE_METHODDEF
- WINREG_QUERYVALUEEX_METHODDEF
- WINREG_QUERYINFOKEY_METHODDEF
- WINREG_QUERYREFLECTIONKEY_METHODDEF
- WINREG_SAVEKEY_METHODDEF
- WINREG_SETVALUE_METHODDEF
- WINREG_SETVALUEEX_METHODDEF
- NULL,
-};
-
-static void
-insint(PyObject * d, char * name, long value)
-{
- PyObject *v = PyLong_FromLong(value);
- if (!v || PyDict_SetItemString(d, name, v))
- PyErr_Clear();
- Py_XDECREF(v);
-}
-
-#define ADD_INT(val) insint(d, #val, val)
-
-static void
-inskey(PyObject * d, char * name, HKEY key)
-{
- PyObject *v = PyLong_FromVoidPtr(key);
- if (!v || PyDict_SetItemString(d, name, v))
- PyErr_Clear();
- Py_XDECREF(v);
-}
-
-#define ADD_KEY(val) inskey(d, #val, val)
-
-
-static struct PyModuleDef winregmodule = {
- PyModuleDef_HEAD_INIT,
- "winreg",
- module_doc,
- -1,
- winreg_methods,
- NULL,
- NULL,
- NULL,
- NULL
-};
-
-PyMODINIT_FUNC PyInit_winreg(void)
-{
- PyObject *m, *d;
- m = PyModule_Create(&winregmodule);
- if (m == NULL)
- return NULL;
- d = PyModule_GetDict(m);
- PyHKEY_Type.tp_doc = PyHKEY_doc;
- if (PyType_Ready(&PyHKEY_Type) < 0)
- return NULL;
- Py_INCREF(&PyHKEY_Type);
- if (PyDict_SetItemString(d, "HKEYType",
- (PyObject *)&PyHKEY_Type) != 0)
- return NULL;
- Py_INCREF(PyExc_OSError);
- if (PyDict_SetItemString(d, "error",
- PyExc_OSError) != 0)
- return NULL;
-
- /* Add the relevant constants */
- ADD_KEY(HKEY_CLASSES_ROOT);
- ADD_KEY(HKEY_CURRENT_USER);
- ADD_KEY(HKEY_LOCAL_MACHINE);
- ADD_KEY(HKEY_USERS);
- ADD_KEY(HKEY_PERFORMANCE_DATA);
-#ifdef HKEY_CURRENT_CONFIG
- ADD_KEY(HKEY_CURRENT_CONFIG);
-#endif
-#ifdef HKEY_DYN_DATA
- ADD_KEY(HKEY_DYN_DATA);
-#endif
- ADD_INT(KEY_QUERY_VALUE);
- ADD_INT(KEY_SET_VALUE);
- ADD_INT(KEY_CREATE_SUB_KEY);
- ADD_INT(KEY_ENUMERATE_SUB_KEYS);
- ADD_INT(KEY_NOTIFY);
- ADD_INT(KEY_CREATE_LINK);
- ADD_INT(KEY_READ);
- ADD_INT(KEY_WRITE);
- ADD_INT(KEY_EXECUTE);
- ADD_INT(KEY_ALL_ACCESS);
-#ifdef KEY_WOW64_64KEY
- ADD_INT(KEY_WOW64_64KEY);
-#endif
-#ifdef KEY_WOW64_32KEY
- ADD_INT(KEY_WOW64_32KEY);
-#endif
- ADD_INT(REG_OPTION_RESERVED);
- ADD_INT(REG_OPTION_NON_VOLATILE);
- ADD_INT(REG_OPTION_VOLATILE);
- ADD_INT(REG_OPTION_CREATE_LINK);
- ADD_INT(REG_OPTION_BACKUP_RESTORE);
- ADD_INT(REG_OPTION_OPEN_LINK);
- ADD_INT(REG_LEGAL_OPTION);
- ADD_INT(REG_CREATED_NEW_KEY);
- ADD_INT(REG_OPENED_EXISTING_KEY);
- ADD_INT(REG_WHOLE_HIVE_VOLATILE);
- ADD_INT(REG_REFRESH_HIVE);
- ADD_INT(REG_NO_LAZY_FLUSH);
- ADD_INT(REG_NOTIFY_CHANGE_NAME);
- ADD_INT(REG_NOTIFY_CHANGE_ATTRIBUTES);
- ADD_INT(REG_NOTIFY_CHANGE_LAST_SET);
- ADD_INT(REG_NOTIFY_CHANGE_SECURITY);
- ADD_INT(REG_LEGAL_CHANGE_FILTER);
- ADD_INT(REG_NONE);
- ADD_INT(REG_SZ);
- ADD_INT(REG_EXPAND_SZ);
- ADD_INT(REG_BINARY);
- ADD_INT(REG_DWORD);
- ADD_INT(REG_DWORD_LITTLE_ENDIAN);
- ADD_INT(REG_DWORD_BIG_ENDIAN);
- ADD_INT(REG_QWORD);
- ADD_INT(REG_QWORD_LITTLE_ENDIAN);
- ADD_INT(REG_LINK);
- ADD_INT(REG_MULTI_SZ);
- ADD_INT(REG_RESOURCE_LIST);
- ADD_INT(REG_FULL_RESOURCE_DESCRIPTOR);
- ADD_INT(REG_RESOURCE_REQUIREMENTS_LIST);
- return m;
-}
-
-
diff --git a/PC/winsound.c b/PC/winsound.c
index fd04e1e5..f3c5be4 100644
--- a/PC/winsound.c
+++ b/PC/winsound.c
@@ -29,7 +29,7 @@
# Start playing the first bit of wav file asynchronously
winsound.PlaySound('c:/windows/media/Chord.wav',
winsound.SND_FILENAME|winsound.SND_ASYNC)
- # But don't let it go for too long...
+ # But dont let it go for too long...
time.sleep(0.1)
# ...Before stopping it
winsound.PlaySound(None, 0)
@@ -39,6 +39,22 @@
#include <windows.h>
#include <mmsystem.h>
+PyDoc_STRVAR(sound_playsound_doc,
+"PlaySound(sound, flags) - a wrapper around the Windows PlaySound API\n"
+"\n"
+"The sound argument can be a filename, data, or None.\n"
+"For flag values, ored together, see module documentation.");
+
+PyDoc_STRVAR(sound_beep_doc,
+"Beep(frequency, duration) - a wrapper around the Windows Beep API\n"
+"\n"
+"The frequency argument specifies frequency, in hertz, of the sound.\n"
+"This parameter must be in the range 37 through 32,767.\n"
+"The duration argument specifies the number of milliseconds.\n");
+
+PyDoc_STRVAR(sound_msgbeep_doc,
+"MessageBeep(x) - call Windows MessageBeep(x). x defaults to MB_OK.");
+
PyDoc_STRVAR(sound_module_doc,
"PlaySound(sound, flags) - play a sound\n"
"SND_FILENAME - sound is a wav file name\n"
@@ -51,153 +67,90 @@ PyDoc_STRVAR(sound_module_doc,
"SND_NOSTOP - Do not interrupt any sounds currently playing\n" // Raising RuntimeError if needed
"SND_NOWAIT - Return immediately if the sound driver is busy\n" // Without any errors
"\n"
-"Beep(frequency, duration) - Make a beep through the PC speaker.\n"
-"MessageBeep(type) - Call Windows MessageBeep.");
-
-/*[clinic input]
-module winsound
-[clinic start generated code]*/
-/*[clinic end generated code: output=da39a3ee5e6b4b0d input=a18401142d97b8d5]*/
-
-#include "clinic/winsound.c.h"
-
-/*[clinic input]
-winsound.PlaySound
-
- sound: object
- The sound to play; a filename, data, or None.
- flags: int
- Flag values, ored together. See module documentation.
-
-A wrapper around the Windows PlaySound API.
-[clinic start generated code]*/
+"Beep(frequency, duration) - Make a beep through the PC speaker.");
static PyObject *
-winsound_PlaySound_impl(PyObject *module, PyObject *sound, int flags)
-/*[clinic end generated code: output=49a0fd16a372ebeb input=c63e1f2d848da2f2]*/
+sound_playsound(PyObject *s, PyObject *args)
{
+ const char *sound;
+ int flags;
+ int length;
int ok;
- wchar_t *wsound;
- Py_buffer view = {NULL, NULL};
-
- if (sound == Py_None) {
- wsound = NULL;
- } else if (flags & SND_MEMORY) {
- if (flags & SND_ASYNC) {
- /* Sidestep reference counting headache; unfortunately this also
- prevent SND_LOOP from memory. */
- PyErr_SetString(PyExc_RuntimeError,
- "Cannot play asynchronously from memory");
- return NULL;
- }
- if (PyObject_GetBuffer(sound, &view, PyBUF_SIMPLE) < 0) {
- return NULL;
- }
- wsound = (wchar_t *)view.buf;
- } else {
- if (!PyUnicode_Check(sound)) {
- PyErr_Format(PyExc_TypeError,
- "'sound' must be str or None, not '%s'",
- Py_TYPE(sound)->tp_name);
- return NULL;
- }
- wsound = PyUnicode_AsWideCharString(sound, NULL);
- if (wsound == NULL) {
- return NULL;
- }
+
+ if (!PyArg_ParseTuple(args, "z#i:PlaySound", &sound, &length, &flags)) {
+ return NULL;
}
+ if (flags & SND_ASYNC && flags & SND_MEMORY) {
+ /* Sidestep reference counting headache; unfortunately this also
+ prevent SND_LOOP from memory. */
+ PyErr_SetString(PyExc_RuntimeError, "Cannot play asynchronously from memory");
+ return NULL;
+ }
Py_BEGIN_ALLOW_THREADS
- ok = PlaySoundW(wsound, NULL, flags);
+ ok = PlaySound(sound, NULL, flags);
Py_END_ALLOW_THREADS
- if (view.obj) {
- PyBuffer_Release(&view);
- } else if (sound != Py_None) {
- PyMem_Free(wsound);
- }
if (!ok) {
PyErr_SetString(PyExc_RuntimeError, "Failed to play sound");
return NULL;
}
- Py_RETURN_NONE;
-}
-
-/*[clinic input]
-winsound.Beep
- frequency: int
- Frequency of the sound in hertz.
- Must be in the range 37 through 32,767.
- duration: int
- How long the sound should play, in milliseconds.
-
-A wrapper around the Windows Beep API.
-[clinic start generated code]*/
+ Py_INCREF(Py_None);
+ return Py_None;
+}
static PyObject *
-winsound_Beep_impl(PyObject *module, int frequency, int duration)
-/*[clinic end generated code: output=f32382e52ee9b2fb input=40e360cfa00a5cf0]*/
+sound_beep(PyObject *self, PyObject *args)
{
+ int freq;
+ int dur;
BOOL ok;
- if (frequency < 37 || frequency > 32767) {
+ if (!PyArg_ParseTuple(args, "ii:Beep", &freq, &dur))
+ return NULL;
+
+ if (freq < 37 || freq > 32767) {
PyErr_SetString(PyExc_ValueError,
"frequency must be in 37 thru 32767");
return NULL;
}
Py_BEGIN_ALLOW_THREADS
- ok = Beep(frequency, duration);
+ ok = Beep(freq, dur);
Py_END_ALLOW_THREADS
if (!ok) {
PyErr_SetString(PyExc_RuntimeError,"Failed to beep");
return NULL;
}
- Py_RETURN_NONE;
+ Py_INCREF(Py_None);
+ return Py_None;
}
-/*[clinic input]
-winsound.MessageBeep
-
- type: int(c_default="MB_OK") = MB_OK
-
-Call Windows MessageBeep(x).
-
-x defaults to MB_OK.
-[clinic start generated code]*/
-
static PyObject *
-winsound_MessageBeep_impl(PyObject *module, int type)
-/*[clinic end generated code: output=120875455121121f input=db185f741ae21401]*/
+sound_msgbeep(PyObject *self, PyObject *args)
{
- BOOL ok;
-
- Py_BEGIN_ALLOW_THREADS
- ok = MessageBeep(type);
- Py_END_ALLOW_THREADS
-
- if (!ok) {
- PyErr_SetExcFromWindowsErr(PyExc_RuntimeError, 0);
+ int x = MB_OK;
+ if (!PyArg_ParseTuple(args, "|i:MessageBeep", &x))
return NULL;
- }
-
- Py_RETURN_NONE;
+ MessageBeep(x);
+ Py_INCREF(Py_None);
+ return Py_None;
}
static struct PyMethodDef sound_methods[] =
{
- WINSOUND_PLAYSOUND_METHODDEF
- WINSOUND_BEEP_METHODDEF
- WINSOUND_MESSAGEBEEP_METHODDEF
+ {"PlaySound", sound_playsound, METH_VARARGS, sound_playsound_doc},
+ {"Beep", sound_beep, METH_VARARGS, sound_beep_doc},
+ {"MessageBeep", sound_msgbeep, METH_VARARGS, sound_msgbeep_doc},
{NULL, NULL}
};
static void
add_define(PyObject *dict, const char *key, long value)
{
- PyObject *k = PyUnicode_FromString(key);
+ PyObject *k = PyString_FromString(key);
PyObject *v = PyLong_FromLong(value);
if (v && k) {
PyDict_SetItem(dict, k, v);
@@ -208,26 +161,15 @@ add_define(PyObject *dict, const char *key, long value)
#define ADD_DEFINE(tok) add_define(dict,#tok,tok)
-
-static struct PyModuleDef winsoundmodule = {
- PyModuleDef_HEAD_INIT,
- "winsound",
- sound_module_doc,
- -1,
- sound_methods,
- NULL,
- NULL,
- NULL,
- NULL
-};
-
PyMODINIT_FUNC
-PyInit_winsound(void)
+initwinsound(void)
{
PyObject *dict;
- PyObject *module = PyModule_Create(&winsoundmodule);
+ PyObject *module = Py_InitModule3("winsound",
+ sound_methods,
+ sound_module_doc);
if (module == NULL)
- return NULL;
+ return;
dict = PyModule_GetDict(module);
ADD_DEFINE(SND_ASYNC);
@@ -246,5 +188,4 @@ PyInit_winsound(void)
ADD_DEFINE(MB_ICONEXCLAMATION);
ADD_DEFINE(MB_ICONHAND);
ADD_DEFINE(MB_ICONQUESTION);
- return module;
}