From 65e4cb10d9d9964f30bc72561bf0e86833328a3b Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Sat, 22 Nov 2014 12:54:57 -0800 Subject: [PATCH] Issue #22919: Windows build updated to support VC 14.0 (Visual Studio 2015), which will be used for the official 3.5 release. --- .gitignore | 28 +- .hgignore | 18 +- Lib/ctypes/util.py | 6 +- Lib/distutils/command/build_ext.py | 2 +- Lib/distutils/command/wininst-14.0-amd64.exe | Bin 0 -> 84480 bytes Lib/distutils/command/wininst-14.0.exe | Bin 0 -> 75264 bytes Lib/distutils/msvc9compiler.py | 3 + Lib/distutils/msvccompiler.py | 3 + Lib/distutils/sysconfig.py | 27 +- Lib/sysconfig.py | 17 +- Misc/NEWS | 5 + Modules/posixmodule.c | 22 +- Modules/socketmodule.c | 11 +- Modules/timemodule.c | 13 - PC/VS9.0/_bz2.vcproj | 581 ------ PC/VS9.0/_ctypes.vcproj | 705 ------- PC/VS9.0/_ctypes_test.vcproj | 521 ----- PC/VS9.0/_decimal.vcproj | 743 ------- PC/VS9.0/_elementtree.vcproj | 613 ------ PC/VS9.0/_hashlib.vcproj | 537 ----- PC/VS9.0/_lzma.vcproj | 537 ----- PC/VS9.0/_msi.vcproj | 529 ----- PC/VS9.0/_multiprocessing.vcproj | 541 ----- PC/VS9.0/_socket.vcproj | 537 ----- PC/VS9.0/_sqlite3.vcproj | 609 ------ PC/VS9.0/_ssl.vcproj | 537 ----- PC/VS9.0/_testbuffer.vcproj | 521 ----- PC/VS9.0/_testcapi.vcproj | 521 ----- PC/VS9.0/_testimportmultiple.vcproj | 521 ----- PC/VS9.0/_tkinter.vcproj | 541 ----- PC/VS9.0/bdist_wininst.vcproj | 270 --- PC/VS9.0/debug.vsprops | 15 - PC/VS9.0/kill_python.c | 178 -- PC/VS9.0/kill_python.vcproj | 279 --- PC/VS9.0/make_buildinfo.c | 195 -- PC/VS9.0/make_buildinfo.vcproj | 101 - PC/VS9.0/make_versioninfo.vcproj | 324 --- PC/VS9.0/pcbuild.sln | 690 ------- PC/VS9.0/pginstrument.vsprops | 34 - PC/VS9.0/pgupdate.vsprops | 14 - PC/VS9.0/pyd.vsprops | 28 - PC/VS9.0/pyd_d.vsprops | 36 - PC/VS9.0/pyexpat.vcproj | 553 ------ PC/VS9.0/pyproject.vsprops | 91 - PC/VS9.0/python.vcproj | 637 ------ PC/VS9.0/python3dll.vcproj | 246 --- PC/VS9.0/pythoncore.vcproj | 1877 ------------------ PC/VS9.0/pythonw.vcproj | 618 ------ PC/VS9.0/release.vsprops | 15 - PC/VS9.0/select.vcproj | 537 ----- PC/VS9.0/sqlite3.vcproj | 537 ----- PC/VS9.0/sqlite3.vsprops | 14 - PC/VS9.0/ssl.vcproj | 189 -- PC/VS9.0/unicodedata.vcproj | 533 ----- PC/VS9.0/winsound.vcproj | 523 ----- PC/VS9.0/x64.vsprops | 22 - PC/VS9.0/xxlimited.vcproj | 417 ---- PC/bdist_wininst/archive.h | 9 +- PC/bdist_wininst/extract.c | 9 +- PC/bdist_wininst/install.c | 38 +- PC/bdist_wininst/install.rc | 9 +- PC/bdist_wininst/resource.h | 9 +- PC/pyconfig.h | 7 + PC/pylauncher.rc | 2 +- PC/python3.def | 3 +- PC/python3.mak | 14 - PC/python35gen.py | 26 - PC/python35stub.def | 701 ------- PC/python_nt.rc | 2 +- PC/readme.txt | 5 - PCbuild/_bz2.vcxproj | 184 +- PCbuild/_ctypes.vcxproj | 211 +- PCbuild/_ctypes_test.vcxproj | 131 +- PCbuild/_decimal.vcxproj | 212 +- PCbuild/_elementtree.vcxproj | 183 +- PCbuild/_freeze_importlib.vcxproj | 169 +- PCbuild/_hashlib.vcxproj | 222 +-- PCbuild/_lzma.vcxproj | 189 +- PCbuild/_msi.vcxproj | 164 +- PCbuild/_multiprocessing.vcxproj | 162 +- PCbuild/_overlapped.vcxproj | 170 +- PCbuild/_socket.vcxproj | 162 +- PCbuild/_sqlite3.vcxproj | 183 +- PCbuild/_ssl.vcxproj | 222 +-- PCbuild/_testbuffer.vcxproj | 156 +- PCbuild/_testcapi.vcxproj | 156 +- PCbuild/_testembed.vcxproj | 130 +- PCbuild/_testimportmultiple.vcxproj | 156 +- PCbuild/_tkinter.vcxproj | 191 +- PCbuild/bdist_wininst.vcxproj | 131 +- PCbuild/build.bat | 13 +- PCbuild/build_pgo.bat | 24 +- PCbuild/clean.bat | 5 + PCbuild/debug.props | 31 - PCbuild/env.bat | 15 +- PCbuild/idle.bat | 6 +- PCbuild/installer.bmp | Bin 58806 -> 0 bytes PCbuild/kill_python.c | 178 -- PCbuild/kill_python.vcxproj | 120 -- PCbuild/kill_python.vcxproj.filters | 13 - PCbuild/libeay.vcxproj | 892 +++++++++ PCbuild/make_buildinfo.c | 194 -- PCbuild/make_buildinfo.vcxproj | 52 - PCbuild/make_buildinfo.vcxproj.filters | 14 - PCbuild/make_versioninfo.vcxproj | 200 -- PCbuild/make_versioninfo.vcxproj.filters | 13 - PCbuild/openssl.props | 67 + PCbuild/pcbuild.proj | 86 + PCbuild/pcbuild.sln | 297 ++- PCbuild/pginstrument.props | 38 - PCbuild/pgupdate.props | 17 - PCbuild/pyd.props | 25 - PCbuild/pyd_d.props | 31 - PCbuild/pyexpat.vcxproj | 173 +- PCbuild/pylauncher.vcxproj | 249 +-- PCbuild/pyproject.props | 184 +- PCbuild/python.props | 108 + PCbuild/python.vcxproj | 462 +---- PCbuild/python3dll.vcxproj | 177 +- PCbuild/pythoncore.vcxproj | 432 +--- PCbuild/pythonw.vcxproj | 278 +-- PCbuild/pywlauncher.vcxproj | 189 +- PCbuild/readme.txt | 146 +- PCbuild/release.props | 23 - PCbuild/rt.bat | 2 +- PCbuild/select.vcxproj | 171 +- PCbuild/sqlite3.props | 16 - PCbuild/sqlite3.vcxproj | 181 +- PCbuild/ssl.vcxproj | 251 --- PCbuild/ssleay.vcxproj | 121 ++ PCbuild/tcl.vcxproj | 185 +- PCbuild/tcltk.props | 67 +- PCbuild/tix.vcxproj | 165 +- PCbuild/tk.vcxproj | 179 +- PCbuild/unicodedata.vcxproj | 155 +- PCbuild/vs9to10.py | 56 - PCbuild/vs9to8.py | 34 - PCbuild/winsound.vcxproj | 155 +- PCbuild/x64.props | 26 - PCbuild/xxlimited.vcxproj | 152 +- Tools/buildbot/build.bat | 7 +- Tools/buildbot/buildmsi.bat | 3 +- Tools/buildbot/clean.bat | 28 +- Tools/ssl/sslspeed.vcxproj | 70 + 144 files changed, 2494 insertions(+), 26822 deletions(-) create mode 100644 Lib/distutils/command/wininst-14.0-amd64.exe create mode 100644 Lib/distutils/command/wininst-14.0.exe delete mode 100644 PC/VS9.0/_bz2.vcproj delete mode 100644 PC/VS9.0/_ctypes.vcproj delete mode 100644 PC/VS9.0/_ctypes_test.vcproj delete mode 100644 PC/VS9.0/_decimal.vcproj delete mode 100644 PC/VS9.0/_elementtree.vcproj delete mode 100644 PC/VS9.0/_hashlib.vcproj delete mode 100644 PC/VS9.0/_lzma.vcproj delete mode 100644 PC/VS9.0/_msi.vcproj delete mode 100644 PC/VS9.0/_multiprocessing.vcproj delete mode 100644 PC/VS9.0/_socket.vcproj delete mode 100644 PC/VS9.0/_sqlite3.vcproj delete mode 100644 PC/VS9.0/_ssl.vcproj delete mode 100644 PC/VS9.0/_testbuffer.vcproj delete mode 100644 PC/VS9.0/_testcapi.vcproj delete mode 100644 PC/VS9.0/_testimportmultiple.vcproj delete mode 100644 PC/VS9.0/_tkinter.vcproj delete mode 100644 PC/VS9.0/bdist_wininst.vcproj delete mode 100644 PC/VS9.0/debug.vsprops delete mode 100644 PC/VS9.0/kill_python.c delete mode 100644 PC/VS9.0/kill_python.vcproj delete mode 100644 PC/VS9.0/make_buildinfo.c delete mode 100644 PC/VS9.0/make_buildinfo.vcproj delete mode 100644 PC/VS9.0/make_versioninfo.vcproj delete mode 100644 PC/VS9.0/pcbuild.sln delete mode 100644 PC/VS9.0/pginstrument.vsprops delete mode 100644 PC/VS9.0/pgupdate.vsprops delete mode 100644 PC/VS9.0/pyd.vsprops delete mode 100644 PC/VS9.0/pyd_d.vsprops delete mode 100644 PC/VS9.0/pyexpat.vcproj delete mode 100644 PC/VS9.0/pyproject.vsprops delete mode 100644 PC/VS9.0/python.vcproj delete mode 100644 PC/VS9.0/python3dll.vcproj delete mode 100644 PC/VS9.0/pythoncore.vcproj delete mode 100644 PC/VS9.0/pythonw.vcproj delete mode 100644 PC/VS9.0/release.vsprops delete mode 100644 PC/VS9.0/select.vcproj delete mode 100644 PC/VS9.0/sqlite3.vcproj delete mode 100644 PC/VS9.0/sqlite3.vsprops delete mode 100644 PC/VS9.0/ssl.vcproj delete mode 100644 PC/VS9.0/unicodedata.vcproj delete mode 100644 PC/VS9.0/winsound.vcproj delete mode 100644 PC/VS9.0/x64.vsprops delete mode 100644 PC/VS9.0/xxlimited.vcproj delete mode 100644 PC/python3.mak delete mode 100644 PC/python35gen.py delete mode 100644 PC/python35stub.def create mode 100644 PCbuild/clean.bat delete mode 100644 PCbuild/debug.props delete mode 100644 PCbuild/installer.bmp delete mode 100644 PCbuild/kill_python.c delete mode 100644 PCbuild/kill_python.vcxproj delete mode 100644 PCbuild/kill_python.vcxproj.filters create mode 100644 PCbuild/libeay.vcxproj delete mode 100644 PCbuild/make_buildinfo.c delete mode 100644 PCbuild/make_buildinfo.vcxproj delete mode 100644 PCbuild/make_buildinfo.vcxproj.filters delete mode 100644 PCbuild/make_versioninfo.vcxproj delete mode 100644 PCbuild/make_versioninfo.vcxproj.filters create mode 100644 PCbuild/openssl.props create mode 100644 PCbuild/pcbuild.proj delete mode 100644 PCbuild/pginstrument.props delete mode 100644 PCbuild/pgupdate.props delete mode 100644 PCbuild/pyd.props delete mode 100644 PCbuild/pyd_d.props create mode 100644 PCbuild/python.props delete mode 100644 PCbuild/release.props delete mode 100644 PCbuild/sqlite3.props delete mode 100644 PCbuild/ssl.vcxproj create mode 100644 PCbuild/ssleay.vcxproj delete mode 100644 PCbuild/vs9to10.py delete mode 100644 PCbuild/vs9to8.py delete mode 100644 PCbuild/x64.props create mode 100644 Tools/ssl/sslspeed.vcxproj diff --git a/.gitignore b/.gitignore index 2343e9430e9..0af6671efd4 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ .gdb_history Doc/build/ Doc/venv/ +Lib/distutils/command/*.pdb Lib/lib2to3/*.pickle Lib/test/data/* Lib/_sysconfigdata.py @@ -27,23 +28,26 @@ Programs/_freeze_importlib Programs/_testembed PC/python_nt*.h PC/pythonnt_rc*.h -PCbuild/*.bsc -PCbuild/*.dll -PCbuild/*.exe -PCbuild/*.exp -PCbuild/*.lib -PCbuild/*.ncb -PCbuild/*.o -PCbuild/*.pdb +PC/*/*.exe +PC/*/*.exp +PC/*/*.lib +PC/*/*.bsc +PC/*/*.dll +PC/*/*.pdb +PC/*/*.user +PC/*/*.ncb +PC/*/*.suo +PC/*/Win32-temp-* +PC/*/x64-temp-* +PC/*/amd64 PCbuild/*.user PCbuild/*.suo PCbuild/*.*sdf -PCbuild/Win32-temp-* -PCbuild/x64-temp-* PCbuild/*-pgi PCbuild/*-pgo PCbuild/amd64/ -PCbuild/ipch +PCbuild/obj +PCBuild/win32 .purify Parser/pgen __pycache__ @@ -78,3 +82,5 @@ TAGS coverage/ externals/ htmlcov/ +Tools/ssl/amd64 +Tools/ssl/win32 diff --git a/.hgignore b/.hgignore index d22a58af462..86978cf9f7a 100644 --- a/.hgignore +++ b/.hgignore @@ -50,13 +50,12 @@ libpython*.so* *.pyd *.cover *~ +Lib/distutils/command/*.pdb Lib/lib2to3/*.pickle Lib/test/data/* Misc/*.wpu PC/python_nt*.h PC/pythonnt_rc*.h -PC/*.obj -PC/*.exe PC/*/*.exe PC/*/*.exp PC/*/*.lib @@ -69,23 +68,14 @@ PC/*/*.suo PC/*/Win32-temp-* PC/*/x64-temp-* PC/*/amd64 -PCbuild/*.exe -PCbuild/*.dll -PCbuild/*.pdb -PCbuild/*.lib -PCbuild/*.exp -PCbuild/*.o -PCbuild/*.ncb -PCbuild/*.bsc PCbuild/*.user PCbuild/*.suo PCbuild/*.*sdf -PCbuild/Win32-temp-* -PCbuild/x64-temp-* PCbuild/*-pgi PCbuild/*-pgo PCbuild/amd64 -PCbuild/ipch +PCbuild/obj +PCbuild/win32 Tools/unicode/build/ Tools/unicode/MAPPINGS/ BuildLog.htm @@ -100,3 +90,5 @@ htmlcov/ *.gcno *.gcov coverage.info +Tools/ssl/amd64 +Tools/ssl/win32 diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py index 595113bffde..9c19899da57 100644 --- a/Lib/ctypes/util.py +++ b/Lib/ctypes/util.py @@ -19,6 +19,8 @@ if os.name == "nt": i = i + len(prefix) s, rest = sys.version[i:].split(" ", 1) majorVersion = int(s[:-2]) - 6 + if majorVersion >= 13: + majorVersion += 1 minorVersion = int(s[2:3]) / 10.0 # I don't think paths are affected by minor version in version 6 if majorVersion == 6: @@ -36,8 +38,10 @@ if os.name == "nt": return None if version <= 6: clibname = 'msvcrt' - else: + elif version <= 13: clibname = 'msvcr%d' % (version * 10) + else: + clibname = 'appcrt%d' % (version * 10) # If python was built with in debug mode import importlib.machinery diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py index 54ce13454fa..605efbd68f1 100644 --- a/Lib/distutils/command/build_ext.py +++ b/Lib/distutils/command/build_ext.py @@ -209,7 +209,7 @@ class build_ext(Command): if MSVC_VERSION >= 9: # Use the .lib files for the correct architecture if self.plat_name == 'win32': - suffix = '' + suffix = 'win32' else: # win-amd64 or win-ia64 suffix = self.plat_name[4:] diff --git a/Lib/distutils/command/wininst-14.0-amd64.exe b/Lib/distutils/command/wininst-14.0-amd64.exe new file mode 100644 index 0000000000000000000000000000000000000000..9affe13039517798970f5e3a8d9f4d1d13e79464 GIT binary patch literal 84480 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%0AApdsA%z|%g>up>$nUTcWSs85Z`;uJlfBlT1UEmo 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 F{6EauG?M@T literal 0 HcmV?d00001 diff --git a/Lib/distutils/command/wininst-14.0.exe b/Lib/distutils/command/wininst-14.0.exe new file mode 100644 index 0000000000000000000000000000000000000000..3ce71b9f1b49afc4e6eb8a60ef551e7ced3e04b6 GIT binary patch literal 75264 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

8;GyV40Z#1M} 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 y7FSD^Sp{2%Wmq+9WrNu;HiGTV#= 13: + # v13 was skipped and should be v14 + majorVersion += 1 minorVersion = int(s[2:3]) / 10.0 # I don't think paths are affected by minor version in version 6 if majorVersion == 6: diff --git a/Lib/distutils/msvccompiler.py b/Lib/distutils/msvccompiler.py index 81166569619..1048cd41593 100644 --- a/Lib/distutils/msvccompiler.py +++ b/Lib/distutils/msvccompiler.py @@ -157,6 +157,9 @@ def get_build_version(): i = i + len(prefix) s, rest = sys.version[i:].split(" ", 1) majorVersion = int(s[:-2]) - 6 + if majorVersion >= 13: + # v13 was skipped and should be v14 + majorVersion += 1 minorVersion = int(s[2:3]) / 10.0 # I don't think paths are affected by minor version in version 6 if majorVersion == 6: diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py index a1452fe1674..573724ddd77 100644 --- a/Lib/distutils/sysconfig.py +++ b/Lib/distutils/sysconfig.py @@ -9,6 +9,7 @@ Written by: Fred L. Drake, Jr. Email: """ +import _imp import os import re import sys @@ -22,23 +23,15 @@ BASE_PREFIX = os.path.normpath(sys.base_prefix) BASE_EXEC_PREFIX = os.path.normpath(sys.base_exec_prefix) # Path to the base directory of the project. On Windows the binary may -# live in project/PCBuild9. If we're dealing with an x64 Windows build, -# it'll live in project/PCbuild/amd64. +# live in project/PCBuild/win32 or project/PCBuild/amd64. # set for cross builds if "_PYTHON_PROJECT_BASE" in os.environ: project_base = os.path.abspath(os.environ["_PYTHON_PROJECT_BASE"]) else: project_base = os.path.dirname(os.path.abspath(sys.executable)) -if os.name == "nt" and "pcbuild" in project_base[-8:].lower(): - project_base = os.path.abspath(os.path.join(project_base, os.path.pardir)) -# PC/VS7.1 -if os.name == "nt" and "\\pc\\v" in project_base[-10:].lower(): - project_base = os.path.abspath(os.path.join(project_base, os.path.pardir, - os.path.pardir)) -# PC/AMD64 -if os.name == "nt" and "\\pcbuild\\amd64" in project_base[-14:].lower(): - project_base = os.path.abspath(os.path.join(project_base, os.path.pardir, - os.path.pardir)) +if (os.name == 'nt' and + project_base.lower().endswith(('\\pcbuild\\win32', '\\pcbuild\\amd64'))): + project_base = os.path.dirname(os.path.dirname(project_base)) # python_build: (Boolean) if true, we're either building Python or # building an extension with an un-installed Python, so we use @@ -51,11 +44,9 @@ def _is_python_source_dir(d): return True return False _sys_home = getattr(sys, '_home', None) -if _sys_home and os.name == 'nt' and \ - _sys_home.lower().endswith(('pcbuild', 'pcbuild\\amd64')): - _sys_home = os.path.dirname(_sys_home) - if _sys_home.endswith('pcbuild'): # must be amd64 - _sys_home = os.path.dirname(_sys_home) +if (_sys_home and os.name == 'nt' and + _sys_home.lower().endswith(('\\pcbuild\\win32', '\\pcbuild\\amd64'))): + _sys_home = os.path.dirname(os.path.dirname(_sys_home)) def _python_build(): if _sys_home: return _is_python_source_dir(_sys_home) @@ -468,7 +459,7 @@ def _init_nt(): # XXX hmmm.. a normal install puts include files here g['INCLUDEPY'] = get_python_inc(plat_specific=0) - g['EXT_SUFFIX'] = '.pyd' + g['EXT_SUFFIX'] = _imp.extension_suffixes()[0] g['EXE'] = ".exe" g['VERSION'] = get_python_version().replace(".", "") g['BINDIR'] = os.path.dirname(os.path.abspath(sys.executable)) diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py index dbf77672054..c5f541b3d55 100644 --- a/Lib/sysconfig.py +++ b/Lib/sysconfig.py @@ -109,13 +109,8 @@ else: # unable to retrieve the real program name _PROJECT_BASE = _safe_realpath(os.getcwd()) -if os.name == "nt" and "pcbuild" in _PROJECT_BASE[-8:].lower(): - _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir)) -# PC/VS7.1 -if os.name == "nt" and "\\pc\\v" in _PROJECT_BASE[-10:].lower(): - _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir, pardir)) -# PC/AMD64 -if os.name == "nt" and "\\pcbuild\\amd64" in _PROJECT_BASE[-14:].lower(): +if (os.name == 'nt' and + _PROJECT_BASE.lower().endswith(('\\pcbuild\\win32', '\\pcbuild\\amd64'))): _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir, pardir)) # set for cross builds @@ -129,11 +124,9 @@ def _is_python_source_dir(d): return False _sys_home = getattr(sys, '_home', None) -if _sys_home and os.name == 'nt' and \ - _sys_home.lower().endswith(('pcbuild', 'pcbuild\\amd64')): - _sys_home = os.path.dirname(_sys_home) - if _sys_home.endswith('pcbuild'): # must be amd64 - _sys_home = os.path.dirname(_sys_home) +if (_sys_home and os.name == 'nt' and + _sys_home.lower().endswith(('\\pcbuild\\win32', '\\pcbuild\\amd64'))): + _sys_home = os.path.dirname(os.path.dirname(_sys_home)) def is_python_build(check_home=False): if check_home and _sys_home: return _is_python_source_dir(_sys_home) diff --git a/Misc/NEWS b/Misc/NEWS index 299f432fe4a..9b000d69731 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -1362,6 +1362,11 @@ Build - Issue #17219: Add library build dir for Python extension cross-builds. +- Issue #22919: Windows build updated to support VC 14.0 (Visual Studio 2015), + which will be used for the official release. + +- Issue #21236: Build _msi.pyd with cabinet.lib instead of fci.lib + C API ----- diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index bd7cd8ad483..d8e24413318 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -1046,15 +1046,33 @@ PyLong_FromPy_off_t(Py_off_t offset) /* The actual size of the structure is determined at runtime. * Only the first items must be present. */ + +#if _MSC_VER >= 1900 + +typedef struct { + CRITICAL_SECTION lock; + intptr_t osfhnd; + __int64 startpos; + char osfile; +} my_ioinfo; + +#define IOINFO_L2E 6 +#define IOINFO_ARRAYS 128 + +#else + typedef struct { intptr_t osfhnd; char osfile; } my_ioinfo; -extern __declspec(dllimport) char * __pioinfo[]; #define IOINFO_L2E 5 -#define IOINFO_ARRAY_ELTS (1 << IOINFO_L2E) #define IOINFO_ARRAYS 64 + +#endif + +extern __declspec(dllimport) char * __pioinfo[]; +#define IOINFO_ARRAY_ELTS (1 << IOINFO_L2E) #define _NHANDLE_ (IOINFO_ARRAYS * IOINFO_ARRAY_ELTS) #define FOPEN 0x01 #define _NO_CONSOLE_FILENO (intptr_t)-2 diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index 68bfeb4f194..94cf7738e48 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -284,6 +284,11 @@ if_indextoname(index) -- return the corresponding interface name\n\ # include # endif +#if defined(_MSC_VER) && _MSC_VER >= 1800 +/* Provides the IsWindows7SP1OrGreater() function */ +#include +#endif + #endif #include @@ -5845,11 +5850,15 @@ PyInit__socket(void) #ifdef MS_WINDOWS if (support_wsa_no_inherit == -1) { +#if defined(_MSC_VER) && _MSC_VER >= 1800 + support_wsa_no_inherit = IsWindows7SP1OrGreater(); +#else DWORD version = GetVersion(); DWORD major = (DWORD)LOBYTE(LOWORD(version)); DWORD minor = (DWORD)HIBYTE(LOWORD(version)); /* need Windows 7 SP1, 2008 R2 SP1 or later */ - support_wsa_no_inherit = (major >= 6 && minor >= 1); + support_wsa_no_inherit = major > 6 || (major == 6 && minor >= 1); +#endif } #endif diff --git a/Modules/timemodule.c b/Modules/timemodule.c index 1f07bcc90fd..7f5f3149afd 100644 --- a/Modules/timemodule.c +++ b/Modules/timemodule.c @@ -34,10 +34,6 @@ static int floatsleep(double); static PyObject* floattime(_Py_clock_info_t *info); -#ifdef MS_WINDOWS -static OSVERSIONINFOEX winver; -#endif - static PyObject * time_time(PyObject *self, PyObject *unused) { @@ -1359,15 +1355,6 @@ PyInit_time(void) if (PyStructSequence_InitType2(&StructTimeType, &struct_time_type_desc) < 0) return NULL; - -#ifdef MS_WINDOWS - winver.dwOSVersionInfoSize = sizeof(winver); - if (!GetVersionEx((OSVERSIONINFO*)&winver)) { - Py_DECREF(m); - PyErr_SetFromWindowsErr(0); - return NULL; - } -#endif } Py_INCREF(&StructTimeType); #ifdef HAVE_STRUCT_TM_TM_ZONE diff --git a/PC/VS9.0/_bz2.vcproj b/PC/VS9.0/_bz2.vcproj deleted file mode 100644 index 7ceb8c7f089..00000000000 --- a/PC/VS9.0/_bz2.vcproj +++ /dev/null @@ -1,581 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/_ctypes.vcproj b/PC/VS9.0/_ctypes.vcproj deleted file mode 100644 index 8e5cba14fc8..00000000000 --- a/PC/VS9.0/_ctypes.vcproj +++ /dev/null @@ -1,705 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/_ctypes_test.vcproj b/PC/VS9.0/_ctypes_test.vcproj deleted file mode 100644 index 70335462113..00000000000 --- a/PC/VS9.0/_ctypes_test.vcproj +++ /dev/null @@ -1,521 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/_decimal.vcproj b/PC/VS9.0/_decimal.vcproj deleted file mode 100644 index b9fabb0cb95..00000000000 --- a/PC/VS9.0/_decimal.vcproj +++ /dev/null @@ -1,743 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/_elementtree.vcproj b/PC/VS9.0/_elementtree.vcproj deleted file mode 100644 index f9d7375c0c1..00000000000 --- a/PC/VS9.0/_elementtree.vcproj +++ /dev/null @@ -1,613 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/_hashlib.vcproj b/PC/VS9.0/_hashlib.vcproj deleted file mode 100644 index 77417ec0f5f..00000000000 --- a/PC/VS9.0/_hashlib.vcproj +++ /dev/null @@ -1,537 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/_lzma.vcproj b/PC/VS9.0/_lzma.vcproj deleted file mode 100644 index 7c6003f10e2..00000000000 --- a/PC/VS9.0/_lzma.vcproj +++ /dev/null @@ -1,537 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/_msi.vcproj b/PC/VS9.0/_msi.vcproj deleted file mode 100644 index cb230e10d0d..00000000000 --- a/PC/VS9.0/_msi.vcproj +++ /dev/null @@ -1,529 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/_multiprocessing.vcproj b/PC/VS9.0/_multiprocessing.vcproj deleted file mode 100644 index fb3d1e70bcc..00000000000 --- a/PC/VS9.0/_multiprocessing.vcproj +++ /dev/null @@ -1,541 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/_socket.vcproj b/PC/VS9.0/_socket.vcproj deleted file mode 100644 index ff1f6d4e3f5..00000000000 --- a/PC/VS9.0/_socket.vcproj +++ /dev/null @@ -1,537 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/_sqlite3.vcproj b/PC/VS9.0/_sqlite3.vcproj deleted file mode 100644 index 82c57ae25fd..00000000000 --- a/PC/VS9.0/_sqlite3.vcproj +++ /dev/null @@ -1,609 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/_ssl.vcproj b/PC/VS9.0/_ssl.vcproj deleted file mode 100644 index b47dc2740c5..00000000000 --- a/PC/VS9.0/_ssl.vcproj +++ /dev/null @@ -1,537 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/_testbuffer.vcproj b/PC/VS9.0/_testbuffer.vcproj deleted file mode 100644 index 03377e17721..00000000000 --- a/PC/VS9.0/_testbuffer.vcproj +++ /dev/null @@ -1,521 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/_testcapi.vcproj b/PC/VS9.0/_testcapi.vcproj deleted file mode 100644 index 453300a6427..00000000000 --- a/PC/VS9.0/_testcapi.vcproj +++ /dev/null @@ -1,521 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/_testimportmultiple.vcproj b/PC/VS9.0/_testimportmultiple.vcproj deleted file mode 100644 index 14d910dfdf5..00000000000 --- a/PC/VS9.0/_testimportmultiple.vcproj +++ /dev/null @@ -1,521 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/_tkinter.vcproj b/PC/VS9.0/_tkinter.vcproj deleted file mode 100644 index 5163317575c..00000000000 --- a/PC/VS9.0/_tkinter.vcproj +++ /dev/null @@ -1,541 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/bdist_wininst.vcproj b/PC/VS9.0/bdist_wininst.vcproj deleted file mode 100644 index b8cc7ad6a87..00000000000 --- a/PC/VS9.0/bdist_wininst.vcproj +++ /dev/null @@ -1,270 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/debug.vsprops b/PC/VS9.0/debug.vsprops deleted file mode 100644 index bc643cb6be5..00000000000 --- a/PC/VS9.0/debug.vsprops +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/PC/VS9.0/kill_python.c b/PC/VS9.0/kill_python.c deleted file mode 100644 index dbc94255b7a..00000000000 --- a/PC/VS9.0/kill_python.c +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Helper program for killing lingering python[_d].exe processes before - * building, thus attempting to avoid build failures due to files being - * locked. - */ - -#include -#include -#include -#include - -#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. python35[_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 deleted file mode 100644 index a34107aab7a..00000000000 --- a/PC/VS9.0/kill_python.vcproj +++ /dev/null @@ -1,279 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/make_buildinfo.c b/PC/VS9.0/make_buildinfo.c deleted file mode 100644 index fb4a64a9718..00000000000 --- a/PC/VS9.0/make_buildinfo.c +++ /dev/null @@ -1,195 +0,0 @@ -#include -#include -#include -#include -#include - -#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. - - However, if a second argument is provided, this will be used - as a temporary directory where any getbuildinfo2.c and - getbuildinfo.o files are put. This is useful if multiple - configurations are being built in parallel, to avoid them - trampling each other's files. - -*/ - -int make_buildinfo2(const char *tmppath) -{ - 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 \""); - strcat_s(command, CMD_SIZE, tmppath); /* quoted tmppath */ - strcat_s(command, CMD_SIZE, "getbuildinfo2.c\""); - - puts(command); fflush(stdout); - if (system(command) < 0) - return 0; - return 1; -} - -const char DELIMS[] = { " \n" }; - -int get_mercurial_info(char * hgbranch, char * hgtag, char * hgrev, int size) -{ - int result = 0; - char filename[CMD_SIZE]; - char cmdline[CMD_SIZE]; - - strcpy_s(filename, CMD_SIZE, "tmpXXXXXX"); - if (_mktemp_s(filename, CMD_SIZE) == 0) { - int rc; - - strcpy_s(cmdline, CMD_SIZE, "hg id -bit > "); - strcat_s(cmdline, CMD_SIZE, filename); - rc = system(cmdline); - if (rc == 0) { - FILE * fp; - - if (fopen_s(&fp, filename, "r") == 0) { - char * cp = fgets(cmdline, CMD_SIZE, fp); - - if (cp) { - char * context = NULL; - char * tp = strtok_s(cp, DELIMS, &context); - if (tp) { - strcpy_s(hgrev, size, tp); - tp = strtok_s(NULL, DELIMS, &context); - if (tp) { - strcpy_s(hgbranch, size, tp); - tp = strtok_s(NULL, DELIMS, &context); - if (tp) { - strcpy_s(hgtag, size, tp); - result = 1; - } - } - } - } - fclose(fp); - } - } - _unlink(filename); - } - return result; -} - -int main(int argc, char*argv[]) -{ - char command[CMD_SIZE] = "cl.exe -c -D_WIN32 -DUSE_DL_EXPORT -D_WINDOWS -DWIN32 -D_WINDLL "; - char tmppath[CMD_SIZE] = ""; - int do_unlink, result; - char *tmpdir = NULL; - if (argc <= 2 || argc > 3) { - fprintf(stderr, "make_buildinfo $(ConfigurationName) [tmpdir]\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 (argc > 2) { - tmpdir = argv[2]; - strcat_s(tmppath, _countof(tmppath), tmpdir); - /* Hack fix for bad command line: If the command is issued like this: - * $(SolutionDir)make_buildinfo.exe" Debug "$(IntDir)" - * we will get a trailing quote because IntDir ends with a backslash that then - * escapes the final ". To simplify the life for developers, catch that problem - * here by cutting it off. - * The proper command line, btw is: - * $(SolutionDir)make_buildinfo.exe" Debug "$(IntDir)\" - * Hooray for command line parsing on windows. - */ - if (strlen(tmppath) > 0 && tmppath[strlen(tmppath)-1] == '"') - tmppath[strlen(tmppath)-1] = '\0'; - strcat_s(tmppath, _countof(tmppath), "\\"); - } - - if ((do_unlink = make_buildinfo2(tmppath))) { - strcat_s(command, CMD_SIZE, "\""); - strcat_s(command, CMD_SIZE, tmppath); - strcat_s(command, CMD_SIZE, "getbuildinfo2.c\" -DSUBWCREV "); - } - else { - char hgtag[CMD_SIZE]; - char hgbranch[CMD_SIZE]; - char hgrev[CMD_SIZE]; - - if (get_mercurial_info(hgbranch, hgtag, hgrev, CMD_SIZE)) { - strcat_s(command, CMD_SIZE, "-DHGBRANCH=\\\""); - strcat_s(command, CMD_SIZE, hgbranch); - strcat_s(command, CMD_SIZE, "\\\""); - - strcat_s(command, CMD_SIZE, " -DHGTAG=\\\""); - strcat_s(command, CMD_SIZE, hgtag); - strcat_s(command, CMD_SIZE, "\\\""); - - strcat_s(command, CMD_SIZE, " -DHGVERSION=\\\""); - strcat_s(command, CMD_SIZE, hgrev); - strcat_s(command, CMD_SIZE, "\\\" "); - } - strcat_s(command, CMD_SIZE, "..\\..\\Modules\\getbuildinfo.c"); - } - strcat_s(command, CMD_SIZE, " -Fo\""); - strcat_s(command, CMD_SIZE, tmppath); - strcat_s(command, CMD_SIZE, "getbuildinfo.o\" -I..\\..\\Include -I..\\..\\PC"); - puts(command); fflush(stdout); - result = system(command); - if (do_unlink) { - command[0] = '\0'; - strcat_s(command, CMD_SIZE, "\""); - strcat_s(command, CMD_SIZE, tmppath); - strcat_s(command, CMD_SIZE, "getbuildinfo2.c\""); - _unlink(command); - } - if (result < 0) - return EXIT_FAILURE; - return 0; -} diff --git a/PC/VS9.0/make_buildinfo.vcproj b/PC/VS9.0/make_buildinfo.vcproj deleted file mode 100644 index 924065db42b..00000000000 --- a/PC/VS9.0/make_buildinfo.vcproj +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/make_versioninfo.vcproj b/PC/VS9.0/make_versioninfo.vcproj deleted file mode 100644 index 0a1fd28bc41..00000000000 --- a/PC/VS9.0/make_versioninfo.vcproj +++ /dev/null @@ -1,324 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/pcbuild.sln b/PC/VS9.0/pcbuild.sln deleted file mode 100644 index ba7f69cfadb..00000000000 --- a/PC/VS9.0/pcbuild.sln +++ /dev/null @@ -1,690 +0,0 @@ -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}") = "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}") = "_decimal", "_decimal.vcproj", "{0E9791DB-593A-465F-98BC-681011311617}" - ProjectSection(ProjectDependencies) = postProject - {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} - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0} = {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0} - {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}") = "_testimportmultiple", "_testimportmultiple.vcproj", "{36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}" - 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}") = "_lzma", "_lzma.vcproj", "{F9D71780-F393-11E0-BE50-0800200C9A66}" - 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} - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0} = {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0} - {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}") = "ssl", "ssl.vcproj", "{E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}" - ProjectSection(ProjectDependencies) = postProject - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} = {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "kill_python", "kill_python.vcproj", "{6DE10744-E396-40A5-B4E2-1B69AA7C8D31}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python3dll", "python3dll.vcproj", "{885D4898-D08D-4091-9C40-C700CFE3FC5A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xxlimited", "xxlimited.vcproj", "{F749B822-B489-4CA5-A3AD-CE078F5F338A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testbuffer", "_testbuffer.vcproj", "{A2697BD3-28C1-4AEC-9106-8B748639FD16}" - ProjectSection(ProjectDependencies) = postProject - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} - EndProjectSection -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 - {0E9791DB-593A-465F-98BC-681011311617}.Debug|Win32.ActiveCfg = Debug|Win32 - {0E9791DB-593A-465F-98BC-681011311617}.Debug|Win32.Build.0 = Debug|Win32 - {0E9791DB-593A-465F-98BC-681011311617}.Debug|x64.ActiveCfg = Debug|x64 - {0E9791DB-593A-465F-98BC-681011311617}.Debug|x64.Build.0 = Debug|x64 - {0E9791DB-593A-465F-98BC-681011311617}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {0E9791DB-593A-465F-98BC-681011311617}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {0E9791DB-593A-465F-98BC-681011311617}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {0E9791DB-593A-465F-98BC-681011311617}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {0E9791DB-593A-465F-98BC-681011311617}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {0E9791DB-593A-465F-98BC-681011311617}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {0E9791DB-593A-465F-98BC-681011311617}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {0E9791DB-593A-465F-98BC-681011311617}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {0E9791DB-593A-465F-98BC-681011311617}.Release|Win32.ActiveCfg = Release|Win32 - {0E9791DB-593A-465F-98BC-681011311617}.Release|Win32.Build.0 = Release|Win32 - {0E9791DB-593A-465F-98BC-681011311617}.Release|x64.ActiveCfg = Release|x64 - {0E9791DB-593A-465F-98BC-681011311617}.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 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Debug|Win32.ActiveCfg = Debug|Win32 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Debug|Win32.Build.0 = Debug|Win32 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Debug|x64.ActiveCfg = Debug|x64 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Debug|x64.Build.0 = Debug|x64 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Release|Win32.ActiveCfg = Release|Win32 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Release|Win32.Build.0 = Release|Win32 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Release|x64.ActiveCfg = Release|x64 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.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 - {F9D71780-F393-11E0-BE50-0800200C9A66}.Debug|Win32.ActiveCfg = Debug|Win32 - {F9D71780-F393-11E0-BE50-0800200C9A66}.Debug|Win32.Build.0 = Debug|Win32 - {F9D71780-F393-11E0-BE50-0800200C9A66}.Debug|x64.ActiveCfg = Debug|x64 - {F9D71780-F393-11E0-BE50-0800200C9A66}.Debug|x64.Build.0 = Debug|x64 - {F9D71780-F393-11E0-BE50-0800200C9A66}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {F9D71780-F393-11E0-BE50-0800200C9A66}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {F9D71780-F393-11E0-BE50-0800200C9A66}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {F9D71780-F393-11E0-BE50-0800200C9A66}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {F9D71780-F393-11E0-BE50-0800200C9A66}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {F9D71780-F393-11E0-BE50-0800200C9A66}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {F9D71780-F393-11E0-BE50-0800200C9A66}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {F9D71780-F393-11E0-BE50-0800200C9A66}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {F9D71780-F393-11E0-BE50-0800200C9A66}.Release|Win32.ActiveCfg = Release|Win32 - {F9D71780-F393-11E0-BE50-0800200C9A66}.Release|Win32.Build.0 = Release|Win32 - {F9D71780-F393-11E0-BE50-0800200C9A66}.Release|x64.ActiveCfg = Release|x64 - {F9D71780-F393-11E0-BE50-0800200C9A66}.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 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|Win32.ActiveCfg = Debug|Win32 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|Win32.Build.0 = Debug|Win32 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|x64.ActiveCfg = Debug|x64 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|x64.Build.0 = Debug|x64 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|Win32.ActiveCfg = Release|Win32 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|Win32.Build.0 = Release|Win32 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|x64.ActiveCfg = Release|x64 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.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 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Debug|Win32.ActiveCfg = PGInstrument|Win32 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Debug|x64.ActiveCfg = PGUpdate|x64 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Debug|x64.Build.0 = PGUpdate|x64 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Release|Win32.ActiveCfg = Release|Win32 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Release|Win32.Build.0 = Release|Win32 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Release|x64.ActiveCfg = Release|x64 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Release|x64.Build.0 = Release|x64 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.Debug|Win32.ActiveCfg = Debug|Win32 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.Debug|Win32.Build.0 = Debug|Win32 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.Debug|x64.ActiveCfg = Debug|x64 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.Debug|x64.Build.0 = Debug|x64 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.PGInstrument|Win32.ActiveCfg = Release|Win32 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.PGInstrument|Win32.Build.0 = Release|Win32 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.PGInstrument|x64.ActiveCfg = Release|x64 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.PGInstrument|x64.Build.0 = Release|x64 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.PGUpdate|Win32.ActiveCfg = Release|Win32 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.PGUpdate|Win32.Build.0 = Release|Win32 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.PGUpdate|x64.ActiveCfg = Release|x64 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.PGUpdate|x64.Build.0 = Release|x64 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.Release|Win32.ActiveCfg = Release|Win32 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.Release|Win32.Build.0 = Release|Win32 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.Release|x64.ActiveCfg = Release|x64 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.Release|x64.Build.0 = Release|x64 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Debug|Win32.ActiveCfg = Debug|Win32 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Debug|Win32.Build.0 = Debug|Win32 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Debug|x64.ActiveCfg = Debug|x64 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Debug|x64.Build.0 = Debug|x64 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Release|Win32.ActiveCfg = Release|Win32 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Release|Win32.Build.0 = Release|Win32 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Release|x64.ActiveCfg = Release|x64 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Release|x64.Build.0 = Release|x64 - {04F37400-883C-42D7-AE28-6CF9953BF975}.Debug|Win32.ActiveCfg = Debug|Win32 - {04F37400-883C-42D7-AE28-6CF9953BF975}.Debug|Win32.Build.0 = Debug|Win32 - {04F37400-883C-42D7-AE28-6CF9953BF975}.Debug|x64.ActiveCfg = Debug|x64 - {04F37400-883C-42D7-AE28-6CF9953BF975}.Debug|x64.Build.0 = Debug|x64 - {04F37400-883C-42D7-AE28-6CF9953BF975}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {04F37400-883C-42D7-AE28-6CF9953BF975}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {04F37400-883C-42D7-AE28-6CF9953BF975}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {04F37400-883C-42D7-AE28-6CF9953BF975}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {04F37400-883C-42D7-AE28-6CF9953BF975}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {04F37400-883C-42D7-AE28-6CF9953BF975}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {04F37400-883C-42D7-AE28-6CF9953BF975}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {04F37400-883C-42D7-AE28-6CF9953BF975}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {04F37400-883C-42D7-AE28-6CF9953BF975}.Release|Win32.ActiveCfg = Release|Win32 - {04F37400-883C-42D7-AE28-6CF9953BF975}.Release|Win32.Build.0 = Release|Win32 - {04F37400-883C-42D7-AE28-6CF9953BF975}.Release|x64.ActiveCfg = Release|x64 - {04F37400-883C-42D7-AE28-6CF9953BF975}.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 deleted file mode 100644 index 99c117b1526..00000000000 --- a/PC/VS9.0/pginstrument.vsprops +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - diff --git a/PC/VS9.0/pgupdate.vsprops b/PC/VS9.0/pgupdate.vsprops deleted file mode 100644 index 26cfc2d0dd9..00000000000 --- a/PC/VS9.0/pgupdate.vsprops +++ /dev/null @@ -1,14 +0,0 @@ - - - - diff --git a/PC/VS9.0/pyd.vsprops b/PC/VS9.0/pyd.vsprops deleted file mode 100644 index 34c21e15c5e..00000000000 --- a/PC/VS9.0/pyd.vsprops +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - diff --git a/PC/VS9.0/pyd_d.vsprops b/PC/VS9.0/pyd_d.vsprops deleted file mode 100644 index 313a30b782f..00000000000 --- a/PC/VS9.0/pyd_d.vsprops +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - diff --git a/PC/VS9.0/pyexpat.vcproj b/PC/VS9.0/pyexpat.vcproj deleted file mode 100644 index a8d2cd75272..00000000000 --- a/PC/VS9.0/pyexpat.vcproj +++ /dev/null @@ -1,553 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/pyproject.vsprops b/PC/VS9.0/pyproject.vsprops deleted file mode 100644 index e2354bbe777..00000000000 --- a/PC/VS9.0/pyproject.vsprops +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/python.vcproj b/PC/VS9.0/python.vcproj deleted file mode 100644 index b07de2183ff..00000000000 --- a/PC/VS9.0/python.vcproj +++ /dev/null @@ -1,637 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/python3dll.vcproj b/PC/VS9.0/python3dll.vcproj deleted file mode 100644 index ed7333bc567..00000000000 --- a/PC/VS9.0/python3dll.vcproj +++ /dev/null @@ -1,246 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/pythoncore.vcproj b/PC/VS9.0/pythoncore.vcproj deleted file mode 100644 index cf60470ce2c..00000000000 --- a/PC/VS9.0/pythoncore.vcproj +++ /dev/null @@ -1,1877 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/pythonw.vcproj b/PC/VS9.0/pythonw.vcproj deleted file mode 100644 index 7f5c04b9b55..00000000000 --- a/PC/VS9.0/pythonw.vcproj +++ /dev/null @@ -1,618 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/release.vsprops b/PC/VS9.0/release.vsprops deleted file mode 100644 index 08def90651b..00000000000 --- a/PC/VS9.0/release.vsprops +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/PC/VS9.0/select.vcproj b/PC/VS9.0/select.vcproj deleted file mode 100644 index 637fd972ce0..00000000000 --- a/PC/VS9.0/select.vcproj +++ /dev/null @@ -1,537 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/sqlite3.vcproj b/PC/VS9.0/sqlite3.vcproj deleted file mode 100644 index ef8c328c699..00000000000 --- a/PC/VS9.0/sqlite3.vcproj +++ /dev/null @@ -1,537 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/sqlite3.vsprops b/PC/VS9.0/sqlite3.vsprops deleted file mode 100644 index b502df5ace3..00000000000 --- a/PC/VS9.0/sqlite3.vsprops +++ /dev/null @@ -1,14 +0,0 @@ - - - - diff --git a/PC/VS9.0/ssl.vcproj b/PC/VS9.0/ssl.vcproj deleted file mode 100644 index d30e877024f..00000000000 --- a/PC/VS9.0/ssl.vcproj +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/unicodedata.vcproj b/PC/VS9.0/unicodedata.vcproj deleted file mode 100644 index b66ff72228f..00000000000 --- a/PC/VS9.0/unicodedata.vcproj +++ /dev/null @@ -1,533 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/winsound.vcproj b/PC/VS9.0/winsound.vcproj deleted file mode 100644 index 47dbf29322c..00000000000 --- a/PC/VS9.0/winsound.vcproj +++ /dev/null @@ -1,523 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/VS9.0/x64.vsprops b/PC/VS9.0/x64.vsprops deleted file mode 100644 index d06f470ceba..00000000000 --- a/PC/VS9.0/x64.vsprops +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - diff --git a/PC/VS9.0/xxlimited.vcproj b/PC/VS9.0/xxlimited.vcproj deleted file mode 100644 index a3aaad65836..00000000000 --- a/PC/VS9.0/xxlimited.vcproj +++ /dev/null @@ -1,417 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PC/bdist_wininst/archive.h b/PC/bdist_wininst/archive.h index 31a7805fd1d..50ff15cdddf 100644 --- a/PC/bdist_wininst/archive.h +++ b/PC/bdist_wininst/archive.h @@ -1,10 +1,9 @@ /* - 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. + IMPORTANT NOTE: IF THIS FILE IS CHANGED, PCBUILD\BDIST_WININST.VCXPROJ MUST + BE REBUILT AS WELL. - IF CHANGES TO THIS FILE ARE CHECKED INTO PYTHON CVS, THE RECOMPILED BINARIES - MUST BE CHECKED IN AS WELL! + IF CHANGES TO THIS FILE ARE CHECKED IN, THE RECOMPILED BINARIES MUST BE + CHECKED IN AS WELL! */ #pragma pack(1) diff --git a/PC/bdist_wininst/extract.c b/PC/bdist_wininst/extract.c index aec8eda2be8..0249d9ff542 100644 --- a/PC/bdist_wininst/extract.c +++ b/PC/bdist_wininst/extract.c @@ -1,10 +1,9 @@ /* - 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. + IMPORTANT NOTE: IF THIS FILE IS CHANGED, PCBUILD\BDIST_WININST.VCXPROJ MUST + BE REBUILT AS WELL. - IF CHANGES TO THIS FILE ARE CHECKED INTO PYTHON CVS, THE RECOMPILED BINARIES - MUST BE CHECKED IN AS WELL! + IF CHANGES TO THIS FILE ARE CHECKED IN, THE RECOMPILED BINARIES MUST BE + CHECKED IN AS WELL! */ #include diff --git a/PC/bdist_wininst/install.c b/PC/bdist_wininst/install.c index a0232d23c94..bb2eb34a67b 100644 --- a/PC/bdist_wininst/install.c +++ b/PC/bdist_wininst/install.c @@ -1,10 +1,9 @@ /* - 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. + IMPORTANT NOTE: IF THIS FILE IS CHANGED, PCBUILD\BDIST_WININST.VCXPROJ MUST + BE REBUILT AS WELL. - IF CHANGES TO THIS FILE ARE CHECKED INTO PYTHON CVS, THE RECOMPILED BINARIES - MUST BE CHECKED IN AS WELL! + IF CHANGES TO THIS FILE ARE CHECKED IN, THE RECOMPILED BINARIES MUST BE + CHECKED IN AS WELL! */ /* @@ -1216,7 +1215,7 @@ static void CenterWindow(HWND hwnd) #include -BOOL CALLBACK +INT_PTR CALLBACK IntroDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { LPNMHDR lpnm; @@ -1565,7 +1564,7 @@ SCHEME *GetScheme(int major, int minor) return old_scheme; } -BOOL CALLBACK +INT_PTR CALLBACK SelectPythonDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { LPNMHDR lpnm; @@ -1867,7 +1866,7 @@ static void CloseLogfile(void) fclose(logfile); } -BOOL CALLBACK +INT_PTR CALLBACK InstallFilesDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { LPNMHDR lpnm; @@ -2022,7 +2021,7 @@ InstallFilesDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) } -BOOL CALLBACK +INT_PTR CALLBACK FinishedDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { LPNMHDR lpnm; @@ -2198,23 +2197,6 @@ 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. @@ -2270,7 +2252,7 @@ int DoInstall(void) // See if we need to do the Vista UAC magic. if (strcmp(user_access_control, "force")==0) { - if (PlatformSupportsUAC() && !MyIsUserAnAdmin()) { + if (!MyIsUserAnAdmin()) { SpawnUAC(); return 0; } @@ -2278,7 +2260,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 (PlatformSupportsUAC() && !MyIsUserAnAdmin() && NeedAutoUAC()) { + if (!MyIsUserAnAdmin() && NeedAutoUAC()) { SpawnUAC(); return 0; } diff --git a/PC/bdist_wininst/install.rc b/PC/bdist_wininst/install.rc index d018b484b0a..0071bdb2ba8 100644 --- a/PC/bdist_wininst/install.rc +++ b/PC/bdist_wininst/install.rc @@ -1,10 +1,9 @@ /* - 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. + IMPORTANT NOTE: IF THIS FILE IS CHANGED, PCBUILD\BDIST_WININST.VCXPROJ MUST + BE REBUILT AS WELL. - IF CHANGES TO THIS FILE ARE CHECKED INTO PYTHON CVS, THE RECOMPILED BINARIES - MUST BE CHECKED IN AS WELL! + IF CHANGES TO THIS FILE ARE CHECKED IN, THE RECOMPILED BINARIES MUST BE + CHECKED IN AS WELL! */ //Microsoft Developer Studio generated resource script. diff --git a/PC/bdist_wininst/resource.h b/PC/bdist_wininst/resource.h index 35ba3c2534d..0611709e414 100644 --- a/PC/bdist_wininst/resource.h +++ b/PC/bdist_wininst/resource.h @@ -1,10 +1,9 @@ /* - 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. + IMPORTANT NOTE: IF THIS FILE IS CHANGED, PCBUILD\BDIST_WININST.VCXPROJ MUST + BE REBUILT AS WELL. - IF CHANGES TO THIS FILE ARE CHECKED INTO PYTHON CVS, THE RECOMPILED BINARIES - MUST BE CHECKED IN AS WELL! + IF CHANGES TO THIS FILE ARE CHECKED IN, THE RECOMPILED BINARIES MUST BE + CHECKED IN AS WELL! */ //{{NO_DEPENDENCIES}} diff --git a/PC/pyconfig.h b/PC/pyconfig.h index 9cdc4c5a952..bd8844f5b42 100644 --- a/PC/pyconfig.h +++ b/PC/pyconfig.h @@ -213,6 +213,13 @@ typedef int pid_t; #define hypot _hypot #endif +/* VS 2015 defines these names with a leading underscore */ +#if _MSC_VER >= 1900 +#define timezone _timezone +#define daylight _daylight +#define tzname _tzname +#endif + /* 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 diff --git a/PC/pylauncher.rc b/PC/pylauncher.rc index df5824a6635..634b8d6dcbc 100644 --- a/PC/pylauncher.rc +++ b/PC/pylauncher.rc @@ -34,7 +34,7 @@ BEGIN VALUE "FileDescription", "Python Launcher for Windows (Console)" VALUE "FileVersion", PYTHON_VERSION VALUE "InternalName", "py" - VALUE "LegalCopyright", "Copyright (C) 2011-2012 Python Software Foundation" + VALUE "LegalCopyright", "Copyright (C) 2011-2014 Python Software Foundation" VALUE "OriginalFilename", "py" VALUE "ProductName", "Python Launcher for Windows" VALUE "ProductVersion", PYTHON_VERSION diff --git a/PC/python3.def b/PC/python3.def index 5257d5e48e3..45fda3861e8 100644 --- a/PC/python3.def +++ b/PC/python3.def @@ -1,4 +1,5 @@ -; When changing this file, run python35gen.py +; This file specifies the import forwarding for python3.dll +; It is used when building python3dll.vcxproj LIBRARY "python3" EXPORTS PyArg_Parse=python35.PyArg_Parse diff --git a/PC/python3.mak b/PC/python3.mak deleted file mode 100644 index abe12418293..00000000000 --- a/PC/python3.mak +++ /dev/null @@ -1,14 +0,0 @@ -$(OutDir)python3.dll: python3.def $(OutDir)python35stub.lib - cl /LD /Fe$(OutDir)python3.dll python3dll.c python3.def $(OutDir)python35stub.lib - -$(OutDir)python35stub.lib: python35stub.def - lib /def:python35stub.def /out:$(OutDir)python35stub.lib /MACHINE:$(MACHINE) - -clean: - IF EXIST $(OutDir)python3.dll del $(OutDir)python3.dll - IF EXIST $(OutDir)python3.lib del $(OutDir)python3.lib - IF EXIST $(OutDir)python35stub.lib del $(OutDir)python35stub.lib - IF EXIST $(OutDir)python3.exp del $(OutDir)python3.exp - IF EXIST $(OutDir)python35stub.exp del $(OutDir)python35stub.exp - -rebuild: clean $(OutDir)python3.dll diff --git a/PC/python35gen.py b/PC/python35gen.py deleted file mode 100644 index 609cb9d22f8..00000000000 --- a/PC/python35gen.py +++ /dev/null @@ -1,26 +0,0 @@ -# Generate python35stub.def out of python3.def -# The regular import library cannot be used, -# since it doesn't provide the right symbols for -# data forwarding -out = open("python35stub.def", "w") -out.write('LIBRARY "python35"\n') -out.write('EXPORTS\n') - -inp = open("python3.def") -line = inp.readline() -while line.strip().startswith(';'): - line = inp.readline() -line = inp.readline() # LIBRARY -assert line.strip()=='EXPORTS' - -for line in inp: - # SYM1=python35.SYM2[ DATA] - head, tail = line.split('.') - if 'DATA' in tail: - symbol, tail = tail.split(' ') - else: - symbol = tail.strip() - out.write(symbol+'\n') - -inp.close() -out.close() diff --git a/PC/python35stub.def b/PC/python35stub.def deleted file mode 100644 index 6501da0adb9..00000000000 --- a/PC/python35stub.def +++ /dev/null @@ -1,701 +0,0 @@ -LIBRARY "python35" -EXPORTS -PyArg_Parse -PyArg_ParseTuple -PyArg_ParseTupleAndKeywords -PyArg_UnpackTuple -PyArg_VaParse -PyArg_VaParseTupleAndKeywords -PyArg_ValidateKeywordArguments -PyBaseObject_Type -PyBool_FromLong -PyBool_Type -PyByteArrayIter_Type -PyByteArray_AsString -PyByteArray_Concat -PyByteArray_FromObject -PyByteArray_FromStringAndSize -PyByteArray_Resize -PyByteArray_Size -PyByteArray_Type -PyBytesIter_Type -PyBytes_AsString -PyBytes_AsStringAndSize -PyBytes_Concat -PyBytes_ConcatAndDel -PyBytes_DecodeEscape -PyBytes_FromFormat -PyBytes_FromFormatV -PyBytes_FromObject -PyBytes_FromString -PyBytes_FromStringAndSize -PyBytes_Repr -PyBytes_Size -PyBytes_Type -PyCFunction_Call -PyCFunction_ClearFreeList -PyCFunction_GetFlags -PyCFunction_GetFunction -PyCFunction_GetSelf -PyCFunction_New -PyCFunction_NewEx -PyCFunction_Type -PyCallIter_New -PyCallIter_Type -PyCallable_Check -PyCapsule_GetContext -PyCapsule_GetDestructor -PyCapsule_GetName -PyCapsule_GetPointer -PyCapsule_Import -PyCapsule_IsValid -PyCapsule_New -PyCapsule_SetContext -PyCapsule_SetDestructor -PyCapsule_SetName -PyCapsule_SetPointer -PyCapsule_Type -PyClassMethodDescr_Type -PyCodec_BackslashReplaceErrors -PyCodec_Decode -PyCodec_Decoder -PyCodec_Encode -PyCodec_Encoder -PyCodec_IgnoreErrors -PyCodec_IncrementalDecoder -PyCodec_IncrementalEncoder -PyCodec_KnownEncoding -PyCodec_LookupError -PyCodec_Register -PyCodec_RegisterError -PyCodec_ReplaceErrors -PyCodec_StreamReader -PyCodec_StreamWriter -PyCodec_StrictErrors -PyCodec_XMLCharRefReplaceErrors -PyComplex_FromDoubles -PyComplex_ImagAsDouble -PyComplex_RealAsDouble -PyComplex_Type -PyDescr_NewClassMethod -PyDescr_NewGetSet -PyDescr_NewMember -PyDescr_NewMethod -PyDictItems_Type -PyDictIterItem_Type -PyDictIterKey_Type -PyDictIterValue_Type -PyDictKeys_Type -PyDictProxy_New -PyDictProxy_Type -PyDictValues_Type -PyDict_Clear -PyDict_Contains -PyDict_Copy -PyDict_DelItem -PyDict_DelItemString -PyDict_GetItem -PyDict_GetItemString -PyDict_GetItemWithError -PyDict_Items -PyDict_Keys -PyDict_Merge -PyDict_MergeFromSeq2 -PyDict_New -PyDict_Next -PyDict_SetItem -PyDict_SetItemString -PyDict_Size -PyDict_Type -PyDict_Update -PyDict_Values -PyEllipsis_Type -PyEnum_Type -PyErr_BadArgument -PyErr_BadInternalCall -PyErr_CheckSignals -PyErr_Clear -PyErr_Display -PyErr_ExceptionMatches -PyErr_Fetch -PyErr_Format -PyErr_FormatV -PyErr_GivenExceptionMatches -PyErr_NewException -PyErr_NewExceptionWithDoc -PyErr_NoMemory -PyErr_NormalizeException -PyErr_Occurred -PyErr_Print -PyErr_PrintEx -PyErr_ProgramText -PyErr_Restore -PyErr_SetFromErrno -PyErr_SetFromErrnoWithFilename -PyErr_SetFromErrnoWithFilenameObject -PyErr_SetInterrupt -PyErr_SetNone -PyErr_SetObject -PyErr_SetString -PyErr_SyntaxLocation -PyErr_WarnEx -PyErr_WarnExplicit -PyErr_WarnFormat -PyErr_WriteUnraisable -PyEval_AcquireLock -PyEval_AcquireThread -PyEval_CallFunction -PyEval_CallMethod -PyEval_CallObjectWithKeywords -PyEval_EvalCode -PyEval_EvalCodeEx -PyEval_EvalFrame -PyEval_EvalFrameEx -PyEval_GetBuiltins -PyEval_GetCallStats -PyEval_GetFrame -PyEval_GetFuncDesc -PyEval_GetFuncName -PyEval_GetGlobals -PyEval_GetLocals -PyEval_InitThreads -PyEval_ReInitThreads -PyEval_ReleaseLock -PyEval_ReleaseThread -PyEval_RestoreThread -PyEval_SaveThread -PyEval_ThreadsInitialized -PyExc_ArithmeticError -PyExc_AssertionError -PyExc_AttributeError -PyExc_BaseException -PyExc_BufferError -PyExc_BytesWarning -PyExc_DeprecationWarning -PyExc_EOFError -PyExc_EnvironmentError -PyExc_Exception -PyExc_FloatingPointError -PyExc_FutureWarning -PyExc_GeneratorExit -PyExc_IOError -PyExc_ImportError -PyExc_ImportWarning -PyExc_IndentationError -PyExc_IndexError -PyExc_KeyError -PyExc_KeyboardInterrupt -PyExc_LookupError -PyExc_MemoryError -PyExc_MemoryErrorInst -PyExc_NameError -PyExc_NotImplementedError -PyExc_OSError -PyExc_OverflowError -PyExc_PendingDeprecationWarning -PyExc_RecursionErrorInst -PyExc_ReferenceError -PyExc_RuntimeError -PyExc_RuntimeWarning -PyExc_StopIteration -PyExc_SyntaxError -PyExc_SyntaxWarning -PyExc_SystemError -PyExc_SystemExit -PyExc_TabError -PyExc_TypeError -PyExc_UnboundLocalError -PyExc_UnicodeDecodeError -PyExc_UnicodeEncodeError -PyExc_UnicodeError -PyExc_UnicodeTranslateError -PyExc_UnicodeWarning -PyExc_UserWarning -PyExc_ValueError -PyExc_Warning -PyExc_ZeroDivisionError -PyException_GetCause -PyException_GetContext -PyException_GetTraceback -PyException_SetCause -PyException_SetContext -PyException_SetTraceback -PyFile_FromFd -PyFile_GetLine -PyFile_WriteObject -PyFile_WriteString -PyFilter_Type -PyFloat_AsDouble -PyFloat_FromDouble -PyFloat_FromString -PyFloat_GetInfo -PyFloat_GetMax -PyFloat_GetMin -PyFloat_Type -PyFrozenSet_New -PyFrozenSet_Type -PyGC_Collect -PyGILState_Ensure -PyGILState_GetThisThreadState -PyGILState_Release -PyGetSetDescr_Type -PyImport_AddModule -PyImport_AppendInittab -PyImport_Cleanup -PyImport_ExecCodeModule -PyImport_ExecCodeModuleEx -PyImport_ExecCodeModuleWithPathnames -PyImport_GetImporter -PyImport_GetMagicNumber -PyImport_GetMagicTag -PyImport_GetModuleDict -PyImport_Import -PyImport_ImportFrozenModule -PyImport_ImportModule -PyImport_ImportModuleLevel -PyImport_ImportModuleNoBlock -PyImport_ReloadModule -PyInterpreterState_Clear -PyInterpreterState_Delete -PyInterpreterState_New -PyIter_Next -PyListIter_Type -PyListRevIter_Type -PyList_Append -PyList_AsTuple -PyList_GetItem -PyList_GetSlice -PyList_Insert -PyList_New -PyList_Reverse -PyList_SetItem -PyList_SetSlice -PyList_Size -PyList_Sort -PyList_Type -PyLongRangeIter_Type -PyLong_AsDouble -PyLong_AsLong -PyLong_AsLongAndOverflow -PyLong_AsLongLong -PyLong_AsLongLongAndOverflow -PyLong_AsSize_t -PyLong_AsSsize_t -PyLong_AsUnsignedLong -PyLong_AsUnsignedLongLong -PyLong_AsUnsignedLongLongMask -PyLong_AsUnsignedLongMask -PyLong_AsVoidPtr -PyLong_FromDouble -PyLong_FromLong -PyLong_FromLongLong -PyLong_FromSize_t -PyLong_FromSsize_t -PyLong_FromString -PyLong_FromUnsignedLong -PyLong_FromUnsignedLongLong -PyLong_FromVoidPtr -PyLong_GetInfo -PyLong_Type -PyMap_Type -PyMapping_Check -PyMapping_GetItemString -PyMapping_HasKey -PyMapping_HasKeyString -PyMapping_Items -PyMapping_Keys -PyMapping_Length -PyMapping_SetItemString -PyMapping_Size -PyMapping_Values -PyMem_Free -PyMem_Malloc -PyMem_Realloc -PyMemberDescr_Type -PyMemoryView_FromObject -PyMemoryView_GetContiguous -PyMemoryView_Type -PyMethodDescr_Type -PyModule_AddIntConstant -PyModule_AddObject -PyModule_AddStringConstant -PyModule_Create2 -PyModule_GetDef -PyModule_GetDict -PyModule_GetFilename -PyModule_GetFilenameObject -PyModule_GetName -PyModule_GetState -PyModule_New -PyModule_Type -PyNullImporter_Type -PyNumber_Absolute -PyNumber_Add -PyNumber_And -PyNumber_AsSsize_t -PyNumber_Check -PyNumber_Divmod -PyNumber_Float -PyNumber_FloorDivide -PyNumber_InPlaceAdd -PyNumber_InPlaceAnd -PyNumber_InPlaceFloorDivide -PyNumber_InPlaceLshift -PyNumber_InPlaceMultiply -PyNumber_InPlaceOr -PyNumber_InPlacePower -PyNumber_InPlaceRemainder -PyNumber_InPlaceRshift -PyNumber_InPlaceSubtract -PyNumber_InPlaceTrueDivide -PyNumber_InPlaceXor -PyNumber_Index -PyNumber_Invert -PyNumber_Long -PyNumber_Lshift -PyNumber_Multiply -PyNumber_Negative -PyNumber_Or -PyNumber_Positive -PyNumber_Power -PyNumber_Remainder -PyNumber_Rshift -PyNumber_Subtract -PyNumber_ToBase -PyNumber_TrueDivide -PyNumber_Xor -PyOS_AfterFork -PyOS_InitInterrupts -PyOS_InputHook -PyOS_InterruptOccurred -PyOS_ReadlineFunctionPointer -PyOS_double_to_string -PyOS_getsig -PyOS_mystricmp -PyOS_mystrnicmp -PyOS_setsig -PyOS_snprintf -PyOS_string_to_double -PyOS_strtol -PyOS_strtoul -PyOS_vsnprintf -PyObject_ASCII -PyObject_AsCharBuffer -PyObject_AsFileDescriptor -PyObject_AsReadBuffer -PyObject_AsWriteBuffer -PyObject_Bytes -PyObject_Call -PyObject_CallFunction -PyObject_CallFunctionObjArgs -PyObject_CallMethod -PyObject_CallMethodObjArgs -PyObject_CallObject -PyObject_CheckReadBuffer -PyObject_ClearWeakRefs -PyObject_DelItem -PyObject_DelItemString -PyObject_Dir -PyObject_Format -PyObject_Free -PyObject_GC_Del -PyObject_GC_Track -PyObject_GC_UnTrack -PyObject_GenericGetAttr -PyObject_GenericSetAttr -PyObject_GetAttr -PyObject_GetAttrString -PyObject_GetItem -PyObject_GetIter -PyObject_HasAttr -PyObject_HasAttrString -PyObject_Hash -PyObject_HashNotImplemented -PyObject_Init -PyObject_InitVar -PyObject_IsInstance -PyObject_IsSubclass -PyObject_IsTrue -PyObject_Length -PyObject_Malloc -PyObject_Not -PyObject_Realloc -PyObject_Repr -PyObject_RichCompare -PyObject_RichCompareBool -PyObject_SelfIter -PyObject_SetAttr -PyObject_SetAttrString -PyObject_SetItem -PyObject_Size -PyObject_Str -PyObject_Type -PyParser_SimpleParseFileFlags -PyParser_SimpleParseStringFlags -PyProperty_Type -PyRangeIter_Type -PyRange_Type -PyReversed_Type -PySeqIter_New -PySeqIter_Type -PySequence_Check -PySequence_Concat -PySequence_Contains -PySequence_Count -PySequence_DelItem -PySequence_DelSlice -PySequence_Fast -PySequence_GetItem -PySequence_GetSlice -PySequence_In -PySequence_InPlaceConcat -PySequence_InPlaceRepeat -PySequence_Index -PySequence_Length -PySequence_List -PySequence_Repeat -PySequence_SetItem -PySequence_SetSlice -PySequence_Size -PySequence_Tuple -PySetIter_Type -PySet_Add -PySet_Clear -PySet_Contains -PySet_Discard -PySet_New -PySet_Pop -PySet_Size -PySet_Type -PySlice_GetIndices -PySlice_GetIndicesEx -PySlice_New -PySlice_Type -PySortWrapper_Type -PyState_FindModule -PyState_AddModule -PyState_RemoveModule -PyStructSequence_GetItem -PyStructSequence_New -PyStructSequence_NewType -PyStructSequence_SetItem -PySuper_Type -PySys_AddWarnOption -PySys_AddWarnOptionUnicode -PySys_FormatStderr -PySys_FormatStdout -PySys_GetObject -PySys_HasWarnOptions -PySys_ResetWarnOptions -PySys_SetArgv -PySys_SetArgvEx -PySys_SetObject -PySys_SetPath -PySys_WriteStderr -PySys_WriteStdout -PyThreadState_Clear -PyThreadState_Delete -PyThreadState_DeleteCurrent -PyThreadState_Get -PyThreadState_GetDict -PyThreadState_New -PyThreadState_SetAsyncExc -PyThreadState_Swap -PyTraceBack_Here -PyTraceBack_Print -PyTraceBack_Type -PyTupleIter_Type -PyTuple_ClearFreeList -PyTuple_GetItem -PyTuple_GetSlice -PyTuple_New -PyTuple_Pack -PyTuple_SetItem -PyTuple_Size -PyTuple_Type -PyType_ClearCache -PyType_FromSpec -PyType_FromSpecWithBases -PyType_GenericAlloc -PyType_GenericNew -PyType_GetFlags -PyType_GetSlot -PyType_IsSubtype -PyType_Modified -PyType_Ready -PyType_Type -PyUnicodeDecodeError_Create -PyUnicodeDecodeError_GetEncoding -PyUnicodeDecodeError_GetEnd -PyUnicodeDecodeError_GetObject -PyUnicodeDecodeError_GetReason -PyUnicodeDecodeError_GetStart -PyUnicodeDecodeError_SetEnd -PyUnicodeDecodeError_SetReason -PyUnicodeDecodeError_SetStart -PyUnicodeEncodeError_GetEncoding -PyUnicodeEncodeError_GetEnd -PyUnicodeEncodeError_GetObject -PyUnicodeEncodeError_GetReason -PyUnicodeEncodeError_GetStart -PyUnicodeEncodeError_SetEnd -PyUnicodeEncodeError_SetReason -PyUnicodeEncodeError_SetStart -PyUnicodeIter_Type -PyUnicodeTranslateError_GetEnd -PyUnicodeTranslateError_GetObject -PyUnicodeTranslateError_GetReason -PyUnicodeTranslateError_GetStart -PyUnicodeTranslateError_SetEnd -PyUnicodeTranslateError_SetReason -PyUnicodeTranslateError_SetStart -PyUnicode_Append -PyUnicode_AppendAndDel -PyUnicode_AsASCIIString -PyUnicode_AsCharmapString -PyUnicode_AsDecodedObject -PyUnicode_AsDecodedUnicode -PyUnicode_AsEncodedObject -PyUnicode_AsEncodedString -PyUnicode_AsEncodedUnicode -PyUnicode_AsLatin1String -PyUnicode_AsRawUnicodeEscapeString -PyUnicode_AsUTF16String -PyUnicode_AsUTF32String -PyUnicode_AsUTF8String -PyUnicode_AsUnicodeEscapeString -PyUnicode_AsWideChar -PyUnicode_ClearFreelist -PyUnicode_Compare -PyUnicode_Concat -PyUnicode_Contains -PyUnicode_Count -PyUnicode_Decode -PyUnicode_DecodeASCII -PyUnicode_DecodeCharmap -PyUnicode_DecodeFSDefault -PyUnicode_DecodeFSDefaultAndSize -PyUnicode_DecodeLatin1 -PyUnicode_DecodeRawUnicodeEscape -PyUnicode_DecodeUTF16 -PyUnicode_DecodeUTF16Stateful -PyUnicode_DecodeUTF32 -PyUnicode_DecodeUTF32Stateful -PyUnicode_DecodeUTF8 -PyUnicode_DecodeUTF8Stateful -PyUnicode_DecodeUnicodeEscape -PyUnicode_FSConverter -PyUnicode_FSDecoder -PyUnicode_Find -PyUnicode_Format -PyUnicode_FromEncodedObject -PyUnicode_FromFormat -PyUnicode_FromFormatV -PyUnicode_FromObject -PyUnicode_FromOrdinal -PyUnicode_FromString -PyUnicode_FromStringAndSize -PyUnicode_FromWideChar -PyUnicode_GetDefaultEncoding -PyUnicode_GetSize -PyUnicode_IsIdentifier -PyUnicode_Join -PyUnicode_Partition -PyUnicode_RPartition -PyUnicode_RSplit -PyUnicode_Replace -PyUnicode_Resize -PyUnicode_RichCompare -PyUnicode_SetDefaultEncoding -PyUnicode_Split -PyUnicode_Splitlines -PyUnicode_Tailmatch -PyUnicode_Translate -PyUnicode_BuildEncodingMap -PyUnicode_CompareWithASCIIString -PyUnicode_DecodeUTF7 -PyUnicode_DecodeUTF7Stateful -PyUnicode_EncodeFSDefault -PyUnicode_InternFromString -PyUnicode_InternImmortal -PyUnicode_InternInPlace -PyUnicode_Type -PyWeakref_GetObject -PyWeakref_NewProxy -PyWeakref_NewRef -PyWrapperDescr_Type -PyWrapper_New -PyZip_Type -Py_AddPendingCall -Py_AtExit -Py_BuildValue -Py_CompileString -Py_DecRef -Py_EndInterpreter -Py_Exit -Py_FatalError -Py_FileSystemDefaultEncoding -Py_Finalize -Py_GetBuildInfo -Py_GetCompiler -Py_GetCopyright -Py_GetExecPrefix -Py_GetPath -Py_GetPlatform -Py_GetPrefix -Py_GetProgramFullPath -Py_GetProgramName -Py_GetPythonHome -Py_GetRecursionLimit -Py_GetVersion -Py_HasFileSystemDefaultEncoding -Py_IncRef -Py_Initialize -Py_InitializeEx -Py_IsInitialized -Py_Main -Py_MakePendingCalls -Py_NewInterpreter -Py_ReprEnter -Py_ReprLeave -Py_SetProgramName -Py_SetPythonHome -Py_SetRecursionLimit -Py_SymtableString -Py_VaBuildValue -_PyErr_BadInternalCall -_PyObject_CallFunction_SizeT -_PyObject_CallMethod_SizeT -_PyObject_GC_Malloc -_PyObject_GC_New -_PyObject_GC_NewVar -_PyObject_GC_Resize -_PyObject_New -_PyObject_NewVar -_PyState_AddModule -_PyThreadState_Init -_PyThreadState_Prealloc -_PyTrash_delete_later -_PyTrash_delete_nesting -_PyTrash_deposit_object -_PyTrash_destroy_chain -_PyWeakref_CallableProxyType -_PyWeakref_ProxyType -_PyWeakref_RefType -_Py_BuildValue_SizeT -_Py_CheckRecursionLimit -_Py_CheckRecursiveCall -_Py_Dealloc -_Py_EllipsisObject -_Py_FalseStruct -_Py_NoneStruct -_Py_NotImplementedStruct -_Py_SwappedOp -_Py_TrueStruct -_Py_VaBuildValue_SizeT -_PyArg_Parse_SizeT -_PyArg_ParseTuple_SizeT -_PyArg_ParseTupleAndKeywords_SizeT -_PyArg_VaParse_SizeT -_PyArg_VaParseTupleAndKeywords_SizeT -_Py_BuildValue_SizeT diff --git a/PC/python_nt.rc b/PC/python_nt.rc index 52bf8234be8..33ddce7d0b9 100644 --- a/PC/python_nt.rc +++ b/PC/python_nt.rc @@ -13,7 +13,7 @@ #endif /* e.g., 3.3.0a1 - * PY_VERSION comes from patchevel.h + * PY_VERSION comes from patchlevel.h */ #define PYTHON_VERSION PY_VERSION "\0" diff --git a/PC/readme.txt b/PC/readme.txt index 60f231e513e..8639dc33d9a 100644 --- a/PC/readme.txt +++ b/PC/readme.txt @@ -74,11 +74,6 @@ dllbase_nt.txt A (manually maintained) list of base addresses for example_nt A subdirectory showing how to build an extension as a DLL. -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. - Note for Windows 3.x and DOS users ================================== diff --git a/PCbuild/_bz2.vcxproj b/PCbuild/_bz2.vcxproj index 9387e54b3a8..64c3dcde14f 100644 --- a/PCbuild/_bz2.vcxproj +++ b/PCbuild/_bz2.vcxproj @@ -39,117 +39,28 @@ bz2 Win32Proj + - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - + DynamicLibrary NotSet + + + .pyd + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - + $(bz2Dir);%(AdditionalIncludeDirectories) WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) @@ -158,83 +69,6 @@ 0x1D170000 - - - X64 - - - $(bz2Dir);%(AdditionalIncludeDirectories) - WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) - - - 0x1D170000 - - - - - $(bz2Dir);%(AdditionalIncludeDirectories) - WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) - - - 0x1D170000 - - - - - X64 - - - $(bz2Dir);%(AdditionalIncludeDirectories) - WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) - - - 0x1D170000 - - - - - $(bz2Dir);%(AdditionalIncludeDirectories) - WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) - - - 0x1D170000 - - - - - X64 - - - $(bz2Dir);%(AdditionalIncludeDirectories) - WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) - - - 0x1D170000 - MachineX64 - - - - - $(bz2Dir);%(AdditionalIncludeDirectories) - WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) - - - 0x1D170000 - - - - - X64 - - - $(bz2Dir);%(AdditionalIncludeDirectories) - WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) - - - 0x1D170000 - MachineX64 - - diff --git a/PCbuild/_ctypes.vcxproj b/PCbuild/_ctypes.vcxproj index 202cb1f42bb..68b8e2971d1 100644 --- a/PCbuild/_ctypes.vcxproj +++ b/PCbuild/_ctypes.vcxproj @@ -39,204 +39,33 @@ _ctypes Win32Proj + - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - + DynamicLibrary NotSet + + .pyd + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + <_ProjectFileVersion>10.0.40219.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - + ..\Modules\_ctypes\libffi_msvc;%(AdditionalIncludeDirectories) 0x1D1A0000 - - - - - X64 - - - ..\Modules\_ctypes\libffi_msvc;%(AdditionalIncludeDirectories) - - - 0x1D1A0000 - - - - - ..\Modules\_ctypes\libffi_msvc;%(AdditionalIncludeDirectories) - - /EXPORT:DllGetClassObject,PRIVATE /EXPORT:DllCanUnloadNow,PRIVATE %(AdditionalOptions) - NotSet - 0x1D1A0000 - - - - - X64 - - - ..\Modules\_ctypes\libffi_msvc;%(AdditionalIncludeDirectories) - - - /EXPORT:DllGetClassObject,PRIVATE /EXPORT:DllCanUnloadNow,PRIVATE %(AdditionalOptions) - NotSet - 0x1D1A0000 - - - - - ..\Modules\_ctypes\libffi_msvc;%(AdditionalIncludeDirectories) - - - /EXPORT:DllGetClassObject,PRIVATE /EXPORT:DllCanUnloadNow,PRIVATE %(AdditionalOptions) - NotSet - 0x1D1A0000 - - - - - X64 - - - ..\Modules\_ctypes\libffi_msvc;%(AdditionalIncludeDirectories) - - - /EXPORT:DllGetClassObject,PRIVATE /EXPORT:DllCanUnloadNow,PRIVATE %(AdditionalOptions) - NotSet - 0x1D1A0000 - MachineX64 - - - - - ..\Modules\_ctypes\libffi_msvc;%(AdditionalIncludeDirectories) - - - /EXPORT:DllGetClassObject,PRIVATE /EXPORT:DllCanUnloadNow,PRIVATE %(AdditionalOptions) - NotSet - 0x1D1A0000 - - - - - X64 - - - ..\Modules\_ctypes\libffi_msvc;%(AdditionalIncludeDirectories) - - - /EXPORT:DllGetClassObject,PRIVATE /EXPORT:DllCanUnloadNow,PRIVATE %(AdditionalOptions) - NotSet - 0x1D1A0000 - MachineX64 @@ -257,30 +86,14 @@ - true - true - true - true + true - true - ml64 /nologo /c /Zi /Fo "$(IntDir)win64.obj" "%(FullPath)" - - $(IntDir)win64.obj;%(Outputs) - true - ml64 /nologo /c /Fo "$(IntDir)win64.obj" "%(FullPath)" - - $(IntDir)win64.obj;%(Outputs) - true - ml64 /nologo /c /Fo "$(IntDir)win64.obj" "%(FullPath)" - - $(IntDir)win64.obj;%(Outputs) - true - ml64 /nologo /c /Fo "$(IntDir)win64.obj" "%(FullPath)" - - $(IntDir)win64.obj;%(Outputs) + true + ml64 /nologo /c /Zi /Fo "$(IntDir)win64.obj" "%(FullPath)" + $(IntDir)win64.obj;%(Outputs) diff --git a/PCbuild/_ctypes_test.vcxproj b/PCbuild/_ctypes_test.vcxproj index 35e299b8867..c1260b53f3e 100644 --- a/PCbuild/_ctypes_test.vcxproj +++ b/PCbuild/_ctypes_test.vcxproj @@ -38,143 +38,28 @@ {9EC7190A-249F-4180-A900-548FDCF3055F} _ctypes_test Win32Proj + false + - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - + DynamicLibrary NotSet + + .pyd + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - X64 - - - - - X64 - - - - - X64 - - - MachineX64 - - - - - X64 - - - MachineX64 - - diff --git a/PCbuild/_decimal.vcxproj b/PCbuild/_decimal.vcxproj index 98ba81db234..943bfb09903 100644 --- a/PCbuild/_decimal.vcxproj +++ b/PCbuild/_decimal.vcxproj @@ -39,208 +39,37 @@ _decimal Win32Proj + - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - + DynamicLibrary NotSet + + .pyd + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + <_ProjectFileVersion>10.0.40219.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - + - /D_CRT_SECURE_NO_WARNINGS /DCONFIG_32 /DPPRO /DMASM %(AdditionalOptions) + _CRT_SECURE_NO_WARNINGS;MASM;%(PreprocessorDefinitions) + CONFIG_32;PPRO;%(PreprocessorDefinitions) + CONFIG_64;%(PreprocessorDefinitions) ..\Modules\_decimal;..\Modules\_decimal\libmpdec;%(AdditionalIncludeDirectories) 0x1D1A0000 - - - X64 - - - /D_CRT_SECURE_NO_WARNINGS /DCONFIG_64 /DMASM %(AdditionalOptions) - ..\Modules\_decimal;..\Modules\_decimal\libmpdec;%(AdditionalIncludeDirectories) - - - 0x1D1A0000 - - - - - /D_CRT_SECURE_NO_WARNINGS /DCONFIG_32 /DPPRO /DMASM %(AdditionalOptions) - ..\Modules\_decimal;..\Modules\_decimal\libmpdec;%(AdditionalIncludeDirectories) - - - NotSet - 0x1D1A0000 - - - - - X64 - - - /D_CRT_SECURE_NO_WARNINGS /DCONFIG_64 /DMASM %(AdditionalOptions) - ..\Modules\_decimal;..\Modules\_decimal\libmpdec;..\Include;..\PC;%(AdditionalIncludeDirectories) - - - NotSet - 0x1D1A0000 - - - - - /D_CRT_SECURE_NO_WARNINGS /DCONFIG_32 /DPPRO /DMASM %(AdditionalOptions) - ..\Modules\_decimal;..\Modules\_decimal\libmpdec;%(AdditionalIncludeDirectories) - - - NotSet - 0x1D1A0000 - - - - - X64 - - - /D_CRT_SECURE_NO_WARNINGS /DCONFIG_64 /DMASM %(AdditionalOptions) - ..\Modules\_decimal;..\Modules\_decimal\libmpdec;%(AdditionalIncludeDirectories) - - - NotSet - 0x1D1A0000 - MachineX64 - - - - - /D_CRT_SECURE_NO_WARNINGS /DCONFIG_32 /DPPRO /DMASM %(AdditionalOptions) - ..\Modules\_decimal;..\Modules\_decimal\libmpdec;%(AdditionalIncludeDirectories) - - - NotSet - 0x1D1A0000 - - - - - X64 - - - /D_CRT_SECURE_NO_WARNINGS /DCONFIG_64 /DMASM %(AdditionalOptions) - ..\Modules\_decimal;..\Modules\_decimal\libmpdec;%(AdditionalIncludeDirectories) - - - NotSet - 0x1D1A0000 - MachineX64 - - @@ -279,22 +108,9 @@ - true - ml64 /nologo /c /Zi /Fo "$(IntDir)vcdiv64.obj" "%(FullPath)" - - $(IntDir)vcdiv64.obj;%(Outputs) - true - ml64 /nologo /c /Fo "$(IntDir)vcdiv64.obj" "%(FullPath)" - - $(IntDir)vcdiv64.obj;%(Outputs) - true - ml64 /nologo /c /Fo "$(IntDir)vcdiv64.obj" "%(FullPath)" - - $(IntDir)vcdiv64.obj;%(Outputs) - true - ml64 /nologo /c /Zi /Fo "$(IntDir)vcdiv64.obj" "%(FullPath)" - - $(IntDir)vcdiv64.obj;%(Outputs) + true + ml64 /nologo /c /Zi /Fo "$(IntDir)vcdiv64.obj" "%(FullPath)" + $(IntDir)vcdiv64.obj;%(Outputs) diff --git a/PCbuild/_elementtree.vcxproj b/PCbuild/_elementtree.vcxproj index 7802ab30ae2..414bd8bebb8 100644 --- a/PCbuild/_elementtree.vcxproj +++ b/PCbuild/_elementtree.vcxproj @@ -39,117 +39,27 @@ _elementtree Win32Proj + - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - + DynamicLibrary NotSet + + .pyd + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - + ..\Modules\expat;%(AdditionalIncludeDirectories) XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;USE_PYEXPAT_CAPI;XML_STATIC;HAVE_MEMMOVE;%(PreprocessorDefinitions) @@ -158,83 +68,6 @@ 0x1D100000 - - - X64 - - - ..\Modules\expat;%(AdditionalIncludeDirectories) - XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;USE_PYEXPAT_CAPI;XML_STATIC;HAVE_MEMMOVE;%(PreprocessorDefinitions) - - - 0x1D100000 - - - - - ..\Modules\expat;%(AdditionalIncludeDirectories) - XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;USE_PYEXPAT_CAPI;XML_STATIC;HAVE_MEMMOVE;%(PreprocessorDefinitions) - - - 0x1D100000 - - - - - X64 - - - ..\Modules\expat;%(AdditionalIncludeDirectories) - XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;USE_PYEXPAT_CAPI;XML_STATIC;HAVE_MEMMOVE;%(PreprocessorDefinitions) - - - 0x1D100000 - - - - - ..\Modules\expat;%(AdditionalIncludeDirectories) - XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;USE_PYEXPAT_CAPI;XML_STATIC;HAVE_MEMMOVE;%(PreprocessorDefinitions) - - - 0x1D100000 - - - - - X64 - - - ..\Modules\expat;%(AdditionalIncludeDirectories) - XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;USE_PYEXPAT_CAPI;XML_STATIC;HAVE_MEMMOVE;%(PreprocessorDefinitions) - - - 0x1D100000 - MachineX64 - - - - - ..\Modules\expat;%(AdditionalIncludeDirectories) - XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;USE_PYEXPAT_CAPI;XML_STATIC;HAVE_MEMMOVE;%(PreprocessorDefinitions) - - - 0x1D100000 - - - - - X64 - - - ..\Modules\expat;%(AdditionalIncludeDirectories) - XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;USE_PYEXPAT_CAPI;XML_STATIC;HAVE_MEMMOVE;%(PreprocessorDefinitions) - - - 0x1D100000 - MachineX64 - - diff --git a/PCbuild/_freeze_importlib.vcxproj b/PCbuild/_freeze_importlib.vcxproj index e133e020e08..e331a67585e 100644 --- a/PCbuild/_freeze_importlib.vcxproj +++ b/PCbuild/_freeze_importlib.vcxproj @@ -9,6 +9,22 @@ Debug x64 + + PGInstrument + Win32 + + + PGInstrument + x64 + + + PGUpdate + Win32 + + + PGUpdate + x64 + Release Win32 @@ -22,149 +38,29 @@ {19C0C13F-47CA-4432-AFF3-799A296A4DDC} Win32Proj _freeze_importlib + false + - + Application - true - Unicode - - - Application - true - Unicode - - - Application - false - true - Unicode - - - Application - false - true Unicode - + - - - - - - - - - - - - - - - - - - true - - - true - - - false - - - false - - + - - - Level3 - Disabled - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + _CONSOLE;%(PreprocessorDefinitions) Console - true - - $(TargetPath) ..\Lib\importlib\_bootstrap.py ..\Python\importlib.h - - - creating importlib.h - - - - - - - Level3 - Disabled - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - - - Console - true - - - $(TargetPath) ..\Lib\importlib\_bootstrap.py ..\Python\importlib.h - - - creating importlib.h - - - - - Level3 - - - MaxSpeed - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - - - Console - true - true - true - - - $(TargetPath) ..\Lib\importlib\_bootstrap.py ..\Python\importlib.h - - - creating importlib.h - - - - - Level3 - - - MaxSpeed - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - - - Console - true - true - true - - - $(TargetPath) ..\Lib\importlib\_bootstrap.py ..\Python\importlib.h - - - creating importlib.h - @@ -185,4 +81,25 @@ + + + + + <_OldContent Condition="Exists('$(PySourcePath)Python\importlib.h')">$([System.IO.File]::ReadAllText('$(PySourcePath)Python\importlib.h')) + <_NewContent Condition="Exists('$(IntDir)importlib.g.h')">$([System.IO.File]::ReadAllText('$(IntDir)importlib.g.h')) + + + + + + + + + + + diff --git a/PCbuild/_hashlib.vcxproj b/PCbuild/_hashlib.vcxproj index 52433ed6969..d82b266902a 100644 --- a/PCbuild/_hashlib.vcxproj +++ b/PCbuild/_hashlib.vcxproj @@ -39,239 +39,47 @@ _hashlib Win32Proj + - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - + DynamicLibrary NotSet + + .pyd + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - + - $(opensslDir)\inc32;%(AdditionalIncludeDirectories) + $(opensslDir)include;%(AdditionalIncludeDirectories) - - - - - ws2_32.lib;$(opensslDir)\out32\libeay32.lib;$(opensslDir)\out32\ssleay32.lib;%(AdditionalDependencies) - - - - - X64 - - - $(opensslDir)\inc64;%(AdditionalIncludeDirectories) - - - - - - - ws2_32.lib;$(opensslDir)\out64\libeay32.lib;$(opensslDir)\out64\ssleay32.lib;%(AdditionalDependencies) - - - - - $(opensslDir)\inc32;%(AdditionalIncludeDirectories) - - - - - - - ws2_32.lib;$(opensslDir)\out32\libeay32.lib;$(opensslDir)\out32\ssleay32.lib;%(AdditionalDependencies) - - - - - X64 - - - $(opensslDir)\inc64;%(AdditionalIncludeDirectories) - - - - - - - ws2_32.lib;$(opensslDir)\out64\libeay32.lib;$(opensslDir)\out64\ssleay32.lib;%(AdditionalDependencies) - - - - - $(opensslDir)\inc32;%(AdditionalIncludeDirectories) - - - - - - - ws2_32.lib;$(opensslDir)\out32\libeay32.lib;$(opensslDir)\out32\ssleay32.lib;%(AdditionalDependencies) - - - - - X64 - - - $(opensslDir)\inc64;%(AdditionalIncludeDirectories) - - - - - - - ws2_32.lib;$(opensslDir)\out64\libeay32.lib;$(opensslDir)\out64\ssleay32.lib;%(AdditionalDependencies) - MachineX64 - - - - - $(opensslDir)\inc32;%(AdditionalIncludeDirectories) - - - - - - - ws2_32.lib;$(opensslDir)\out32\libeay32.lib;$(opensslDir)\out32\ssleay32.lib;%(AdditionalDependencies) - - - - - X64 - - - $(opensslDir)\inc64;%(AdditionalIncludeDirectories) - - - - - - - ws2_32.lib;$(opensslDir)\out64\libeay32.lib;$(opensslDir)\out64\ssleay32.lib;%(AdditionalDependencies) - MachineX64 + ws2_32.lib;$(OutDir)libeay$(PyDebugExt).lib;$(OutDir)ssleay$(PyDebugExt).lib;%(AdditionalDependencies) - - {b11d750f-cd1f-4a96-85ce-e69a5c5259f9} - false - {cf7ac3d1-e2df-41d2-bea6-1e2556cdea26} false - + + {10615b24-73bf-4efa-93aa-236916321317} + false + + {e5b04cc0-eb4c-42ab-b4dc-18ef95f864b0} false diff --git a/PCbuild/_lzma.vcxproj b/PCbuild/_lzma.vcxproj index ac25c804add..af50494ebde 100644 --- a/PCbuild/_lzma.vcxproj +++ b/PCbuild/_lzma.vcxproj @@ -39,200 +39,35 @@ lzma Win32Proj + - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - + DynamicLibrary NotSet + + .pyd + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - + - $(lzmaDir)\include;%(AdditionalIncludeDirectories) + $(lzmaDir)include;%(AdditionalIncludeDirectories) WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;LZMA_API_STATIC;%(PreprocessorDefinitions) - $(lzmaDir)\bin_i486\liblzma.a;%(AdditionalDependencies) - - - - - X64 - - - $(lzmaDir)\include;%(AdditionalIncludeDirectories) - WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;LZMA_API_STATIC;%(PreprocessorDefinitions) - - - $(lzmaDir)\bin_x86-64\liblzma.a;%(AdditionalDependencies) - - - - - $(lzmaDir)\include;%(AdditionalIncludeDirectories) - WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;LZMA_API_STATIC;%(PreprocessorDefinitions) - - - $(lzmaDir)\bin_i486\liblzma.a;%(AdditionalDependencies) - - - - - X64 - - - $(lzmaDir)\include;%(AdditionalIncludeDirectories) - WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;LZMA_API_STATIC;%(PreprocessorDefinitions) - - - $(lzmaDir)\bin_x86-64\liblzma.a;%(AdditionalDependencies) - - - - - $(lzmaDir)\include;%(AdditionalIncludeDirectories) - WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;LZMA_API_STATIC;%(PreprocessorDefinitions) - - - $(lzmaDir)\bin_i486\liblzma.a;%(AdditionalDependencies) - - - - - X64 - - - $(lzmaDir)\include;%(AdditionalIncludeDirectories) - WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;LZMA_API_STATIC;%(PreprocessorDefinitions) - - - $(lzmaDir)\bin_x86-64\liblzma.a;%(AdditionalDependencies) - MachineX64 - - - - - $(lzmaDir)\include;%(AdditionalIncludeDirectories) - WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;LZMA_API_STATIC;%(PreprocessorDefinitions) - - - $(lzmaDir)\bin_i486\liblzma.a;%(AdditionalDependencies) - - - - - X64 - - - $(lzmaDir)\include;%(AdditionalIncludeDirectories) - WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;LZMA_API_STATIC;%(PreprocessorDefinitions) - - - $(lzmaDir)\bin_x86-64\liblzma.a;%(AdditionalDependencies) - MachineX64 + $(lzmaDir)\bin_i486\liblzma.a;%(AdditionalDependencies) + $(lzmaDir)\bin_x86-64\liblzma.a;%(AdditionalDependencies) + false diff --git a/PCbuild/_msi.vcxproj b/PCbuild/_msi.vcxproj index 1323d169df3..f5ba7bff762 100644 --- a/PCbuild/_msi.vcxproj +++ b/PCbuild/_msi.vcxproj @@ -39,178 +39,32 @@ _msi Win32Proj + - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - + DynamicLibrary NotSet + + .pyd + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - + - fci.lib;msi.lib;rpcrt4.lib;%(AdditionalDependencies) + cabinet.lib;msi.lib;rpcrt4.lib;%(AdditionalDependencies) 0x1D160000 - - - X64 - - - fci.lib;msi.lib;rpcrt4.lib;%(AdditionalDependencies) - 0x1D160000 - - - - - fci.lib;msi.lib;rpcrt4.lib;%(AdditionalDependencies) - 0x1D160000 - - - - - X64 - - - fci.lib;msi.lib;rpcrt4.lib;%(AdditionalDependencies) - 0x1D160000 - - - - - fci.lib;msi.lib;rpcrt4.lib;%(AdditionalDependencies) - 0x1D160000 - - - - - X64 - - - fci.lib;msi.lib;rpcrt4.lib;%(AdditionalDependencies) - 0x1D160000 - MachineX64 - - - - - fci.lib;msi.lib;rpcrt4.lib;%(AdditionalDependencies) - 0x1D160000 - - - - - X64 - - - fci.lib;msi.lib;rpcrt4.lib;%(AdditionalDependencies) - 0x1D160000 - MachineX64 - - diff --git a/PCbuild/_multiprocessing.vcxproj b/PCbuild/_multiprocessing.vcxproj index b4bb568538a..1eb92b67dc2 100644 --- a/PCbuild/_multiprocessing.vcxproj +++ b/PCbuild/_multiprocessing.vcxproj @@ -39,178 +39,32 @@ _multiprocessing Win32Proj + - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - + DynamicLibrary NotSet + + .pyd + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - + ws2_32.lib;%(AdditionalDependencies) 0x1e1D0000 - - - X64 - - - ws2_32.lib;%(AdditionalDependencies) - 0x1e1D0000 - - - - - ws2_32.lib;%(AdditionalDependencies) - 0x1e1D0000 - - - - - X64 - - - ws2_32.lib;%(AdditionalDependencies) - 0x1e1D0000 - - - - - ws2_32.lib;%(AdditionalDependencies) - 0x1e1D0000 - - - - - X64 - - - ws2_32.lib;%(AdditionalDependencies) - 0x1e1D0000 - MachineX64 - - - - - ws2_32.lib;%(AdditionalDependencies) - 0x1e1D0000 - - - - - X64 - - - ws2_32.lib;%(AdditionalDependencies) - 0x1e1D0000 - MachineX64 - - diff --git a/PCbuild/_overlapped.vcxproj b/PCbuild/_overlapped.vcxproj index d0ee72fb5a1..55301ea9dc2 100644 --- a/PCbuild/_overlapped.vcxproj +++ b/PCbuild/_overlapped.vcxproj @@ -39,186 +39,32 @@ _overlapped Win32Proj + - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - + DynamicLibrary NotSet + + .pyd + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - + ws2_32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) 0x1D110000 - - - X64 - - - ws2_32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) - 0x1D110000 - - - - - ws2_32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) - 0x1D110000 - - - - - X64 - - - ws2_32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) - 0x1D110000 - - - - - ws2_32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) - 0x1D110000 - - - - - X64 - - - ws2_32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) - 0x1D110000 - MachineX64 - - - - - ws2_32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) - 0x1D110000 - - - - - X64 - - - ws2_32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) - 0x1D110000 - MachineX64 - - diff --git a/PCbuild/_socket.vcxproj b/PCbuild/_socket.vcxproj index 63836e9261c..03b6f7558eb 100644 --- a/PCbuild/_socket.vcxproj +++ b/PCbuild/_socket.vcxproj @@ -39,178 +39,32 @@ _socket Win32Proj + - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - + DynamicLibrary NotSet + + .pyd + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - + ws2_32.lib;%(AdditionalDependencies) 0x1e1D0000 - - - X64 - - - ws2_32.lib;%(AdditionalDependencies) - 0x1e1D0000 - - - - - ws2_32.lib;%(AdditionalDependencies) - 0x1e1D0000 - - - - - X64 - - - ws2_32.lib;%(AdditionalDependencies) - 0x1e1D0000 - - - - - ws2_32.lib;%(AdditionalDependencies) - 0x1e1D0000 - - - - - X64 - - - ws2_32.lib;%(AdditionalDependencies) - 0x1e1D0000 - MachineX64 - - - - - ws2_32.lib;%(AdditionalDependencies) - 0x1e1D0000 - - - - - X64 - - - ws2_32.lib;%(AdditionalDependencies) - 0x1e1D0000 - MachineX64 - - diff --git a/PCbuild/_sqlite3.vcxproj b/PCbuild/_sqlite3.vcxproj index ed35d5bc0c3..5e889d0de00 100644 --- a/PCbuild/_sqlite3.vcxproj +++ b/PCbuild/_sqlite3.vcxproj @@ -39,117 +39,27 @@ _sqlite3 Win32Proj + - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - + DynamicLibrary NotSet + + .pyd + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - + $(sqlite3Dir);%(AdditionalIncludeDirectories) MODULE_NAME="sqlite3";%(PreprocessorDefinitions) @@ -158,83 +68,6 @@ 0x1e180000 - - - X64 - - - $(sqlite3Dir);%(AdditionalIncludeDirectories) - MODULE_NAME="sqlite3";%(PreprocessorDefinitions) - - - 0x1e180000 - - - - - $(sqlite3Dir);%(AdditionalIncludeDirectories) - MODULE_NAME="sqlite3";%(PreprocessorDefinitions) - - - 0x1e180000 - - - - - X64 - - - $(sqlite3Dir);%(AdditionalIncludeDirectories) - MODULE_NAME="sqlite3";%(PreprocessorDefinitions) - - - 0x1e180000 - - - - - $(sqlite3Dir);%(AdditionalIncludeDirectories) - MODULE_NAME="sqlite3";%(PreprocessorDefinitions) - - - 0x1e180000 - - - - - X64 - - - $(sqlite3Dir);%(AdditionalIncludeDirectories) - MODULE_NAME="sqlite3";%(PreprocessorDefinitions) - - - 0x1e180000 - MachineX64 - - - - - $(sqlite3Dir);%(AdditionalIncludeDirectories) - MODULE_NAME="sqlite3";%(PreprocessorDefinitions) - - - 0x1e180000 - - - - - X64 - - - $(sqlite3Dir);%(AdditionalIncludeDirectories) - MODULE_NAME="sqlite3";%(PreprocessorDefinitions) - - - 0x1e180000 - MachineX64 - - diff --git a/PCbuild/_ssl.vcxproj b/PCbuild/_ssl.vcxproj index 7378794b3d9..8594a069660 100644 --- a/PCbuild/_ssl.vcxproj +++ b/PCbuild/_ssl.vcxproj @@ -39,242 +39,50 @@ _ssl Win32Proj + - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - + DynamicLibrary NotSet + + .pyd + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - + - $(opensslDir)\inc32;%(AdditionalIncludeDirectories) + $(opensslDir)include;%(AdditionalIncludeDirectories) - - - - - ws2_32.lib;crypt32.lib;$(opensslDir)\out32\libeay32.lib;$(opensslDir)\out32\ssleay32.lib;%(AdditionalDependencies) - - - - - X64 - - - $(opensslDir)\inc64;%(AdditionalIncludeDirectories) - - - - - - - ws2_32.lib;crypt32.lib;$(opensslDir)\out64\libeay32.lib;$(opensslDir)\out64\ssleay32.lib;%(AdditionalDependencies) - - - - - $(opensslDir)\inc32;%(AdditionalIncludeDirectories) - - - - - - - ws2_32.lib;crypt32.lib;$(opensslDir)\out32\libeay32.lib;$(opensslDir)\out32\ssleay32.lib;%(AdditionalDependencies) - - - - - X64 - - - $(opensslDir)\inc64;%(AdditionalIncludeDirectories) - - - - - - - ws2_32.lib;crypt32.lib;$(opensslDir)\out64\libeay32.lib;$(opensslDir)\out64\ssleay32.lib;%(AdditionalDependencies) - - - - - $(opensslDir)\inc32;%(AdditionalIncludeDirectories) - - - - - - - ws2_32.lib;crypt32.lib;$(opensslDir)\out32\libeay32.lib;$(opensslDir)\out32\ssleay32.lib;%(AdditionalDependencies) - - - - - X64 - - - $(opensslDir)\inc64;%(AdditionalIncludeDirectories) - - - - - - - ws2_32.lib;crypt32.lib;$(opensslDir)\out64\libeay32.lib;$(opensslDir)\out64\ssleay32.lib;%(AdditionalDependencies) - MachineX64 - - - - - $(opensslDir)\inc32;%(AdditionalIncludeDirectories) - - - - - - - ws2_32.lib;crypt32.lib;$(opensslDir)\out32\libeay32.lib;$(opensslDir)\out32\ssleay32.lib;%(AdditionalDependencies) - - - - - X64 - - - $(opensslDir)\inc64;%(AdditionalIncludeDirectories) - - - - - - - ws2_32.lib;crypt32.lib;$(opensslDir)\out64\libeay32.lib;$(opensslDir)\out64\ssleay32.lib;%(AdditionalDependencies) - MachineX64 + ws2_32.lib;crypt32.lib;$(OutDir)libeay$(PyDebugExt).lib;$(OutDir)ssleay$(PyDebugExt).lib;%(AdditionalDependencies) - - {b11d750f-cd1f-4a96-85ce-e69a5c5259f9} - false - {cf7ac3d1-e2df-41d2-bea6-1e2556cdea26} false - + {e5b04cc0-eb4c-42ab-b4dc-18ef95f864b0} false + + {10615b24-73bf-4efa-93aa-236916321317} + false + {86937f53-c189-40ef-8ce8-8759d8e7d480} false diff --git a/PCbuild/_testbuffer.vcxproj b/PCbuild/_testbuffer.vcxproj index e1265f68414..8cbf1251c36 100644 --- a/PCbuild/_testbuffer.vcxproj +++ b/PCbuild/_testbuffer.vcxproj @@ -38,171 +38,33 @@ {A2697BD3-28C1-4AEC-9106-8B748639FD16} _testbuffer Win32Proj + false + - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - + DynamicLibrary NotSet + + .pyd + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + <_ProjectFileVersion>10.0.40219.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - + 0x1e1F0000 - - - X64 - - - 0x1e1F0000 - - - - - 0x1e1F0000 - - - - - X64 - - - 0x1e1F0000 - - - - - 0x1e1F0000 - - - - - X64 - - - 0x1e1F0000 - MachineX64 - - - - - 0x1e1F0000 - - - - - X64 - - - 0x1e1F0000 - MachineX64 - - diff --git a/PCbuild/_testcapi.vcxproj b/PCbuild/_testcapi.vcxproj index e99a7e4f3fe..dbf44e6e941 100644 --- a/PCbuild/_testcapi.vcxproj +++ b/PCbuild/_testcapi.vcxproj @@ -38,171 +38,33 @@ {6901D91C-6E48-4BB7-9FEC-700C8131DF1D} _testcapi Win32Proj + false + - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - + DynamicLibrary NotSet + + .pyd + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - + 0x1e1F0000 - - - X64 - - - 0x1e1F0000 - - - - - 0x1e1F0000 - - - - - X64 - - - 0x1e1F0000 - - - - - 0x1e1F0000 - - - - - X64 - - - 0x1e1F0000 - MachineX64 - - - - - 0x1e1F0000 - - - - - X64 - - - 0x1e1F0000 - MachineX64 - - diff --git a/PCbuild/_testembed.vcxproj b/PCbuild/_testembed.vcxproj index 57b7b5cb1eb..f0e4d9f8746 100644 --- a/PCbuild/_testembed.vcxproj +++ b/PCbuild/_testembed.vcxproj @@ -9,6 +9,22 @@ Debug x64 + + PGInstrument + Win32 + + + PGInstrument + x64 + + + PGUpdate + Win32 + + + PGUpdate + x64 + Release Win32 @@ -22,124 +38,28 @@ {6DAC66D9-E703-4624-BE03-49112AB5AA62} Win32Proj _testembed + false + - + Application - true - Unicode - - - Application - true - Unicode - - - Application - false - true - Unicode - - - Application - false - true Unicode - + - - - - - - - - - - - - - - - - - - false - - - false - - - false - - - false - - + - - - Level3 - Disabled - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + _CONSOLE;%(PreprocessorDefinitions) Console - true - - - - - - - Level3 - Disabled - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - - - Console - true - - - - - Level3 - - - MaxSpeed - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - - - Console - true - true - true - - - - - Level3 - - - MaxSpeed - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - - - Console - true - true - true @@ -148,11 +68,7 @@ {cf7ac3d1-e2df-41d2-bea6-1e2556cdea26} - true - true - false - true - false + false diff --git a/PCbuild/_testimportmultiple.vcxproj b/PCbuild/_testimportmultiple.vcxproj index 84984ff2f70..cec042c202c 100644 --- a/PCbuild/_testimportmultiple.vcxproj +++ b/PCbuild/_testimportmultiple.vcxproj @@ -38,171 +38,33 @@ {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781} _testimportmultiple Win32Proj + false + - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - + DynamicLibrary NotSet + + .pyd + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - + 0x1e1F0000 - - - X64 - - - 0x1e1F0000 - - - - - 0x1e1F0000 - - - - - X64 - - - 0x1e1F0000 - - - - - 0x1e1F0000 - - - - - X64 - - - 0x1e1F0000 - MachineX64 - - - - - 0x1e1F0000 - - - - - X64 - - - 0x1e1F0000 - MachineX64 - - diff --git a/PCbuild/_tkinter.vcxproj b/PCbuild/_tkinter.vcxproj index 9218d63933e..e1408a18ea3 100644 --- a/PCbuild/_tkinter.vcxproj +++ b/PCbuild/_tkinter.vcxproj @@ -39,210 +39,35 @@ _tkinter Win32Proj + - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - + DynamicLibrary NotSet + + .pyd + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - + - $(tcltkDir)\include;%(AdditionalIncludeDirectories) + $(tcltkDir)include;%(AdditionalIncludeDirectories) WITH_APPINIT;%(PreprocessorDefinitions) $(tcltkLib);%(AdditionalDependencies) - - - X64 - - - $(tcltkDir)\include;%(AdditionalIncludeDirectories) - WITH_APPINIT;%(PreprocessorDefinitions) - - - $(tcltkLib);%(AdditionalDependencies) - - - - - $(tcltkDir)\include;%(AdditionalIncludeDirectories) - WITH_APPINIT;%(PreprocessorDefinitions) - - - $(tcltkLib);%(AdditionalDependencies) - - - - - X64 - - - $(tcltkDir)\include;%(AdditionalIncludeDirectories) - WITH_APPINIT;%(PreprocessorDefinitions) - - - $(tcltkLib);%(AdditionalDependencies) - - - - - $(tcltkDir)\include;%(AdditionalIncludeDirectories) - WITH_APPINIT;%(PreprocessorDefinitions) - - - $(tcltkLib);%(AdditionalDependencies) - - - - - X64 - - - $(tcltkDir)\include;%(AdditionalIncludeDirectories) - WITH_APPINIT;%(PreprocessorDefinitions) - - - $(tcltkLib);%(AdditionalDependencies) - MachineX64 - - - - - $(tcltkDir)\include;%(AdditionalIncludeDirectories) - WITH_APPINIT;%(PreprocessorDefinitions) - - - $(tcltkLib);%(AdditionalDependencies) - - - - - X64 - - - $(tcltkDir)\include;%(AdditionalIncludeDirectories) - WITH_APPINIT;%(PreprocessorDefinitions) - - - $(tcltkLib);%(AdditionalDependencies) - MachineX64 - - diff --git a/PCbuild/bdist_wininst.vcxproj b/PCbuild/bdist_wininst.vcxproj index 49276a2e41e..f7f9cd87915 100644 --- a/PCbuild/bdist_wininst.vcxproj +++ b/PCbuild/bdist_wininst.vcxproj @@ -1,6 +1,30 @@  + + Debug + Win32 + + + Debug + x64 + + + PGInstrument + Win32 + + + PGInstrument + x64 + + + PGUpdate + Win32 + + + PGUpdate + x64 + Release Win32 @@ -13,14 +37,12 @@ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C} wininst + ClCompile + false + - - Application - false - NotSet - - + Application false NotSet @@ -28,109 +50,32 @@ - + - - - - - - - <_ProjectFileVersion>10.0.30319.1 - ..\lib\distutils\command\ - false - ..\lib\distutils\command\ - $(SolutionDir)$(PlatformName)-temp-$(Configuration)\$(ProjectName)\ - false - AllRules.ruleset - - - AllRules.ruleset - - - .exe - .exe + $(PySourcePath)lib\distutils\command\ + false + wininst-$(VisualStudioVersion) + $(TargetName)-amd64 + .exe - + - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\..\lib\distutils\command\wininst.tlb - - + $(OutDir)wininst.tlb MinSpace - OnlyExplicitInline - ..\PC\bdist_wininst;..\Include;..\Modules\zlib;%(AdditionalIncludeDirectories) + $(PySourcePath)PC\bdist_wininst;$(PySourcePath)Modules\zlib;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) - true - MultiThreaded - true - Level3 - true - NDEBUG;%(PreprocessorDefinitions) - 0x0000 - ..\PC;..\PC\bdist_wininst;..\Include;%(AdditionalIncludeDirectories) + $(PySourcePath)PC\bdist_wininst;%(AdditionalIncludeDirectories) comctl32.lib;imagehlp.lib;%(AdditionalDependencies) - ..\lib\distutils\command\wininst-10.0.exe - true - LIBC;%(IgnoreSpecificDefaultLibraries) - ..\lib\distutils\command\wininst-10.0.pdb - Windows - false - - - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - X64 - .\..\lib\distutils\command\wininst.tlb - - - - - MinSpace - OnlyExplicitInline - ..\PC\bdist_wininst;..\Include;..\Modules\zlib;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) - true - MultiThreaded - true - Level3 - true - - - NDEBUG;%(PreprocessorDefinitions) - 0x0000 - ..\PC;..\PC\bdist_wininst;..\Include;%(AdditionalIncludeDirectories) - - - comctl32.lib;imagehlp.lib;%(AdditionalDependencies) - ..\lib\distutils\command\wininst-10.0-amd64.exe - true - LIBC;%(IgnoreSpecificDefaultLibraries) - ..\lib\distutils\command\wininst-9.0-amd64.pdb - Windows - false - - - MachineX64 diff --git a/PCbuild/build.bat b/PCbuild/build.bat index 838f6ef7632..2846144ff98 100644 --- a/PCbuild/build.bat +++ b/PCbuild/build.bat @@ -6,29 +6,38 @@ 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, Clean, or CleanAll) rem -d Set the configuration to Debug rem -e Pull in external libraries using get_externals.bat +rem -M Disable parallel build +rem -v Increased output messages setlocal set platf=Win32 +set vs_platf=x86 set conf=Release set target=Build set dir=%~dp0 +set parallel=/m +set verbose=/nologo /v:m :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' (set target=%2) & shift & shift & goto CheckOpts if '%1'=='-d' (set conf=Debug) & shift & goto CheckOpts if '%1'=='-e' call "%dir%get_externals.bat" & shift & goto CheckOpts +if '%1'=='-M' (set parallel=) & shift & goto CheckOpts +if '%1'=='-v' (set verbose=/v:n) & shift & goto CheckOpts if '%platf%'=='x64' (set vs_platf=x86_amd64) rem Setup the environment -call "%VS100COMNTOOLS%..\..\VC\vcvarsall.bat" %vs_platf% +call "%dir%env.bat" %vs_platf% >nul rem Call on MSBuild 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 -msbuild "%dir%pcbuild.sln" /t:%target% /p:Configuration=%conf% /p:Platform=%platf% %1 %2 %3 %4 %5 %6 %7 %8 %9 +msbuild "%dir%pcbuild.proj" /t:%target% %parallel% %verbose% /p:Configuration=%conf% /p:Platform=%platf% %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --git a/PCbuild/build_pgo.bat b/PCbuild/build_pgo.bat index f5135836027..5988c0a268d 100644 --- a/PCbuild/build_pgo.bat +++ b/PCbuild/build_pgo.bat @@ -7,6 +7,7 @@ rem building the PGUpdate configuration while developing. setlocal set platf=Win32 +set parallel=/m set dir=%~dp0 rem use the performance testsuite. This is quick and simple @@ -23,26 +24,25 @@ 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 +if "%1"=="-M" (set parallel=) & shift & goto CheckOpts -set PGI=%dir%%platf%-pgi -set PGO=%dir%%platf%-pgo rem We cannot cross compile PGO builds, as the optimization needs to be run natively set vs_platf=x86 -if "%platf%"=="x64" (set vs_platf=amd64) +set PGO=%dir%win32-pgo + +if "%platf%"=="x64" (set vs_platf=amd64) & (set PGO=%dir%amd64-pgo) rem Setup the environment -call "%VS100COMNTOOLS%..\..\VC\vcvarsall.bat" %vs_platf% +call "%dir%env.bat" %vs_platf% + rem build the instrumented version -msbuild "%dir%pcbuild.sln" /t:Build /p:Configuration=PGInstrument /p:Platform=%platf% %1 %2 %3 %4 %5 %6 %7 %8 %9 +msbuild "%dir%pcbuild.proj" %parallel% /t:Build /p:Configuration=PGInstrument /p:Platform=%platf% %1 %2 %3 %4 %5 %6 %7 %8 %9 rem remove .pyc files, .pgc files and execute the job -"%PGI%\python.exe" "%dir%rmpyc.py" %clrpath% -del "%PGI%\*.pgc" -"%PGI%\python.exe" %job% - -rem clean -if exist "%PGO%" del /s /q "%PGO%" +"%PGO%\python.exe" "%dir%rmpyc.py" %clrpath% +del "%PGO%\*.pgc" +"%PGO%\python.exe" %job% rem build optimized version -msbuild "%dir%pcbuild.sln" /t:Build /p:Configuration=PGUpdate /p:Platform=%platf% %1 %2 %3 %4 %5 %6 %7 %8 %9 +msbuild "%dir%pcbuild.proj" %parallel% /t:Build /p:Configuration=PGUpdate /p:Platform=%platf% %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --git a/PCbuild/clean.bat b/PCbuild/clean.bat new file mode 100644 index 00000000000..6144c715f64 --- /dev/null +++ b/PCbuild/clean.bat @@ -0,0 +1,5 @@ +@echo off +rem A batch program to clean a particular configuration, +rem just for convenience. + +call %~dp0build.bat -t Clean %* diff --git a/PCbuild/debug.props b/PCbuild/debug.props deleted file mode 100644 index 54f3c325420..00000000000 --- a/PCbuild/debug.props +++ /dev/null @@ -1,31 +0,0 @@ - - - - _d - $(OutDir)kill_python_d.exe - g - - - <_ProjectFileVersion>10.0.30319.1 - $(ProjectName)_d - - - - _DEBUG;%(PreprocessorDefinitions) - - - _DEBUG - - - - - $(PyDebugExt) - - - $(KillPythonExe) - - - $(TclDebugExt) - - - \ No newline at end of file diff --git a/PCbuild/env.bat b/PCbuild/env.bat index f0268a9135c..9d4c9d1c32f 100644 --- a/PCbuild/env.bat +++ b/PCbuild/env.bat @@ -1,5 +1,16 @@ @echo off +rem This script adds the latest available tools to the path for the current +rem command window. However, most builds of Python will ignore the version +rem of the tools on PATH and use PlatformToolset instead. Ideally, both sets of +rem tools should be the same version to avoid potential conflicts. +rem +rem To build Python with an earlier toolset, pass "/p:PlatformToolset=v100" (or +rem 'v110', 'v120' or 'v140') to the build script. -echo Build environments: x86, ia64, amd64, x86_amd64, x86_ia64 +echo Build environments: x86, amd64, x86_amd64 echo. -call "%VS100COMNTOOLS%..\..\VC\vcvarsall.bat" %1 +set VSTOOLS=%VS140COMNTOOLS% +if "%VSTOOLS%"=="" set VSTOOLS=%VS120COMNTOOLS% +if "%VSTOOLS%"=="" set VSTOOLS=%VS110COMNTOOLS% +if "%VSTOOLS%"=="" set VSTOOLS=%VS100COMNTOOLS% +call "%VSTOOLS%..\..\VC\vcvarsall.bat" %* diff --git a/PCbuild/idle.bat b/PCbuild/idle.bat index dcb0485af7d..1978b99f6ee 100644 --- a/PCbuild/idle.bat +++ b/PCbuild/idle.bat @@ -4,10 +4,10 @@ rem Usage: idle [-d] rem -d Run Debug build (python_d.exe). Else release build. setlocal -set exe=python -PATH %PATH%;..\..\tcltk\bin +set exe=win32\python +PATH %PATH%;..\externals\tcltk\bin -if "%1"=="-d" (set exe=python_d) & shift +if "%1"=="-d" (set exe=%exe%_d) & shift set cmd=%exe% ../Lib/idlelib/idle.py %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --git a/PCbuild/installer.bmp b/PCbuild/installer.bmp deleted file mode 100644 index 1875e194ba2720cf25541c20e0459f16f3f96d72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58806 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 -#include -#include -#include - -#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. python35[_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/PCbuild/kill_python.vcxproj b/PCbuild/kill_python.vcxproj deleted file mode 100644 index 9f67c4081fd..00000000000 --- a/PCbuild/kill_python.vcxproj +++ /dev/null @@ -1,120 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {6DE10744-E396-40A5-B4E2-1B69AA7C8D31} - kill_python - Win32Proj - - - - Application - NotSet - true - - - Application - NotSet - - - Application - NotSet - true - - - Application - NotSet - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - $(OutDir)$(ProjectName)_d.exe - Console - - - - - X64 - - - $(OutDir)$(ProjectName)_d.exe - Console - - - - - Console - - - - - X64 - - - Console - - - - - - - - - \ No newline at end of file diff --git a/PCbuild/kill_python.vcxproj.filters b/PCbuild/kill_python.vcxproj.filters deleted file mode 100644 index 433d7515968..00000000000 --- a/PCbuild/kill_python.vcxproj.filters +++ /dev/null @@ -1,13 +0,0 @@ - - - - - {48606591-c8b6-41a5-95c5-9a0890c5504f} - - - - - Source Files - - - \ No newline at end of file diff --git a/PCbuild/libeay.vcxproj b/PCbuild/libeay.vcxproj new file mode 100644 index 00000000000..4adec9082db --- /dev/null +++ b/PCbuild/libeay.vcxproj @@ -0,0 +1,892 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + PGInstrument + Win32 + + + PGInstrument + x64 + + + PGUpdate + Win32 + + + PGUpdate + x64 + + + Debug + x64 + + + Release + x64 + + + + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0} + libeay + + + + + + + + StaticLibrary + $(opensslDir)tmp32\libeay\ + $(opensslDir)tmp64\libeay\ + + + + + + + <_DATEValue>#define DATE "$([System.DateTime]::Now.ToString(`ddd MMM dd HH':'mm':'ss yyyy`))" + <_CFLAGSValue>#define CFLAGS "cl /MD /Ox -W3 -Gs0 -Gy -nologo @(PreprocessorDefinitions->'-D%(Identity)',' ')" + <_PLATFORMValue Condition="$(Platform)=='Win32'">#define PLATFORM "VC-WIN32" + <_PLATFORMValue Condition="$(Platform)=='x64'">#define PLATFORM "VC-WIN64A" + + + + + + + + + + + + $(IntDir);%(AdditionalIncludeDirectories) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/PCbuild/make_buildinfo.c b/PCbuild/make_buildinfo.c deleted file mode 100644 index f9aadee65f9..00000000000 --- a/PCbuild/make_buildinfo.c +++ /dev/null @@ -1,194 +0,0 @@ -#include -#include -#include -#include -#include - -#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. - - However, if a second argument is provided, this will be used - as a temporary directory where any getbuildinfo2.c and - getbuildinfo.o files are put. This is useful if multiple - configurations are being built in parallel, to avoid them - trampling each other's files. - -*/ - -int make_buildinfo2(const char *tmppath) -{ - 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 \""); - strcat_s(command, CMD_SIZE, tmppath); /* quoted tmppath */ - strcat_s(command, CMD_SIZE, "getbuildinfo2.c\""); - puts(command); fflush(stdout); - if (system(command) < 0) - return 0; - return 1; -} - -const char DELIMS[] = { " \n" }; - -int get_mercurial_info(char * hgbranch, char * hgtag, char * hgrev, int size) -{ - int result = 0; - char filename[CMD_SIZE]; - char cmdline[CMD_SIZE]; - - strcpy_s(filename, CMD_SIZE, "tmpXXXXXX"); - if (_mktemp_s(filename, CMD_SIZE) == 0) { - int rc; - - strcpy_s(cmdline, CMD_SIZE, "hg id -bit > "); - strcat_s(cmdline, CMD_SIZE, filename); - rc = system(cmdline); - if (rc == 0) { - FILE * fp; - - if (fopen_s(&fp, filename, "r") == 0) { - char * cp = fgets(cmdline, CMD_SIZE, fp); - - if (cp) { - char * context = NULL; - char * tp = strtok_s(cp, DELIMS, &context); - if (tp) { - strcpy_s(hgrev, size, tp); - tp = strtok_s(NULL, DELIMS, &context); - if (tp) { - strcpy_s(hgbranch, size, tp); - tp = strtok_s(NULL, DELIMS, &context); - if (tp) { - strcpy_s(hgtag, size, tp); - result = 1; - } - } - } - } - fclose(fp); - } - } - _unlink(filename); - } - return result; -} - -int main(int argc, char*argv[]) -{ - char command[CMD_SIZE] = "cl.exe -c -D_WIN32 -DUSE_DL_EXPORT -D_WINDOWS -DWIN32 -D_WINDLL "; - char tmppath[CMD_SIZE] = ""; - int do_unlink, result; - char *tmpdir = NULL; - if (argc <= 2 || argc > 3) { - fprintf(stderr, "make_buildinfo $(ConfigurationName) [tmpdir]\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 (argc > 2) { - tmpdir = argv[2]; - strcat_s(tmppath, _countof(tmppath), tmpdir); - /* Hack fix for bad command line: If the command is issued like this: - * $(SolutionDir)make_buildinfo.exe" Debug "$(IntDir)" - * we will get a trailing quote because IntDir ends with a backslash that then - * escapes the final ". To simplify the life for developers, catch that problem - * here by cutting it off. - * The proper command line, btw is: - * $(SolutionDir)make_buildinfo.exe" Debug "$(IntDir)\" - * Hooray for command line parsing on windows. - */ - if (strlen(tmppath) > 0 && tmppath[strlen(tmppath)-1] == '"') - tmppath[strlen(tmppath)-1] = '\0'; - strcat_s(tmppath, _countof(tmppath), "\\"); - } - - if ((do_unlink = make_buildinfo2(tmppath))) { - strcat_s(command, CMD_SIZE, "\""); - strcat_s(command, CMD_SIZE, tmppath); - strcat_s(command, CMD_SIZE, "getbuildinfo2.c\" -DSUBWCREV "); - } - else { - char hgtag[CMD_SIZE]; - char hgbranch[CMD_SIZE]; - char hgrev[CMD_SIZE]; - - if (get_mercurial_info(hgbranch, hgtag, hgrev, CMD_SIZE)) { - strcat_s(command, CMD_SIZE, "-DHGBRANCH=\\\""); - strcat_s(command, CMD_SIZE, hgbranch); - strcat_s(command, CMD_SIZE, "\\\""); - - strcat_s(command, CMD_SIZE, " -DHGTAG=\\\""); - strcat_s(command, CMD_SIZE, hgtag); - strcat_s(command, CMD_SIZE, "\\\""); - - strcat_s(command, CMD_SIZE, " -DHGVERSION=\\\""); - strcat_s(command, CMD_SIZE, hgrev); - strcat_s(command, CMD_SIZE, "\\\" "); - } - strcat_s(command, CMD_SIZE, "..\\Modules\\getbuildinfo.c"); - } - strcat_s(command, CMD_SIZE, " -Fo\""); - strcat_s(command, CMD_SIZE, tmppath); - strcat_s(command, CMD_SIZE, "getbuildinfo.o\" -I..\\Include -I..\\PC"); - puts(command); fflush(stdout); - result = system(command); - if (do_unlink) { - command[0] = '\0'; - strcat_s(command, CMD_SIZE, "\""); - strcat_s(command, CMD_SIZE, tmppath); - strcat_s(command, CMD_SIZE, "getbuildinfo2.c\""); - _unlink(command); - } - if (result < 0) - return EXIT_FAILURE; - return 0; -} diff --git a/PCbuild/make_buildinfo.vcxproj b/PCbuild/make_buildinfo.vcxproj deleted file mode 100644 index eee7f91eac8..00000000000 --- a/PCbuild/make_buildinfo.vcxproj +++ /dev/null @@ -1,52 +0,0 @@ - - - - - Release - Win32 - - - - {C73F0EC1-358B-4177-940F-0846AC8B04CD} - make_buildinfo - Win32Proj - - - - Application - NotSet - - - - - - - - - - - - <_ProjectFileVersion>10.0.40219.1 - AllRules.ruleset - - - - - - Disabled - OnlyExplicitInline - _CONSOLE;%(PreprocessorDefinitions) - MultiThreaded - - - $(OutDir)make_buildinfo.exe - Console - - - - - - - - - \ No newline at end of file diff --git a/PCbuild/make_buildinfo.vcxproj.filters b/PCbuild/make_buildinfo.vcxproj.filters deleted file mode 100644 index 2227f8ce7bd..00000000000 --- a/PCbuild/make_buildinfo.vcxproj.filters +++ /dev/null @@ -1,14 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - Source Files - - - \ No newline at end of file diff --git a/PCbuild/make_versioninfo.vcxproj b/PCbuild/make_versioninfo.vcxproj deleted file mode 100644 index 9cf507bbb6a..00000000000 --- a/PCbuild/make_versioninfo.vcxproj +++ /dev/null @@ -1,200 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {F0E0541E-F17D-430B-97C4-93ADF0DD284E} - make_versioninfo - - - - Application - false - NotSet - - - Application - false - MultiByte - - - Application - - - Application - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.40219.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - Build PC/pythonnt_rc(_d).h - cd $(SolutionDir) -make_versioninfo.exe > ..\PC\pythonnt_rc.h - - $(SolutionDir)..\PC\pythonnt_rc.h;%(Outputs) - $(SolutionDir)make_versioninfo.exe - - - MaxSpeed - OnlyExplicitInline - true - %(AdditionalIncludeDirectories) - _CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Default - - - $(SolutionDir)make_versioninfo.exe - Console - 0x1d000000 - - - - - - - - - - Build PC/pythonnt_rc(_d).h - cd $(SolutionDir) -make_versioninfo.exe > ..\PC\pythonnt_rc.h - - $(SolutionDir)..\PC\pythonnt_rc.h;%(Outputs) - - - MaxSpeed - OnlyExplicitInline - true - _CONSOLE;%(PreprocessorDefinitions) - - - $(SolutionDir)make_versioninfo.exe - - - cd $(SolutionDir) -make_versioninfo.exe > ..\PC\python_nt.h - - - - - - Build PC/pythonnt_rc(_d).h - cd $(SolutionDir) -make_versioninfo_d.exe > ..\PC\pythonnt_rc_d.h - - $(SolutionDir)..\PC\pythonnt_rc_d.h;%(Outputs) - $(SolutionDir)make_versioninfo_d.exe - - - Disabled - OnlyExplicitInline - false - %(AdditionalIncludeDirectories) - _CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Default - - - $(SolutionDir)make_versioninfo_d.exe - Console - 0x1d000000 - - - - - - - - - Build PC/pythonnt_rc(_d).h - cd $(SolutionDir) -make_versioninfo_d.exe > ..\PC\pythonnt_rc_d.h - - $(SolutionDir)..\PC\pythonnt_rc_d.h;%(Outputs) - - - X64 - - - Disabled - OnlyExplicitInline - false - _CONSOLE;%(PreprocessorDefinitions) - - - $(SolutionDir)make_versioninfo_d.exe - MachineX64 - - - cd $(SolutionDir) -make_versioninfo_d.exe > ..\PC\python_nt_d.h - - - - - - - - - - \ No newline at end of file diff --git a/PCbuild/make_versioninfo.vcxproj.filters b/PCbuild/make_versioninfo.vcxproj.filters deleted file mode 100644 index 96c0434e877..00000000000 --- a/PCbuild/make_versioninfo.vcxproj.filters +++ /dev/null @@ -1,13 +0,0 @@ - - - - - {e4180954-c3a5-4749-b9a4-31b804ee4fa8} - - - - - Source Files - - - \ No newline at end of file diff --git a/PCbuild/openssl.props b/PCbuild/openssl.props new file mode 100644 index 00000000000..f964e4cae65 --- /dev/null +++ b/PCbuild/openssl.props @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_PreprocessorDefinitionList>@(PreprocessorDefinitions) + + + + + + 4244;4267 + $(opensslDir);$(opensslDir)include;$(opensslDir)crypto;$(opensslDir)crypto\asn1;$(opensslDir)crypto\evp;$(opensslDir)crypto\modes + $(_PreprocessorDefinitionList);%(PreprocessorDefinitions) + + + + + + "$(nasmDir)nasm.exe" -f win32 + "$(nasmDir)nasm.exe" -f win64 -DNEAR -Ox -g + + + + + + + + + + + \ No newline at end of file diff --git a/PCbuild/pcbuild.proj b/PCbuild/pcbuild.proj new file mode 100644 index 00000000000..332a029e656 --- /dev/null +++ b/PCbuild/pcbuild.proj @@ -0,0 +1,86 @@ + + + + {CC9B93A2-439D-4058-9D29-6DCF43774405} + Win32 + Release + true + true + true + + + + + $(Platform) + $(Configuration) + + Build + Clean + CleanAll + true + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/PCbuild/pcbuild.sln b/PCbuild/pcbuild.sln index 2c3127b62a1..e24defd5e6b 100644 --- a/PCbuild/pcbuild.sln +++ b/PCbuild/pcbuild.sln @@ -1,5 +1,7 @@ -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.30501.0 +MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{553EC33E-9816-4996-A660-5D6186A0B0B3}" ProjectSection(SolutionItems) = preProject ..\Modules\getbuildinfo.c = ..\Modules\getbuildinfo.c @@ -8,14 +10,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python", "python.vcxproj", "{B11D750F-CD1F-4A96-85CE-E69A5C5259F9}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_versioninfo", "make_versioninfo.vcxproj", "{F0E0541E-F17D-430B-97C4-93ADF0DD284E}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythoncore", "pythoncore.vcxproj", "{CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythonw", "pythonw.vcxproj", "{F4229CC3-873C-49AE-9729-DD308ED4CD4A}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_buildinfo", "make_buildinfo.vcxproj", "{C73F0EC1-358B-4177-940F-0846AC8B04CD}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winsound", "winsound.vcxproj", "{28B5D777-DDF2-4B6B-B34F-31D938813856}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_decimal", "_decimal.vcxproj", "{0E9791DB-593A-465F-98BC-681011311617}" @@ -58,10 +56,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sqlite3", "sqlite3.vcxproj" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_multiprocessing", "_multiprocessing.vcxproj", "{9E48B300-37D1-11DD-8C41-005056C00008}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ssl", "ssl.vcxproj", "{E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "kill_python", "kill_python.vcxproj", "{6DE10744-E396-40A5-B4E2-1B69AA7C8D31}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python3dll", "python3dll.vcxproj", "{885D4898-D08D-4091-9C40-C700CFE3FC5A}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xxlimited", "xxlimited.vcxproj", "{F749B822-B489-4CA5-A3AD-CE078F5F338A}" @@ -80,9 +74,13 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testembed", "_testembed.vc EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tcl", "tcl.vcxproj", "{B5FD6F1D-129E-4BFF-9340-03606FAC7283}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tix", "tix.vcxproj", "{C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}" +EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tk", "tk.vcxproj", "{7E85ECCF-A72C-4DA4-9E52-884508E80BA1}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tix", "tix.vcxproj", "{C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libeay", "libeay.vcxproj", "{E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ssleay", "ssleay.vcxproj", "{10615B24-73BF-4EFA-93AA-236916321317}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -112,22 +110,6 @@ Global {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 @@ -148,34 +130,18 @@ Global {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}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGInstrument|Win32.Build.0 = Release|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGInstrument|x64.ActiveCfg = Release|x64 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGInstrument|x64.Build.0 = Release|x64 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGUpdate|Win32.Build.0 = Release|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGUpdate|x64.ActiveCfg = Release|x64 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGUpdate|x64.Build.0 = Release|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 - {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 @@ -228,14 +194,14 @@ Global {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}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {9EC7190A-249F-4180-A900-548FDCF3055F}.PGInstrument|Win32.Build.0 = Release|Win32 + {9EC7190A-249F-4180-A900-548FDCF3055F}.PGInstrument|x64.ActiveCfg = Release|x64 + {9EC7190A-249F-4180-A900-548FDCF3055F}.PGInstrument|x64.Build.0 = Release|x64 + {9EC7190A-249F-4180-A900-548FDCF3055F}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {9EC7190A-249F-4180-A900-548FDCF3055F}.PGUpdate|Win32.Build.0 = Release|Win32 + {9EC7190A-249F-4180-A900-548FDCF3055F}.PGUpdate|x64.ActiveCfg = Release|x64 + {9EC7190A-249F-4180-A900-548FDCF3055F}.PGUpdate|x64.Build.0 = Release|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 @@ -340,14 +306,14 @@ Global {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Debug|Win32.Build.0 = Debug|Win32 {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Debug|x64.ActiveCfg = Debug|x64 {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Debug|x64.Build.0 = Debug|x64 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGInstrument|Win32.Build.0 = Release|Win32 + {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGInstrument|x64.ActiveCfg = Release|x64 + {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGInstrument|x64.Build.0 = Release|x64 + {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGUpdate|Win32.Build.0 = Release|Win32 + {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGUpdate|x64.ActiveCfg = Release|x64 + {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGUpdate|x64.Build.0 = Release|x64 {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Release|Win32.ActiveCfg = Release|Win32 {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Release|Win32.Build.0 = Release|Win32 {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Release|x64.ActiveCfg = Release|x64 @@ -448,14 +414,16 @@ Global {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|Win32.ActiveCfg = Debug|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|Win32.Build.0 = Release|Win32 {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Release|x64.ActiveCfg = Release|x64 + {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Release|x64.Build.0 = 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 @@ -504,49 +472,18 @@ Global {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 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|Win32.ActiveCfg = Debug|Win32 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|Win32.Build.0 = Debug|Win32 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|x64.ActiveCfg = Debug|x64 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|x64.Build.0 = Debug|x64 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|Win32.ActiveCfg = Release|Win32 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|Win32.Build.0 = Release|Win32 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|x64.ActiveCfg = Release|x64 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.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 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Debug|Win32.ActiveCfg = PGInstrument|Win32 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Debug|x64.ActiveCfg = PGUpdate|x64 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Debug|x64.Build.0 = PGUpdate|x64 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Debug|Win32.ActiveCfg = Debug|Win32 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Debug|Win32.Build.0 = Debug|Win32 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Debug|x64.ActiveCfg = Debug|x64 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Debug|x64.Build.0 = Debug|x64 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGInstrument|Win32.ActiveCfg = Debug|Win32 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGInstrument|Win32.Build.0 = Debug|Win32 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGInstrument|x64.ActiveCfg = Debug|x64 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGInstrument|x64.Build.0 = Debug|x64 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGUpdate|Win32.ActiveCfg = Debug|Win32 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGUpdate|Win32.Build.0 = Debug|Win32 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGUpdate|x64.ActiveCfg = Debug|x64 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGUpdate|x64.Build.0 = Debug|x64 {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Release|Win32.ActiveCfg = Release|Win32 {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Release|Win32.Build.0 = Release|Win32 {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Release|x64.ActiveCfg = Release|x64 @@ -569,14 +506,14 @@ Global {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Debug|Win32.Build.0 = Debug|Win32 {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Debug|x64.ActiveCfg = Debug|x64 {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Debug|x64.Build.0 = Debug|x64 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGInstrument|Win32.Build.0 = Release|Win32 + {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGInstrument|x64.ActiveCfg = Release|x64 + {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGInstrument|x64.Build.0 = Release|x64 + {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGUpdate|Win32.Build.0 = Release|Win32 + {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGUpdate|x64.ActiveCfg = Release|x64 + {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGUpdate|x64.Build.0 = Release|x64 {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Release|Win32.ActiveCfg = Release|Win32 {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Release|Win32.Build.0 = Release|Win32 {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Release|x64.ActiveCfg = Release|x64 @@ -585,34 +522,34 @@ Global {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Debug|Win32.Build.0 = Debug|Win32 {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Debug|x64.ActiveCfg = Debug|x64 {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Debug|x64.Build.0 = Debug|x64 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGInstrument|x64.ActiveCfg = PGInstrument|Win32 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGInstrument|x64.Build.0 = PGInstrument|Win32 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGUpdate|x64.ActiveCfg = PGUpdate|Win32 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGUpdate|x64.Build.0 = PGUpdate|Win32 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGInstrument|Win32.Build.0 = Release|Win32 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGInstrument|x64.ActiveCfg = Release|x64 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGInstrument|x64.Build.0 = Release|x64 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGUpdate|Win32.Build.0 = Release|Win32 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGUpdate|x64.ActiveCfg = Release|x64 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGUpdate|x64.Build.0 = Release|x64 {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Release|Win32.ActiveCfg = Release|Win32 {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Release|Win32.Build.0 = Release|Win32 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Release|x64.ActiveCfg = Release|Win32 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Release|x64.Build.0 = Release|Win32 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Release|x64.ActiveCfg = Release|x64 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Release|x64.Build.0 = Release|x64 {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Debug|Win32.ActiveCfg = Debug|Win32 {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Debug|Win32.Build.0 = Debug|Win32 {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Debug|x64.ActiveCfg = Debug|x64 {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Debug|x64.Build.0 = Debug|x64 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGInstrument|x64.ActiveCfg = PGInstrument|Win32 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGInstrument|x64.Build.0 = PGInstrument|Win32 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGUpdate|x64.ActiveCfg = PGUpdate|Win32 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGUpdate|x64.Build.0 = PGUpdate|Win32 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGInstrument|Win32.Build.0 = Release|Win32 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGInstrument|x64.ActiveCfg = Release|x64 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGInstrument|x64.Build.0 = Release|x64 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGUpdate|Win32.Build.0 = Release|Win32 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGUpdate|x64.ActiveCfg = Release|x64 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGUpdate|x64.Build.0 = Release|x64 {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Release|Win32.ActiveCfg = Release|Win32 {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Release|Win32.Build.0 = Release|Win32 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Release|x64.ActiveCfg = Release|Win32 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Release|x64.Build.0 = Release|Win32 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Release|x64.ActiveCfg = Release|x64 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Release|x64.Build.0 = Release|x64 {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Debug|Win32.ActiveCfg = Debug|Win32 {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Debug|x64.ActiveCfg = Debug|x64 {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGInstrument|Win32.ActiveCfg = Release|Win32 @@ -620,7 +557,9 @@ Global {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGUpdate|Win32.ActiveCfg = Release|Win32 {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGUpdate|x64.ActiveCfg = Release|Win32 {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Release|Win32.ActiveCfg = Release|Win32 + {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Release|Win32.Build.0 = Release|Win32 {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Release|x64.ActiveCfg = Release|x64 + {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Release|x64.Build.0 = Release|x64 {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.Debug|Win32.ActiveCfg = Debug|Win32 {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.Debug|Win32.Build.0 = Debug|Win32 {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.Debug|x64.ActiveCfg = Debug|x64 @@ -657,48 +596,80 @@ Global {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Debug|x64.Build.0 = Debug|x64 {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGInstrument|Win32.ActiveCfg = Release|Win32 {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGInstrument|Win32.Build.0 = Release|Win32 - {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGInstrument|x64.ActiveCfg = Release|x64 + {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGInstrument|x64.Build.0 = Release|x64 {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGUpdate|Win32.ActiveCfg = Release|Win32 {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGUpdate|Win32.Build.0 = Release|Win32 - {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGUpdate|x64.ActiveCfg = Release|x64 + {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGUpdate|x64.Build.0 = Release|x64 {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Release|Win32.ActiveCfg = Release|Win32 {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Release|Win32.Build.0 = Release|Win32 {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Release|x64.ActiveCfg = Release|x64 {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Release|x64.Build.0 = Release|x64 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Debug|Win32.ActiveCfg = Debug|Win32 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Debug|Win32.Build.0 = Debug|Win32 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Debug|x64.ActiveCfg = Debug|x64 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Debug|x64.Build.0 = Debug|x64 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGInstrument|Win32.Build.0 = Release|Win32 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGInstrument|x64.ActiveCfg = Release|x64 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGInstrument|x64.Build.0 = Release|x64 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGUpdate|Win32.Build.0 = Release|Win32 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGUpdate|x64.ActiveCfg = Release|x64 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGUpdate|x64.Build.0 = Release|x64 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Release|Win32.ActiveCfg = Release|Win32 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Release|Win32.Build.0 = Release|Win32 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Release|x64.ActiveCfg = Release|x64 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Release|x64.Build.0 = Release|x64 {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Debug|Win32.ActiveCfg = Debug|Win32 {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Debug|Win32.Build.0 = Debug|Win32 {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Debug|x64.ActiveCfg = Debug|x64 {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Debug|x64.Build.0 = Debug|x64 {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGInstrument|Win32.ActiveCfg = Release|Win32 {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGInstrument|Win32.Build.0 = Release|Win32 - {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGInstrument|x64.ActiveCfg = Release|x64 + {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGInstrument|x64.Build.0 = Release|x64 {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGUpdate|Win32.ActiveCfg = Release|Win32 {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGUpdate|Win32.Build.0 = Release|Win32 - {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGUpdate|x64.ActiveCfg = Release|x64 + {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGUpdate|x64.Build.0 = Release|x64 {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Release|Win32.ActiveCfg = Release|Win32 {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Release|Win32.Build.0 = Release|Win32 {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Release|x64.ActiveCfg = Release|x64 {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Release|x64.Build.0 = Release|x64 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Debug|Win32.ActiveCfg = Debug|Win32 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Debug|Win32.Build.0 = Debug|Win32 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Debug|x64.ActiveCfg = Debug|x64 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Debug|x64.Build.0 = Debug|x64 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Release|Win32.ActiveCfg = Release|Win32 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Release|Win32.Build.0 = Release|Win32 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Release|x64.ActiveCfg = Release|x64 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Release|x64.Build.0 = Release|x64 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|Win32.ActiveCfg = Debug|Win32 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|Win32.Build.0 = Debug|Win32 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|x64.ActiveCfg = Debug|x64 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|x64.Build.0 = Debug|x64 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|Win32.Build.0 = Release|Win32 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|x64.ActiveCfg = Release|x64 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|x64.Build.0 = Release|x64 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|Win32.Build.0 = Release|Win32 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|x64.ActiveCfg = Release|x64 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|x64.Build.0 = Release|x64 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|Win32.ActiveCfg = Release|Win32 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|Win32.Build.0 = Release|Win32 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|x64.ActiveCfg = Release|x64 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|x64.Build.0 = Release|x64 + {10615B24-73BF-4EFA-93AA-236916321317}.Debug|Win32.ActiveCfg = Debug|Win32 + {10615B24-73BF-4EFA-93AA-236916321317}.Debug|Win32.Build.0 = Debug|Win32 + {10615B24-73BF-4EFA-93AA-236916321317}.Debug|x64.ActiveCfg = Debug|x64 + {10615B24-73BF-4EFA-93AA-236916321317}.Debug|x64.Build.0 = Debug|x64 + {10615B24-73BF-4EFA-93AA-236916321317}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {10615B24-73BF-4EFA-93AA-236916321317}.PGInstrument|Win32.Build.0 = Release|Win32 + {10615B24-73BF-4EFA-93AA-236916321317}.PGInstrument|x64.ActiveCfg = Release|x64 + {10615B24-73BF-4EFA-93AA-236916321317}.PGInstrument|x64.Build.0 = Release|x64 + {10615B24-73BF-4EFA-93AA-236916321317}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {10615B24-73BF-4EFA-93AA-236916321317}.PGUpdate|Win32.Build.0 = Release|Win32 + {10615B24-73BF-4EFA-93AA-236916321317}.PGUpdate|x64.ActiveCfg = Release|x64 + {10615B24-73BF-4EFA-93AA-236916321317}.PGUpdate|x64.Build.0 = Release|x64 + {10615B24-73BF-4EFA-93AA-236916321317}.Release|Win32.ActiveCfg = Release|Win32 + {10615B24-73BF-4EFA-93AA-236916321317}.Release|Win32.Build.0 = Release|Win32 + {10615B24-73BF-4EFA-93AA-236916321317}.Release|x64.ActiveCfg = Release|x64 + {10615B24-73BF-4EFA-93AA-236916321317}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/PCbuild/pginstrument.props b/PCbuild/pginstrument.props deleted file mode 100644 index 22fac2e7726..00000000000 --- a/PCbuild/pginstrument.props +++ /dev/null @@ -1,38 +0,0 @@ - - - - $(SolutionDir)$(Platform)-pgi - - - <_ProjectFileVersion>10.0.30319.1 - $(OutDirPGI)\ - $(SolutionDir)$(PlatformName)-temp-pgi\$(ProjectName)\ - - - - MaxSpeed - OnlyExplicitInline - false - Size - true - false - true - true - - - false - - - true - false - PGInstrument - $(SolutionDir)$(Platform)-pgi\$(TargetName).pgd - $(OutDirPGI)\$(TargetName).lib - - - - - $(OutDirPGI) - - - diff --git a/PCbuild/pgupdate.props b/PCbuild/pgupdate.props deleted file mode 100644 index d775a02c73a..00000000000 --- a/PCbuild/pgupdate.props +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(PlatformName)-pgo\ - - - - %(AdditionalManifestDependencies) - PGUpdate - $(OutDir)$(TargetName).lib - - - \ No newline at end of file diff --git a/PCbuild/pyd.props b/PCbuild/pyd.props deleted file mode 100644 index 469966ede6b..00000000000 --- a/PCbuild/pyd.props +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - false - false - .pyd - - - - Py_BUILD_CORE_MODULE;%(PreprocessorDefinitions) - MultiThreadedDLL - - - - - - - - - \ No newline at end of file diff --git a/PCbuild/pyd_d.props b/PCbuild/pyd_d.props deleted file mode 100644 index b023288fbad..00000000000 --- a/PCbuild/pyd_d.props +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - false - false - false - .pyd - $(ProjectName)_d - - - - Disabled - Default - false - Py_BUILD_CORE_MODULE;%(PreprocessorDefinitions) - MultiThreadedDebugDLL - - - - - - - - - \ No newline at end of file diff --git a/PCbuild/pyexpat.vcxproj b/PCbuild/pyexpat.vcxproj index 974fd3d6cbc..4e7621ec926 100644 --- a/PCbuild/pyexpat.vcxproj +++ b/PCbuild/pyexpat.vcxproj @@ -35,186 +35,33 @@ + <_ProjectFileVersion>10.0.30319.1 {D06B6426-4762-44CC-8BAD-D79052507F2F} pyexpat - Win32Proj + - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - + DynamicLibrary NotSet + + .pyd + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - + - .\..\Modules\expat;%(AdditionalIncludeDirectories) + $(PySourcePath)Modules\expat;%(AdditionalIncludeDirectories) PYEXPAT_EXPORTS;HAVE_EXPAT_H;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;XML_STATIC;HAVE_MEMMOVE;%(PreprocessorDefinitions) - - - X64 - - - .\..\Modules\expat;%(AdditionalIncludeDirectories) - PYEXPAT_EXPORTS;HAVE_EXPAT_H;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;XML_STATIC;HAVE_MEMMOVE;%(PreprocessorDefinitions) - - - - - .\..\Modules\expat;%(AdditionalIncludeDirectories) - PYEXPAT_EXPORTS;HAVE_EXPAT_H;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;XML_STATIC;HAVE_MEMMOVE;%(PreprocessorDefinitions) - - - - - X64 - - - .\..\Modules\expat;%(AdditionalIncludeDirectories) - PYEXPAT_EXPORTS;HAVE_EXPAT_H;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;XML_STATIC;HAVE_MEMMOVE;%(PreprocessorDefinitions) - - - - - .\..\Modules\expat;%(AdditionalIncludeDirectories) - PYEXPAT_EXPORTS;HAVE_EXPAT_H;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;XML_STATIC;HAVE_MEMMOVE;%(PreprocessorDefinitions) - - - - - X64 - - - .\..\Modules\expat;%(AdditionalIncludeDirectories) - PYEXPAT_EXPORTS;HAVE_EXPAT_H;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;XML_STATIC;HAVE_MEMMOVE;%(PreprocessorDefinitions) - - - MachineX64 - - - - - .\..\Modules\expat;%(AdditionalIncludeDirectories) - PYEXPAT_EXPORTS;HAVE_EXPAT_H;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;XML_STATIC;HAVE_MEMMOVE;%(PreprocessorDefinitions) - - - - - X64 - - - .\..\Modules\expat;%(AdditionalIncludeDirectories) - PYEXPAT_EXPORTS;HAVE_EXPAT_H;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;XML_STATIC;HAVE_MEMMOVE;%(PreprocessorDefinitions) - - - MachineX64 - - diff --git a/PCbuild/pylauncher.vcxproj b/PCbuild/pylauncher.vcxproj index 9fa93dd141e..c27d6f5fc7e 100644 --- a/PCbuild/pylauncher.vcxproj +++ b/PCbuild/pylauncher.vcxproj @@ -37,256 +37,32 @@ {7B2727B5-5A3F-40EE-A866-43A13CD31446} pylauncher + py + ClCompile + false + - + Application - true - MultiByte - - - Application - true - MultiByte - - - Application - false - true - MultiByte - - - Application - false - true - MultiByte - - - Application - false - true - MultiByte - - - Application - false - true - MultiByte - - - Application - false - true - MultiByte - - - Application - false - true MultiByte - + + ClCompile + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - py_d - - - py_d - - - py - - - py - - - py - - - py - - - py - - - py - - + - Level3 - Disabled _CONSOLE;%(PreprocessorDefinitions) - true - version.lib;%(AdditionalDependencies) - false - Console - $(OutDir)$(TargetName)$(TargetExt) - - - - - Level3 - Disabled - _CONSOLE;%(PreprocessorDefinitions) - - - true - version.lib;%(AdditionalDependencies) - false - Console - $(OutDir)$(TargetName)$(TargetExt) - - - - - Level3 - MaxSpeed - true - true - _CONSOLE;NDEBUG;%(PreprocessorDefinitions) - - - true - false - true - false - version.lib;%(AdditionalDependencies) - Console - - - - - Level3 - MaxSpeed - true - true - _CONSOLE;NDEBUG;%(PreprocessorDefinitions) - - - true - false - true - false - version.lib;%(AdditionalDependencies) - Console - - - - - Level3 - MaxSpeed - true - true - _CONSOLE;NDEBUG;%(PreprocessorDefinitions) - - - true - false - true - false - version.lib;%(AdditionalDependencies) - Console - - - - - Level3 - MaxSpeed - true - true - _CONSOLE;NDEBUG;%(PreprocessorDefinitions) - - - true - false - true - false - version.lib;%(AdditionalDependencies) - Console - - - - - Level3 - MaxSpeed - true - true - _CONSOLE;NDEBUG;%(PreprocessorDefinitions) - - - true - false - true - false - version.lib;%(AdditionalDependencies) - Console - - - - - Level3 - MaxSpeed - true - true - _CONSOLE;NDEBUG;%(PreprocessorDefinitions) - - - true - false - true - false version.lib;%(AdditionalDependencies) Console @@ -300,11 +76,6 @@ - - - {f0e0541e-f17d-430b-97c4-93adf0dd284e} - - diff --git a/PCbuild/pyproject.props b/PCbuild/pyproject.props index 93d69d03a24..32038678f1f 100644 --- a/PCbuild/pyproject.props +++ b/PCbuild/pyproject.props @@ -1,47 +1,46 @@  - + <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir) - $(SolutionDir)$(PlatformName)-temp-$(Configuration)\$(ProjectName)\ - false + 10.0 + $(BuildPath) + $(SolutionDir)obj\$(ArchName)_$(Configuration)\$(ProjectName)\ + $(SolutionDir)obj\$(ArchName)\$(ProjectName)\ + $(ProjectName) + $(TargetName)$(PyDebugExt) + false + false + true - - <_ProjectFileVersion>10.0.30319.1 - <_PropertySheetDisplayName>amd64 - $(SolutionDir)amd64\ - $(SolutionDir)$(PlatformName)-temp-$(Configuration)\$(ProjectName)\ - - - python35$(PyDebugExt) - $(OutDir)python$(PyDebugExt).exe - $(OutDir)kill_python$(PyDebugExt).exe - ..\externals - $(externalsDir)\sqlite-3.8.3.1 - $(externalsDir)\bzip2-1.0.6 - $(externalsDir)\xz-5.0.5 - $(externalsDir)\nasm-2.11.06 - $(externalsDir)\openssl-1.0.1j - $(externalsDir)\tcl-8.6.1.0 - $(externalsDir)\tk-8.6.1.0 - $(externalsDir)\tix-8.4.3.4 - $(externalsDir)\tcltk + + + <_DebugPreprocessorDefinition>NDEBUG; + <_DebugPreprocessorDefinition Condition="$(Configuration) == 'Debug'">_DEBUG; + <_PlatformPreprocessorDefinition>_WIN32; + <_PlatformPreprocessorDefinition Condition="$(Platform) == 'x64'">_WIN64;_M_X64; + <_PydPreprocessorDefinition Condition="$(TargetExt) == '.pyd'">Py_BUILD_CORE_MODULE; + $(PySourcePath)Include;$(PySourcePath)PC;%(AdditionalIncludeDirectories) + WIN32;$(_PlatformPreprocessorDefinition)$(_DebugPreprocessorDefinition)$(_PydPreprocessorDefinition)%(PreprocessorDefinitions) + MaxSpeed - OnlyExplicitInline true - ..\Include; ..\PC;%(AdditionalIncludeDirectories) - _WIN32;%(PreprocessorDefinitions) true - - - MultiThreaded + + MultiThreadedDLL true Level3 ProgramDatabase Default + true + true + + + Disabled + false + MultiThreadedDebugDLL $(OutDir);%(AdditionalLibraryDirectories) @@ -50,51 +49,92 @@ Windows true true + true + LIBC;%(IgnoreSpecificDefaultLibraries) MachineX86 + MachineX64 + $(OutDir)$(TargetName).pgd + UseLinkTimeCodeGeneration + PGInstrument + PGUpdate + + true + true + true + - ..\PC;..\Include;%(AdditionalIncludeDirectories) + $(PySourcePath)PC;$(PySourcePath)Include;%(AdditionalIncludeDirectories) + $(_DebugPreprocessorDefinition)%(PreprocessorDefinitions) + 0x0409 + + $(_DebugPreprocessorDefinition)%(PreprocessorDefinitions) + true + true + Win32 + X64 + $(OutDir)wininst.tlb + + + - - - $(PyDllName) - - - $(PythonExe) - - - $(KillPythonExe) - - - $(externalsDir) - - - $(sqlite3Dir) - - - $(bz2Dir) - - - $(lzmaDir) - - - $(nasmDir) - - - $(opensslDir) - - - $(tclDir) - - - $(tkDir) - - - $(tixDir) - - - $(tcltkDir) - - + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/PCbuild/python.props b/PCbuild/python.props new file mode 100644 index 00000000000..3dbc8065dac --- /dev/null +++ b/PCbuild/python.props @@ -0,0 +1,108 @@ + + + + Win32 + Release + + v140 + v120 + v110 + v100 + + + amd64 + win32 + $(ArchName)-pgo + + + $([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)\..\)) + $(PySourcePath)\ + + + $(PySourcePath)PCBuild\$(ArchName)\ + $(BuildPath)\ + + + $([System.IO.Path]::GetFullPath(`$(PySourcePath)externals\`)) + $(ExternalsDir)sqlite-3.8.3.1\ + $(ExternalsDir)bzip2-1.0.6\ + $(ExternalsDir)xz-5.0.5\ + $(ExternalsDir)openssl-1.0.1j\ + $(ExternalsDir)\nasm-2.11.06\ + + + _d + + + $(BuildPath)python$(PyDebugExt).exe + + + <_PatchLevelContent>$([System.IO.File]::ReadAllText(`$(PySourcePath)Include\patchlevel.h`)) + $([System.Text.RegularExpressions.Regex]::Match($(_PatchLevelContent), `define\s+PY_MAJOR_VERSION\s+(\d+)`).Groups[1].Value) + $([System.Text.RegularExpressions.Regex]::Match($(_PatchLevelContent), `define\s+PY_MINOR_VERSION\s+(\d+)`).Groups[1].Value) + $([System.Text.RegularExpressions.Regex]::Match($(_PatchLevelContent), `define\s+PY_MICRO_VERSION\s+(\d+)`).Groups[1].Value) + <_ReleaseLevel>$([System.Text.RegularExpressions.Regex]::Match($(_PatchLevelContent), `define\s+PY_RELEASE_LEVEL\s+PY_RELEASE_LEVEL_(\w+)`).Groups[1].Value) + $([System.Text.RegularExpressions.Regex]::Match($(_PatchLevelContent), `define\s+PY_RELEASE_SERIAL\s+(\d+)`).Groups[1].Value) + 15 + 10 + 11 + 12 + a$(ReleaseSerial) + b$(ReleaseSerial) + rc$(ReleaseSerial) + + $(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber) + $(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber)$(ReleaseLevelName) + $([msbuild]::BitwiseOr( + $([msbuild]::Multiply($(MajorVersionNumber), 16777216)), + $([msbuild]::BitwiseOr( + $([msbuild]::Multiply($(MinorVersionNumber), 65536)), + $([msbuild]::BitwiseOr( + $([msbuild]::Multiply($(MicroVersionNumber), 256)), + $([msbuild]::BitwiseOr( + $([msbuild]::Multiply($(ReleaseLevelNumber), 16)), + $(ReleaseSerial) + )) + )) + )) + )) + $([msbuild]::Add( + $(ReleaseSerial), + $([msbuild]::Add( + $([msbuild]::Multiply($(ReleaseLevelNumber), 10)), + $([msbuild]::Multiply($(MicroVersionNumber), 1000)) + )) + )) + + + python$(MajorVersionNumber)$(MinorVersionNumber)$(PyDebugExt) + + + + + + + + + + diff --git a/PCbuild/python.vcxproj b/PCbuild/python.vcxproj index 6cb4ef5370c..0ae4882ad16 100644 --- a/PCbuild/python.vcxproj +++ b/PCbuild/python.vcxproj @@ -36,44 +36,11 @@ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} + ClCompile + - - Application - false - MultiByte - - - Application - false - MultiByte - - - Application - false - NotSet - - - Application - false - MultiByte - - - Application - false - MultiByte - - - Application - false - MultiByte - - - Application - false - MultiByte - - + Application false MultiByte @@ -81,427 +48,23 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - Link - Link - Link - Link - Link - Link - Link - Link - + - %(AdditionalIncludeDirectories) _CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - $(OutDir)python.exe Console 2000000 0x1d000000 - - echo @rem This script invokes the most recently built Python with all arguments> "$(SolutionDir)..\python.bat" -echo @rem passed through to the interpreter. This file is generated by the>> "$(SolutionDir)..\python.bat" -echo @rem build process and any changes *will* be thrown away by the next>> "$(SolutionDir)..\python.bat" -echo @rem rebuild.>> "$(SolutionDir)..\python.bat" -echo @rem This is only meant as a convenience for developing CPython>> "$(SolutionDir)..\python.bat" -echo @rem and using it outside of that context is ill-advised.>> "$(SolutionDir)..\python.bat" -echo @echo Running $(Configuration)^^^|$(Platform) interpreter...>> "$(SolutionDir)..\python.bat" -echo @"$(OutDir)python$(PyDebugExt).exe" %%*>> "$(SolutionDir)..\python.bat" - - - Creating convenience batch file for easily invoking the newly built interpreter. - - - $(SolutionDir)..\python.bat - - - $(OutDir)python$(PyDebugExt).exe;%(Inputs) - - - - - X64 - - - %(AdditionalIncludeDirectories) - _CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Default - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)python.exe - Console - 2000000 - 0x1d000000 - - - echo @rem This script invokes the most recently built Python with all arguments> "$(SolutionDir)..\python.bat" -echo @rem passed through to the interpreter. This file is generated by the>> "$(SolutionDir)..\python.bat" -echo @rem build process and any changes *will* be thrown away by the next>> "$(SolutionDir)..\python.bat" -echo @rem rebuild.>> "$(SolutionDir)..\python.bat" -echo @rem This is only meant as a convenience for developing CPython>> "$(SolutionDir)..\python.bat" -echo @rem and using it outside of that context is ill-advised.>> "$(SolutionDir)..\python.bat" -echo @echo Running $(Configuration)^^^|$(Platform) interpreter...>> "$(SolutionDir)..\python.bat" -echo @"$(OutDir)python$(PyDebugExt).exe" %%*>> "$(SolutionDir)..\python.bat" - - - Creating convenience batch file for easily invoking the newly built interpreter. - - - $(SolutionDir)..\python.bat - - - $(OutDir)python$(PyDebugExt).exe;%(Inputs) - - - - - Disabled - false - %(AdditionalIncludeDirectories) - _CONSOLE;%(PreprocessorDefinitions) - MultiThreadedDebugDLL - true - Default - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\Include;%(AdditionalIncludeDirectories) - - - $(OutDir)python_d.exe - Console - 2000000 - 0x1d000000 - - - echo @rem This script invokes the most recently built Python with all arguments> "$(SolutionDir)..\python.bat" -echo @rem passed through to the interpreter. This file is generated by the>> "$(SolutionDir)..\python.bat" -echo @rem build process and any changes *will* be thrown away by the next>> "$(SolutionDir)..\python.bat" -echo @rem rebuild.>> "$(SolutionDir)..\python.bat" -echo @rem This is only meant as a convenience for developing CPython>> "$(SolutionDir)..\python.bat" -echo @rem and using it outside of that context is ill-advised.>> "$(SolutionDir)..\python.bat" -echo @echo Running $(Configuration)^^^|$(Platform) interpreter...>> "$(SolutionDir)..\python.bat" -echo @"$(OutDir)python$(PyDebugExt).exe" %%*>> "$(SolutionDir)..\python.bat" - - - Creating convenience batch file for easily invoking the newly built interpreter. - - - $(SolutionDir)..\python.bat - - - $(OutDir)python$(PyDebugExt).exe;%(Inputs) - - - - - X64 - - - Disabled - false - %(AdditionalIncludeDirectories) - _CONSOLE;%(PreprocessorDefinitions) - MultiThreadedDebugDLL - true - Default - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\Include;%(AdditionalIncludeDirectories) - - - $(OutDir)python_d.exe - Console - 4194304 - 0x1d000000 - - - echo @rem This script invokes the most recently built Python with all arguments> "$(SolutionDir)..\python.bat" -echo @rem passed through to the interpreter. This file is generated by the>> "$(SolutionDir)..\python.bat" -echo @rem build process and any changes *will* be thrown away by the next>> "$(SolutionDir)..\python.bat" -echo @rem rebuild.>> "$(SolutionDir)..\python.bat" -echo @rem This is only meant as a convenience for developing CPython>> "$(SolutionDir)..\python.bat" -echo @rem and using it outside of that context is ill-advised.>> "$(SolutionDir)..\python.bat" -echo @echo Running $(Configuration)^^^|$(Platform) interpreter...>> "$(SolutionDir)..\python.bat" -echo @"$(OutDir)python$(PyDebugExt).exe" %%*>> "$(SolutionDir)..\python.bat" - - - Creating convenience batch file for easily invoking the newly built interpreter. - - - $(SolutionDir)..\python.bat - - - $(OutDir)python$(PyDebugExt).exe;%(Inputs) - - - - - %(AdditionalIncludeDirectories) - _CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Default - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)python.exe - Console - 2000000 - 0x1d000000 - - - - - echo @rem This script invokes the most recently built Python with all arguments> "$(SolutionDir)..\python.bat" -echo @rem passed through to the interpreter. This file is generated by the>> "$(SolutionDir)..\python.bat" -echo @rem build process and any changes *will* be thrown away by the next>> "$(SolutionDir)..\python.bat" -echo @rem rebuild.>> "$(SolutionDir)..\python.bat" -echo @rem This is only meant as a convenience for developing CPython>> "$(SolutionDir)..\python.bat" -echo @rem and using it outside of that context is ill-advised.>> "$(SolutionDir)..\python.bat" -echo @echo Running $(Configuration)^^^|$(Platform) interpreter...>> "$(SolutionDir)..\python.bat" -echo @"$(OutDir)python$(PyDebugExt).exe" %%*>> "$(SolutionDir)..\python.bat" - - - Creating convenience batch file for easily invoking the newly built interpreter. - - - $(SolutionDir)..\python.bat - - - $(OutDir)python$(PyDebugExt).exe;%(Inputs) - - - - - X64 - - - %(AdditionalIncludeDirectories) - _CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Default - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)python.exe - Console - 2000000 - 0x1d000000 - - - MachineX64 - - - echo @rem This script invokes the most recently built Python with all arguments> "$(SolutionDir)..\python.bat" -echo @rem passed through to the interpreter. This file is generated by the>> "$(SolutionDir)..\python.bat" -echo @rem build process and any changes *will* be thrown away by the next>> "$(SolutionDir)..\python.bat" -echo @rem rebuild.>> "$(SolutionDir)..\python.bat" -echo @rem This is only meant as a convenience for developing CPython>> "$(SolutionDir)..\python.bat" -echo @rem and using it outside of that context is ill-advised.>> "$(SolutionDir)..\python.bat" -echo @echo Running $(Configuration)^^^|$(Platform) interpreter...>> "$(SolutionDir)..\python.bat" -echo @"$(OutDir)python$(PyDebugExt).exe" %%*>> "$(SolutionDir)..\python.bat" - - - Creating convenience batch file for easily invoking the newly built interpreter. - - - $(SolutionDir)..\python.bat - - - $(OutDir)python$(PyDebugExt).exe;%(Inputs) - - - - - %(AdditionalIncludeDirectories) - _CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Default - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)python.exe - Console - 2000000 - 0x1d000000 - - - - - echo @rem This script invokes the most recently built Python with all arguments> "$(SolutionDir)..\python.bat" -echo @rem passed through to the interpreter. This file is generated by the>> "$(SolutionDir)..\python.bat" -echo @rem build process and any changes *will* be thrown away by the next>> "$(SolutionDir)..\python.bat" -echo @rem rebuild.>> "$(SolutionDir)..\python.bat" -echo @rem This is only meant as a convenience for developing CPython>> "$(SolutionDir)..\python.bat" -echo @rem and using it outside of that context is ill-advised.>> "$(SolutionDir)..\python.bat" -echo @echo Running $(Configuration)^^^|$(Platform) interpreter...>> "$(SolutionDir)..\python.bat" -echo @"$(OutDir)python$(PyDebugExt).exe" %%*>> "$(SolutionDir)..\python.bat" - - - Creating convenience batch file for easily invoking the newly built interpreter. - - - $(SolutionDir)..\python.bat - - - $(OutDir)python$(PyDebugExt).exe;%(Inputs) - - - - - X64 - - - %(AdditionalIncludeDirectories) - _CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Default - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)python.exe - Console - 2000000 - 0x1d000000 - - - MachineX64 - - - echo @rem This script invokes the most recently built Python with all arguments> "$(SolutionDir)..\python.bat" -echo @rem passed through to the interpreter. This file is generated by the>> "$(SolutionDir)..\python.bat" -echo @rem build process and any changes *will* be thrown away by the next>> "$(SolutionDir)..\python.bat" -echo @rem rebuild.>> "$(SolutionDir)..\python.bat" -echo @rem This is only meant as a convenience for developing CPython>> "$(SolutionDir)..\python.bat" -echo @rem and using it outside of that context is ill-advised.>> "$(SolutionDir)..\python.bat" -echo @echo Running $(Configuration)^^^|$(Platform) interpreter...>> "$(SolutionDir)..\python.bat" -echo @"$(OutDir)python$(PyDebugExt).exe" %%*>> "$(SolutionDir)..\python.bat" - - - Creating convenience batch file for easily invoking the newly built interpreter. - - - $(SolutionDir)..\python.bat - - - $(OutDir)python$(PyDebugExt).exe;%(Inputs) - @@ -521,4 +84,19 @@ echo @"$(OutDir)python$(PyDebugExt).exe" %%*>> "$(SolutionDir)..\python.ba + + + <_Content>@rem This script invokes the most recently built Python with all arguments +@rem passed through to the interpreter. This file is generated by the +@rem build process and any changes *will* be thrown away by the next +@rem rebuild. +@rem This is only meant as a convenience for developing CPython +@rem and using it outside of that context is ill-advised. +@echo Running $(Configuration)^|$(Platform) interpreter... +@"$(OutDir)python$(PyDebugExt).exe" %* + + <_ExistingContent Condition="Exists('$(PySourcePath)python.bat')">$([System.IO.File]::ReadAllText('$(PySourcePath)python.bat')) + + + \ No newline at end of file diff --git a/PCbuild/python3dll.vcxproj b/PCbuild/python3dll.vcxproj index bc8ff31ca22..4c5cd1e680b 100644 --- a/PCbuild/python3dll.vcxproj +++ b/PCbuild/python3dll.vcxproj @@ -1,6 +1,14 @@  + + Debug + Win32 + + + Debug + x64 + PGInstrument Win32 @@ -30,144 +38,42 @@ {885D4898-D08D-4091-9C40-C700CFE3FC5A} python3dll Win32Proj + python3 + ClCompile + false + - - Makefile - - - Makefile - - - Makefile - true - - - Makefile - - - Makefile - - - Makefile + + DynamicLibrary - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - cd $(ProjectDir)\..\PC -nmake /f python3.mak MACHINE=x86 OutDir=$(OutDir) - cd $(ProjectDir)\..\PC -nmake /f python3.mak MACHINE=x86 OutDir=$(OutDir) rebuild - cd $(ProjectDir)\..\PC -"$(VSInstallDir)\VC\bin\nmake.exe" /f python3.mak MACHINE=x86 OutDir=$(OutDir) clean - $(OutDir)python3.dll - $(NMakePreprocessorDefinitions) - $(NMakeIncludeSearchPath) - $(NMakeForcedIncludes) - $(NMakeAssemblySearchPath) - $(NMakeForcedUsingAssemblies) - cd $(ProjectDir)\..\PC -nmake /f python3.mak MACHINE=x64 OutDir=$(OutDir) - cd $(ProjectDir)\..\PC -nmake /f python3.mak MACHINE=x64 OutDir=$(OutDir) rebuild - cd $(ProjectDir)\..\PC -"$(VSInstallDir)\VC\bin\nmake.exe" /f python3.mak MACHINE=x64 OutDir=$(OutDir) clean - $(OutDir)python3.dll - $(NMakePreprocessorDefinitions) - $(NMakeIncludeSearchPath) - $(NMakeForcedIncludes) - $(NMakeAssemblySearchPath) - $(NMakeForcedUsingAssemblies) - cd $(ProjectDir)\..\PC -nmake /f python3.mak MACHINE=x86 OutDir=$(OutDir) - cd $(ProjectDir)\..\PC -nmake /f python3.mak MACHINE=x86 OutDir=$(OutDir) rebuild - cd $(ProjectDir)\..\PC -"$(VSInstallDir)\VC\bin\nmake.exe" /f python3.mak MACHINE=x86 OutDir=$(OutDir) clean - $(OutDir)python3.dll - $(NMakePreprocessorDefinitions) - $(NMakeIncludeSearchPath) - $(NMakeForcedIncludes) - $(NMakeAssemblySearchPath) - $(NMakeForcedUsingAssemblies) - cd $(ProjectDir)\..\PC -nmake /f python3.mak MACHINE=x64 OutDir=$(OutDir) - cd $(ProjectDir)\..\PC -nmake /f python3.mak MACHINE=x64 OutDir=$(OutDir) rebuild - cd $(ProjectDir)\..\PC -"$(VSInstallDir)\VC\bin\nmake.exe" /f python3.mak MACHINE=x64 OutDir=$(OutDir) clean - $(OutDir)python3.dll - $(NMakePreprocessorDefinitions) - $(NMakeIncludeSearchPath) - $(NMakeForcedIncludes) - $(NMakeAssemblySearchPath) - $(NMakeForcedUsingAssemblies) - cd $(ProjectDir)\..\PC -nmake /f python3.mak MACHINE=x86 OutDir=$(OutDir) - cd $(ProjectDir)\..\PC -nmake /f python3.mak MACHINE=x86 OutDir=$(OutDir) rebuild - cd $(ProjectDir)\..\PC -"$(VSInstallDir)\VC\bin\nmake.exe" /f python3.mak MACHINE=x86 OutDir=$(OutDir) clean - $(OutDir)python3.dll - $(NMakePreprocessorDefinitions) - $(NMakeIncludeSearchPath) - $(NMakeForcedIncludes) - $(NMakeAssemblySearchPath) - $(NMakeForcedUsingAssemblies) - cd $(ProjectDir)\..\PC -nmake /f python3.mak MACHINE=x64 OutDir=$(OutDir) - cd $(ProjectDir)\..\PC -nmake /f python3.mak MACHINE=x64 OutDir=$(OutDir) rebuild - cd $(ProjectDir)\..\PC -"$(VSInstallDir)\VC\bin\nmake.exe" /f python3.mak MACHINE=x64 OutDir=$(OutDir) clean - $(OutDir)python3.dll - $(NMakePreprocessorDefinitions) - $(NMakeIncludeSearchPath) - $(NMakeForcedIncludes) - $(NMakeAssemblySearchPath) - $(NMakeForcedUsingAssemblies) + <_Machine>X86 + <_Machine Condition="$(Platform) == 'x64'">X64 + + false + + + $(OutDir)$(TargetName)stub.lib + $(PySourcePath)PC\python3.def + DllMain + + + lib /nologo /def:"$(IntDir)python3stub.def" /out:"$(OutDir)$(TargetName)stub.lib" /MACHINE:$(_Machine) + Rebuilding $(TargetName)stub.lib + $(OutDir)$(TargetName)stub.lib + @@ -181,4 +87,27 @@ nmake /f python3.mak MACHINE=x64 OutDir=$(OutDir) rebuild + + + + + + <_Pattern>^[\w.]+=.+?\.([^ ]+).*$ + <_Sub>$1 + + + <_Lines Include="EXPORTS" /> + <_Symbols Include="@(DefLines)" Condition="$([System.Text.RegularExpressions.Regex]::IsMatch(`%(Identity)`, `$(_Pattern)`))"> + $([System.Text.RegularExpressions.Regex]::Replace(`%(Identity)`, `$(_Pattern)`, `$(_Sub)`)) + + <_Lines Include="@(_Symbols->'%(Symbol)')" /> + + + + + + + + + \ No newline at end of file diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj index 3cce88e9f99..4ecfd102c16 100644 --- a/PCbuild/pythoncore.vcxproj +++ b/PCbuild/pythoncore.vcxproj @@ -38,405 +38,41 @@ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} pythoncore + - - DynamicLibrary - false - - - DynamicLibrary - false - - - DynamicLibrary - false - NotSet - - - DynamicLibrary - false - - - DynamicLibrary - false - - - DynamicLibrary - false - - - DynamicLibrary - false - - + DynamicLibrary false - + + ClCompile + true + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - $(PyDllName) - $(PyDllName) - $(PyDllName) - $(PyDllName) - $(PyDllName) - $(PyDllName) - $(PyDllName) - $(PyDllName) + $(PyDllName) - + + Link + + /Zm200 %(AdditionalOptions) - ..\Python;..\Modules\zlib;%(AdditionalIncludeDirectories) - _USRDLL;Py_BUILD_CORE;Py_ENABLE_SHARED;WIN32;%(PreprocessorDefinitions) - MultiThreadedDLL + $(PySourcePath)Python;$(PySourcePath)Modules\zlib;%(AdditionalIncludeDirectories) + _USRDLL;Py_BUILD_CORE;Py_ENABLE_SHARED;%(PreprocessorDefinitions) - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\Include;%(AdditionalIncludeDirectories) - - - Generate build information... - "$(SolutionDir)make_buildinfo.exe" Release "$(IntDir)\" - - $(IntDir)getbuildinfo.o;ws2_32.lib;%(AdditionalDependencies) - $(OutDir)$(PyDllName).dll - libc;%(IgnoreSpecificDefaultLibraries) + ws2_32.lib;%(AdditionalDependencies) 0x1e000000 - - $(KillPythonExe) -IF %ERRORLEVEL% NEQ 0 ( - echo kill_python: war^ning: could not kill running Pythons, exit code %ERRORLEVEL% - exit /b 0 -) - - - Killing any running $(PythonExe) instances... - - - - - X64 - - - /Zm200 %(AdditionalOptions) - ..\Python;..\Modules\zlib;%(AdditionalIncludeDirectories) - _USRDLL;Py_BUILD_CORE;Py_ENABLE_SHARED;WIN32;%(PreprocessorDefinitions) - MultiThreadedDLL - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\Include;%(AdditionalIncludeDirectories) - - - Generate build information... - "$(SolutionDir)make_buildinfo.exe" Release "$(IntDir)\" - - - $(IntDir)getbuildinfo.o;ws2_32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) - 0x1e000000 - - - $(KillPythonExe) -IF %ERRORLEVEL% NEQ 0 ( - echo kill_python: war^ning: could not kill running Pythons, exit code %ERRORLEVEL% - exit /b 0 -) - - - Killing any running $(PythonExe) instances... - - - - - /Zm200 %(AdditionalOptions) - Disabled - Default - false - ..\Python;..\Modules\zlib;%(AdditionalIncludeDirectories) - _USRDLL;Py_BUILD_CORE;Py_ENABLE_SHARED;WIN32;%(PreprocessorDefinitions) - MultiThreadedDebugDLL - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\Include;%(AdditionalIncludeDirectories) - - - Generate build information... - "$(SolutionDir)make_buildinfo.exe" Debug "$(IntDir)" - - - $(IntDir)getbuildinfo.o;ws2_32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) - 0x1e000000 - - - $(KillPythonExe) -IF %ERRORLEVEL% NEQ 0 ( - echo kill_python: war^ning: could not kill running Pythons, exit code %ERRORLEVEL% - exit /b 0 -) - - - Killing any running $(PythonExe) instances... - - - - - X64 - - - /Zm200 %(AdditionalOptions) - Disabled - Default - false - ..\Python;..\Modules\zlib;%(AdditionalIncludeDirectories) - _USRDLL;Py_BUILD_CORE;Py_ENABLE_SHARED;WIN32;%(PreprocessorDefinitions) - MultiThreadedDebugDLL - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\Include;%(AdditionalIncludeDirectories) - - - Generate build information... - "$(SolutionDir)make_buildinfo.exe" Debug "$(IntDir)" - - - $(IntDir)getbuildinfo.o;ws2_32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) - 0x1e000000 - - - $(KillPythonExe) -IF %ERRORLEVEL% NEQ 0 ( - echo kill_python: war^ning: could not kill running Pythons, exit code %ERRORLEVEL% - exit /b 0 -) - - - Killing any running $(PythonExe) instances... - - - - - /Zm200 %(AdditionalOptions) - ..\Python;..\Modules\zlib;%(AdditionalIncludeDirectories) - _USRDLL;Py_BUILD_CORE;Py_ENABLE_SHARED;WIN32;%(PreprocessorDefinitions) - MultiThreadedDLL - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\Include;%(AdditionalIncludeDirectories) - - - Generate build information... - "$(SolutionDir)make_buildinfo.exe" Release "$(IntDir)\" - - - $(IntDir)getbuildinfo.o;ws2_32.lib;%(AdditionalDependencies) - $(OutDir)$(PyDllName).dll - libc;%(IgnoreSpecificDefaultLibraries) - 0x1e000000 - - - $(KillPythonExe) -IF %ERRORLEVEL% NEQ 0 ( - echo kill_python: war^ning: could not kill running Pythons, exit code %ERRORLEVEL% - exit /b 0 -) - - - Killing any running $(PythonExe) instances... - - - - - X64 - - - /Zm200 %(AdditionalOptions) - ..\Python;..\Modules\zlib;%(AdditionalIncludeDirectories) - _USRDLL;Py_BUILD_CORE;Py_ENABLE_SHARED;WIN32;%(PreprocessorDefinitions) - MultiThreadedDLL - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\Include;%(AdditionalIncludeDirectories) - - - Generate build information... - "$(SolutionDir)make_buildinfo.exe" Release "$(IntDir)\" - - - $(IntDir)getbuildinfo.o;ws2_32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) - 0x1e000000 - MachineX64 - - - $(KillPythonExe) -IF %ERRORLEVEL% NEQ 0 ( - echo kill_python: war^ning: could not kill running Pythons, exit code %ERRORLEVEL% - exit /b 0 -) - - - Killing any running $(PythonExe) instances... - - - - - /Zm200 %(AdditionalOptions) - ..\Python;..\Modules\zlib;%(AdditionalIncludeDirectories) - _USRDLL;Py_BUILD_CORE;Py_ENABLE_SHARED;WIN32;%(PreprocessorDefinitions) - MultiThreadedDLL - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\Include;%(AdditionalIncludeDirectories) - - - Generate build information... - "$(SolutionDir)make_buildinfo.exe" Release "$(IntDir)\" - - - $(IntDir)getbuildinfo.o;ws2_32.lib;%(AdditionalDependencies) - $(OutDir)$(PyDllName).dll - libc;%(IgnoreSpecificDefaultLibraries) - 0x1e000000 - - - $(KillPythonExe) -IF %ERRORLEVEL% NEQ 0 ( - echo kill_python: war^ning: could not kill running Pythons, exit code %ERRORLEVEL% - exit /b 0 -) - - - Killing any running $(PythonExe) instances... - - - - - X64 - - - /Zm200 %(AdditionalOptions) - ..\Python;..\Modules\zlib;%(AdditionalIncludeDirectories) - _USRDLL;Py_BUILD_CORE;Py_ENABLE_SHARED;WIN32;%(PreprocessorDefinitions) - MultiThreadedDLL - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\Include;%(AdditionalIncludeDirectories) - - - Generate build information... - "$(SolutionDir)make_buildinfo.exe" Release "$(IntDir)\" - - - $(IntDir)getbuildinfo.o;ws2_32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) - 0x1e000000 - MachineX64 - - - $(KillPythonExe) -IF %ERRORLEVEL% NEQ 0 ( - echo kill_python: war^ning: could not kill running Pythons, exit code %ERRORLEVEL% - exit /b 0 -) - - - Killing any running $(PythonExe) instances... - @@ -753,21 +389,29 @@ IF %ERRORLEVEL% NEQ 0 ( - - - {6de10744-e396-40a5-b4e2-1b69aa7c8d31} - false - - - {c73f0ec1-358b-4177-940f-0846ac8b04cd} - false - - - {f0e0541e-f17d-430b-97c4-93adf0dd284e} - false - - - + + + + + + + + $([System.IO.File]::ReadAllText('$(IntDir)hgbranch.txt').Trim()) + $([System.IO.File]::ReadAllText('$(IntDir)hgversion.txt').Trim()) + $([System.IO.File]::ReadAllText('$(IntDir)hgtag.txt').Trim()) + + + + + HGVERSION="$(HgVersion)";HGTAG="$(HgTag)";HGBRANCH="$(HgBranch)";%(PreprocessorDefinitions) + + + + + + + + \ No newline at end of file diff --git a/PCbuild/pythonw.vcxproj b/PCbuild/pythonw.vcxproj index 1214569eb98..b0a209af42f 100644 --- a/PCbuild/pythonw.vcxproj +++ b/PCbuild/pythonw.vcxproj @@ -36,296 +36,30 @@ {F4229CC3-873C-49AE-9729-DD308ED4CD4A} + ClCompile + false + - - Application - false - - - Application - false - - - Application - false - - - Application - false - NotSet - - - Application - false - - - Application - false - - - Application - false - - + Application false - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - Disabled - false - %(AdditionalIncludeDirectories) - _WINDOWS;%(PreprocessorDefinitions) - MultiThreadedDebugDLL - Default - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - + - $(OutDir)pythonw_d.exe 2000000 0x1d000000 - MachineX86 - - - - - X64 - - - Disabled - false - %(AdditionalIncludeDirectories) - _WINDOWS;%(PreprocessorDefinitions) - MultiThreadedDebugDLL - Default - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)pythonw_d.exe - 2000000 - 0x1d000000 - - - - - %(AdditionalIncludeDirectories) - _WINDOWS;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Default - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)pythonw.exe - 2000000 - 0x1d000000 - MachineX86 - - - - - X64 - - - %(AdditionalIncludeDirectories) - _WINDOWS;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Default - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)pythonw.exe - 2000000 - 0x1d000000 - - - - - %(AdditionalIncludeDirectories) - _WINDOWS;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Default - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)pythonw.exe - 2000000 - 0x1d000000 - - - MachineX86 - - - - - X64 - - - %(AdditionalIncludeDirectories) - _WINDOWS;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Default - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)pythonw.exe - 2000000 - 0x1d000000 - - - MachineX64 - - - - - %(AdditionalIncludeDirectories) - _WINDOWS;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Default - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)pythonw.exe - 2000000 - 0x1d000000 - - - MachineX86 - - - - - X64 - - - %(AdditionalIncludeDirectories) - _WINDOWS;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Default - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)pythonw.exe - 2000000 - 0x1d000000 - - - MachineX64 diff --git a/PCbuild/pywlauncher.vcxproj b/PCbuild/pywlauncher.vcxproj index 96ea4215366..aeee1b15bee 100644 --- a/PCbuild/pywlauncher.vcxproj +++ b/PCbuild/pywlauncher.vcxproj @@ -37,200 +37,36 @@ {1D4B18D3-7C12-4ECB-9179-8531FF876CE6} pywlauncher + pyw + ClCompile + false + - + Application - true - Unicode - - - Application - true - Unicode - - - Application - false - true - Unicode - - - Application - false - true - Unicode - - - Unicode - - Unicode - + + ClCompile + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pyw_d - - - pyw_d - - - pyw - - - pyw - - - pyw - - - pyw - - + - Level3 - Disabled _WINDOWS;%(PreprocessorDefinitions) - true - version.lib;%(AdditionalDependencies) - false - Windows - $(OutDir)$(TargetName)$(TargetExt) - - - - - Level3 - Disabled - _WINDOWS;%(PreprocessorDefinitions) - - - true - version.lib;%(AdditionalDependencies) - false - Windows - $(OutDir)$(TargetName)$(TargetExt) - - - - - Level3 - MaxSpeed - true - true - _WINDOWS;NDEBUG;%(PreprocessorDefinitions) - - - true - false - true - false version.lib;%(AdditionalDependencies) Windows - - - Level3 - MaxSpeed - true - true - _WINDOWS;NDEBUG;%(PreprocessorDefinitions) - - - true - false - true - false - version.lib;%(AdditionalDependencies) - Windows - - - - - version.lib;%(AdditionalDependencies) - - - _WINDOWS;NDEBUG;%(PreprocessorDefinitions) - - - - - version.lib;%(AdditionalDependencies) - - - _WINDOWS;NDEBUG;%(PreprocessorDefinitions) - - - - - version.lib;%(AdditionalDependencies) - - - _WINDOWS;NDEBUG;_WIN64;_M_X64;%(PreprocessorDefinitions) - - - - - version.lib;%(AdditionalDependencies) - - - _WINDOWS;NDEBUG;_WIN64;_M_X64;%(PreprocessorDefinitions) - - @@ -240,11 +76,6 @@ - - - {f0e0541e-f17d-430b-97c4-93adf0dd284e} - - diff --git a/PCbuild/readme.txt b/PCbuild/readme.txt index 91ef8d17fd5..77bfeeba79f 100644 --- a/PCbuild/readme.txt +++ b/PCbuild/readme.txt @@ -1,7 +1,7 @@ Quick Start Guide ----------------- -1. Install Microsoft Visual C++ 2010 SP1, any edition. +1. Install Microsoft Visual Studio 2015, any edition. 2. Install Subversion, and make sure 'svn.exe' is on your PATH. 3. Run "build.bat -e" to build Python in 32-bit Release configuration. 4. (Optional, but recommended) Run the test suite with "rt.bat -q". @@ -11,41 +11,38 @@ Building Python using Microsoft Visual C++ ------------------------------------------ This directory is used to build CPython for Microsoft Windows NT version -5.1 or higher (Windows XP, Windows Server 2003, or later) on 32 and 64 +6.0 or higher (Windows Vista, Windows Server 2008, or later) on 32 and 64 bit platforms. Using this directory requires an installation of -Microsoft Visual C++ 2010 (MSVC 10.0) of any edition. The specific +Microsoft Visual C++ 2015 (MSVC 14.0) of any edition. The specific requirements are as follows: -Visual C++ 2010 Express Edition - Required for building 32-bit Debug and Release configuration builds. +Visual Studio Express 2015 for Desktop +Visual Studio Professional 2015 + Either edition is sufficient for building all configurations except + for Profile Guided Optimization. The Python build solution pcbuild.sln makes use of Solution Folders, which this edition does not support. Any time pcbuild.sln is opened - or reloaded by Visual C++, a warning about Solution Folders will be - displayed which can be safely dismissed with no impact on your + or reloaded by Visual Studio, a warning about Solution Folders will + be displayed, which can be safely dismissed with no impact on your ability to build Python. -Visual Studio 2010 Professional Edition Required for building 64-bit Debug and Release configuration builds -Visual Studio 2010 Premium Edition +Visual Studio Premium 2015 Required for building Release configuration builds that make use of Profile Guided Optimization (PGO), on either platform. -Installing Service Pack 1 for Visual Studio 2010 is highly recommended -to avoid LNK1123 errors. - All you need to do to build is open the solution "pcbuild.sln" in Visual Studio, select the desired combination of configuration and platform, -then build with "Build Solution" or the F7 keyboard shortcut. You can -also build from the command line using the "build.bat" script in this -directory; see below for details. The solution is configured to build -the projects in the correct order. +then build with "Build Solution". You can also build from the command +line using the "build.bat" script in this directory; see below for +details. The solution is configured to build the projects in the correct +order. The solution currently supports two platforms. The Win32 platform is -used to build standard x86-compatible 32-bit binaries, output into this -directory. The x64 platform is used for building 64-bit AMD64 (aka -x86_64 or EM64T) binaries, output into the amd64 sub-directory which -will be created if it doesn't already exist. The Itanium (IA-64) -platform is no longer supported. See the "Building for AMD64" section -below for more information about 64-bit builds. +used to build standard x86-compatible 32-bit binaries, output into the +win32 sub-directory. The x64 platform is used for building 64-bit AMD64 +(aka x86_64 or EM64T) binaries, output into the amd64 sub-directory. +The Itanium (IA-64) platform is no longer supported. See the "Building +for AMD64" section below for more information about 64-bit builds. Four configuration options are supported by the solution: Debug @@ -61,8 +58,8 @@ PGInstrument, PGUpdate requires Premium Edition of Visual Studio. See the "Profile Guided Optimization" section below for more information. Build output from each of these configurations lands in its own - sub-directory of this directory. The official Python releases are - built using these configurations. + sub-directory of this directory. The official Python releases may + be built using these configurations. Release Used to build Python as it is meant to be used in production settings, though without PGO. @@ -72,10 +69,10 @@ Building Python using the build.bat script ---------------------------------------------- In this directory you can find build.bat, a script designed to make -building Python on Windows simpler. The only absolute requirement for -using this script is for the VS100COMNTOOLS environment variable to be -properly set, which should be done by Microsoft Visual C++ 2010 -installation. +building Python on Windows simpler. This script will use the env.bat +script to detect one of Visual Studio 2015, 2013, 2012, or 2010, any of +which may be used to build Python, though only Visual Studio 2015 is +officially supported. By default, build.bat will build Python in Release configuration for the 32-bit Win32 platform. It accepts several arguments to change @@ -85,37 +82,29 @@ this behavior: -d Shortcut for "-c Debug" -p Set the platform to build for ("Win32" or "x64") -r Rebuild instead of just building + -t Set the target (Build, Rebuild, Clean or CleanAll) -e Use get_externals.bat to fetch external sources + -M Don't build in parallel + -v Increased output messages Up to 9 MSBuild switches can also be passed, though they must be passed after specifying any of the above switches. For example, use: - build.bat -e -d /m + build.bat -e -d /fl -to do a concurrent debug build with externals fetched as needed. If -the MSBuild switch requires an equal sign ("="), the entire switch must -be quoted: +to do a debug build with externals fetched as needed and write detailed +build logs to a file. If the MSBuild switch requires an equal sign +("="), the entire switch must be quoted: - build.bat -e -d "/p:externalsDir=P:\cpython-externals" + build.bat -e -d "/p:ExternalsDir=P:\cpython-externals" There may also be other situations where quotes are necessary. -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. - -Currently, the only legacy build directory is PC\VS9.0, for Visual -Studio 2008 (9.0). - - C Runtime --------- -Visual Studio 2010 uses version 10 of the C runtime (MSVCRT10). The +Visual Studio 2015 uses version 14 of the C runtime (MSVCRT14). The executables no longer use the "Side by Side" assemblies used in previous versions of the compiler. This simplifies distribution of applications. @@ -140,10 +129,6 @@ pythoncore .dll and .lib python .exe -kill_python - kill_python.exe, a small program designed to kill any instances of - python(_d).exe that are running and live in the build output - directory; this is meant to avoid build issues due to locked files make_buildinfo, make_versioninfo helpers to provide necessary information to the build process @@ -163,13 +148,12 @@ _testembed purposes, used by test_capi.py These are miscellaneous sub-projects that don't really fit the other -categories. By default, these projects do not build in Debug -configuration: +categories: _freeze_importlib _freeze_importlib.exe, used to regenerate Python\importlib.h after changes have been made to Lib\importlib\_bootstrap.py bdist_wininst - ..\Lib\distutils\command\wininst-10.0[-amd64].exe, the base + ..\Lib\distutils\command\wininst-14.0[-amd64].exe, the base executable used by the distutils bdist_wininst command python3dll python3.dll, the PEP 384 Stable ABI dll @@ -225,10 +209,10 @@ _ssl need a later version of NASM. If OpenSSL's self tests don't pass, you should first try to update NASM and do a full rebuild of OpenSSL. get_externals.py also downloads a snapshot of NASM, and the - ssl sub-project includes that version of nasm.exe on PATH. + libeay and ssleay sub-projects use that version of nasm.exe. - The ssl sub-project expects your OpenSSL sources to have already - been configured and be ready to build. If you get your sources + The libeay/ssleay sub-projects expect your OpenSSL sources to have + already been configured and be ready to build. If you get your sources from svn.python.org as suggested in the "Getting External Sources" section below, the OpenSSL source will already be ready to go. If you want to build a different version, you will need to run @@ -241,8 +225,11 @@ _ssl OpenSSL. ActivePerl is recommended and is available from http://www.activestate.com/activeperl/ - The ssl sub-project does not have the ability to clean the OpenSSL - build; if you need to rebuild, you'll have to clean it by hand. + The libeay and ssleay sub-projects will build the modules of OpenSSL + required by _ssl and _hashlib and may need to be manually updated when + upgrading to a newer version of OpenSSL or when adding new + functionality to _ssl or _hashlib. They will not clean up their output + with the normal Clean target; CleanAll should be used instead. _sqlite3 Wraps SQLite 3.8.3.1, which is itself built by sqlite3.vcxproj Homepage: @@ -262,9 +249,9 @@ _tkinter into the current output directory, which should ensure that Tkinter is able to load Tcl/Tk without having to change your PATH. - The tcl, tk, and tix sub-projects do not have the ability to clean - their builds; if you need to rebuild, you'll have to clean them by - hand. + The tcl, tk, and tix sub-projects do not clean their builds with + the normal Clean target; if you need to rebuild, you should use the + CleanAll target or manually delete their builds. Getting External Sources @@ -293,9 +280,7 @@ 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 from Win32. Note that Visual Studio -requires Professional Edition or better in order to build 64-bit -binaries. +to support cross-compilation from Win32. Profile Guided Optimization @@ -330,31 +315,22 @@ also have to change the "Runtime Library" from "Multi-threaded DLL Visual Studio properties ------------------------ -The PCbuild solution makes heavy use of Visual Studio property files -(*.props). The properties can be viewed and altered in the Property -Manager (View -> Other Windows -> Property Manager). +The PCbuild solution makes use of Visual Studio property files (*.props) +to simplify each project. The properties can be viewed in the Property +Manager (View -> Other Windows -> Property Manager) but should be +carefully modified by hand. -The property files used are (+-- = "also imports"): - * 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) - * sqlite3 (used only by sqlite3.vcxproj) +The property files used are: + * python (versions, directories and build names) + * pyproject (base settings for all projects) + * openssl (used by libeay and ssleay projects) * tcltk (used by _tkinter, tcl, tk and tix projects) - * x64 (AMD64 / x64 platform specific settings) -The pyproject property file 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. +The pyproject property file defines all of the build settings for each +project, with some projects overriding certain specific values. The GUI +doesn't always reflect the correct settings and may confuse the user +with false information, especially for settings that automatically adapt +for diffirent configurations. Your Own Extension DLLs diff --git a/PCbuild/release.props b/PCbuild/release.props deleted file mode 100644 index b460f018c3b..00000000000 --- a/PCbuild/release.props +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - - - - NDEBUG;%(PreprocessorDefinitions) - - - - - $(PyDebugExt) - - - $(TclDebugExt) - - - \ No newline at end of file diff --git a/PCbuild/rt.bat b/PCbuild/rt.bat index 9153e7e37ea..5041cd3ea25 100644 --- a/PCbuild/rt.bat +++ b/PCbuild/rt.bat @@ -28,7 +28,7 @@ rem rt -u "network,largefile" setlocal set pcbuild=%~dp0 -set prefix=%pcbuild% +set prefix=%pcbuild%win32\ set suffix= set qmode= set dashO= diff --git a/PCbuild/select.vcxproj b/PCbuild/select.vcxproj index 7c36d646b72..3cd0694baa5 100644 --- a/PCbuild/select.vcxproj +++ b/PCbuild/select.vcxproj @@ -37,188 +37,33 @@ {18CAE28C-B454-46C1-87A0-493D91D97F03} select - Win32Proj + - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - + DynamicLibrary NotSet + + .pyd + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - + ws2_32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) 0x1D110000 - - - X64 - - - ws2_32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) - 0x1D110000 - - - - - ws2_32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) - 0x1D110000 - - - - - X64 - - - ws2_32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) - 0x1D110000 - - - - - ws2_32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) - 0x1D110000 - - - - - X64 - - - ws2_32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) - 0x1D110000 - MachineX64 - - - - - ws2_32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) - 0x1D110000 - - - - - X64 - - - ws2_32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) - 0x1D110000 - MachineX64 - - diff --git a/PCbuild/sqlite3.props b/PCbuild/sqlite3.props deleted file mode 100644 index d3ee02cf756..00000000000 --- a/PCbuild/sqlite3.props +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - <_ProjectFileVersion>10.0.30319.1 - - - - $(sqlite3Dir);%(AdditionalIncludeDirectories) - SQLITE_API=__declspec(dllexport);%(PreprocessorDefinitions) - Level1 - - - \ No newline at end of file diff --git a/PCbuild/sqlite3.vcxproj b/PCbuild/sqlite3.vcxproj index daf010dae04..b6246fa78c5 100644 --- a/PCbuild/sqlite3.vcxproj +++ b/PCbuild/sqlite3.vcxproj @@ -37,188 +37,31 @@ {A1A295E5-463C-437F-81CA-1F32367685DA} sqlite3 - Win32Proj + .pyd + false + - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - + DynamicLibrary NotSet - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - %(AdditionalIncludeDirectories) - - - $(OutDir)$(ProjectName)_d.dll - - - - - X64 - - - %(AdditionalIncludeDirectories) - - - $(OutDir)$(ProjectName)_d.dll - - - - - %(AdditionalIncludeDirectories) - - - $(OutDir)$(ProjectName).dll - - - - - X64 - - - %(AdditionalIncludeDirectories) - - - $(OutDir)$(ProjectName).dll - - - + $(sqlite3Dir);%(AdditionalIncludeDirectories) - - - $(OutDir)$(ProjectName).dll - - - - - X64 - - - %(AdditionalIncludeDirectories) - - - - - %(AdditionalIncludeDirectories) - - - $(OutDir)$(ProjectName).dll - - - - - X64 - - - %(AdditionalIncludeDirectories) + SQLITE_API=__declspec(dllexport);%(PreprocessorDefinitions) + Level1 @@ -228,12 +71,6 @@ - - - {6de10744-e396-40a5-b4e2-1b69aa7c8d31} - false - - diff --git a/PCbuild/ssl.vcxproj b/PCbuild/ssl.vcxproj deleted file mode 100644 index f6796b65091..00000000000 --- a/PCbuild/ssl.vcxproj +++ /dev/null @@ -1,251 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - PGInstrument - Win32 - - - PGInstrument - x64 - - - PGUpdate - Win32 - - - PGUpdate - x64 - - - Release - Win32 - - - Release - x64 - - - - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0} - ssl - MakeFileProj - - - - Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - -path %PATH%;$(SolutionDir)$(nasmDir) -cd "$(SolutionDir)$(opensslDir)" -copy /Y crypto\buildinf_x86.h crypto\buildinf.h -copy /Y crypto\opensslconf_x86.h crypto\opensslconf.h -nmake /nologo -f "ms\nt.mak" - - - echo OpenSSL must be cleaned manually if you want to rebuild it. - - $(NMakePreprocessorDefinitions) - $(NMakeIncludeSearchPath) - $(NMakeForcedIncludes) - $(NMakeAssemblySearchPath) - $(NMakeForcedUsingAssemblies) - -path %PATH%;$(SolutionDir)$(nasmDir) -cd "$(SolutionDir)$(opensslDir)" -nasm -f win64 -DNEAR -Ox -g ms\\uptable.asm || echo nasm failed! && exit -copy /Y crypto\buildinf_amd64.h crypto\buildinf.h -copy /Y crypto\opensslconf_amd64.h crypto\opensslconf.h -nmake /nologo -f "ms\nt64.mak" - - - echo OpenSSL must be cleaned manually if you want to rebuild it. - - $(NMakePreprocessorDefinitions) - $(NMakeIncludeSearchPath) - $(NMakeForcedIncludes) - $(NMakeAssemblySearchPath) - $(NMakeForcedUsingAssemblies) - -path %PATH%;$(SolutionDir)$(nasmDir) -cd "$(SolutionDir)$(opensslDir)" -copy /Y crypto\buildinf_x86.h crypto\buildinf.h -copy /Y crypto\opensslconf_x86.h crypto\opensslconf.h -nmake /nologo -f "ms\nt.mak" - - - echo OpenSSL must be cleaned manually if you want to rebuild it. - - $(NMakePreprocessorDefinitions) - $(NMakeIncludeSearchPath) - $(NMakeForcedIncludes) - $(NMakeAssemblySearchPath) - $(NMakeForcedUsingAssemblies) - -path %PATH%;$(SolutionDir)$(nasmDir) -cd "$(SolutionDir)$(opensslDir)" -nasm -f win64 -DNEAR -Ox -g ms\\uptable.asm || echo nasm failed! && exit -copy /Y crypto\buildinf_amd64.h crypto\buildinf.h -copy /Y crypto\opensslconf_amd64.h crypto\opensslconf.h -nmake /nologo -f "ms\nt64.mak" - - - echo OpenSSL must be cleaned manually if you want to rebuild it. - - $(NMakePreprocessorDefinitions) - $(NMakeIncludeSearchPath) - $(NMakeForcedIncludes) - $(NMakeAssemblySearchPath) - $(NMakeForcedUsingAssemblies) - -path %PATH%;$(SolutionDir)$(nasmDir) -cd "$(SolutionDir)$(opensslDir)" -copy /Y crypto\buildinf_x86.h crypto\buildinf.h -copy /Y crypto\opensslconf_x86.h crypto\opensslconf.h -nmake /nologo -f "ms\nt.mak" - - - echo OpenSSL must be cleaned manually if you want to rebuild it. - - $(NMakePreprocessorDefinitions) - $(NMakeIncludeSearchPath) - $(NMakeForcedIncludes) - $(NMakeAssemblySearchPath) - $(NMakeForcedUsingAssemblies) - -path %PATH%;$(SolutionDir)$(nasmDir) -cd "$(SolutionDir)$(opensslDir)" -nasm -f win64 -DNEAR -Ox -g ms\\uptable.asm || echo nasm failed! && exit -copy /Y crypto\buildinf_amd64.h crypto\buildinf.h -copy /Y crypto\opensslconf_amd64.h crypto\opensslconf.h -nmake /nologo -f "ms\nt64.mak" - - - echo OpenSSL must be cleaned manually if you want to rebuild it. - - $(NMakePreprocessorDefinitions) - $(NMakeIncludeSearchPath) - $(NMakeForcedIncludes) - $(NMakeAssemblySearchPath) - $(NMakeForcedUsingAssemblies) - -path %PATH%;$(SolutionDir)$(nasmDir) -cd "$(SolutionDir)$(opensslDir)" -copy /Y crypto\buildinf_x86.h crypto\buildinf.h -copy /Y crypto\opensslconf_x86.h crypto\opensslconf.h -nmake /nologo -f "ms\nt.mak" - - - echo OpenSSL must be cleaned manually if you want to rebuild it. - - $(NMakePreprocessorDefinitions) - $(NMakeIncludeSearchPath) - $(NMakeForcedIncludes) - $(NMakeAssemblySearchPath) - $(NMakeForcedUsingAssemblies) - -path %PATH%;$(SolutionDir)$(nasmDir) -cd "$(SolutionDir)$(opensslDir)" -nasm -f win64 -DNEAR -Ox -g ms\\uptable.asm || echo nasm failed! && exit -copy /Y crypto\buildinf_amd64.h crypto\buildinf.h -copy /Y crypto\opensslconf_amd64.h crypto\opensslconf.h -nmake /nologo -f "ms\nt64.mak" - - - echo OpenSSL must be cleaned manually if you want to rebuild it. - - $(NMakePreprocessorDefinitions) - $(NMakeIncludeSearchPath) - $(NMakeForcedIncludes) - $(NMakeAssemblySearchPath) - $(NMakeForcedUsingAssemblies) - - - - - - - \ No newline at end of file diff --git a/PCbuild/ssleay.vcxproj b/PCbuild/ssleay.vcxproj new file mode 100644 index 00000000000..bd7dd40a2a2 --- /dev/null +++ b/PCbuild/ssleay.vcxproj @@ -0,0 +1,121 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + PGInstrument + Win32 + + + PGInstrument + x64 + + + PGUpdate + Win32 + + + PGUpdate + x64 + + + Debug + x64 + + + Release + x64 + + + + {10615B24-73BF-4EFA-93AA-236916321317} + ssleay + + + + + + + + StaticLibrary + $(opensslDir)tmp32\ssleay\ + $(opensslDir)tmp64\ssleay\ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/PCbuild/tcl.vcxproj b/PCbuild/tcl.vcxproj index dc426b365c2..8f2544a74e6 100644 --- a/PCbuild/tcl.vcxproj +++ b/PCbuild/tcl.vcxproj @@ -5,9 +5,9 @@ Debug Win32 - - Debug - x64 + + Release + Win32 PGInstrument @@ -25,9 +25,9 @@ PGUpdate x64 - - Release - Win32 + + Debug + x64 Release @@ -36,140 +36,55 @@ {B5FD6F1D-129E-4BFF-9340-03606FAC7283} - tcl - MakeFileProj + + - + + + Makefile - NotSet + $(tcltkDir) + $(OutDir)bin\$(tclDLLName) - - Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - -IF EXIST $(tcltkDir)\include\tcl.h ( - IF EXIST $(tcltkDir)\bin\$(tclDLLName) ( - IF EXIST $(OutDir)$(tclDLLName) ( - echo Tcl is already built and available. - exit /b 0 - ) ELSE ( - echo Copying tcl dll to $(OutDir) - xcopy $(tcltkDir)\bin\$(tclDLLName) $(OutDir) - exit /b 0 - ) - ) -) - -IF NOT EXIST $(tclDir) ( - echo error: $(tclDir) doesn't exist. - exit 1 -) - -IF "$(Platform)" EQU "Win32" set TclMachine=IX86 -IF "$(Platform)" EQU "x64" set TclMachine=AMD64 - -IF "$(Configuration)" EQU "Debug" ( - set TclOpts=symbols -) ELSE ( - set TclOpts= -) - -cd $(tclDir)\win - -nmake -f makefile.vc MACHINE=%TclMachine% OPTS=%TclOpts% core shell dlls && nmake -f makefile.vc MACHINE=%TclMachine% OPTS=%TclOpts% INSTALLDIR=$(SolutionDir)$(tcltkDir) install-binaries install-libraries && xcopy /y $(SolutionDir)$(tcltkDir)\bin\$(tclDLLName) $(OutDir) - - del $(OutDir)$(tclDLLName) -echo Tcl must be cleaned manually if you want to rebuild it. - - - + + + + + + + symbols + INSTALLDIR="$(OutDir.TrimEnd(`\`))" INSTALL_DIR="$(OutDir.TrimEnd(`\`))" + DEBUGFLAGS="-wd4456 -wd4457 -wd4458 -wd4459 -wd4996" + setlocal +@(ExpectedOutputs->'if not exist "%(FullPath)" goto build',' +') +goto :eof +:build +set VCINSTALLDIR=$(VCInstallDir) +cd /D "$(tclDir)win" +nmake -f makefile.vc MACHINE=$(TclMachine) OPTS=$(TclOpts) $(TclDirs) $(DebugFlags) core shell dlls +nmake -f makefile.vc MACHINE=$(TclMachine) OPTS=$(TclOpts) $(TclDirs) $(DebugFlags) install-binaries install-libraries + + + - - + + + + + + + + + + \ No newline at end of file diff --git a/PCbuild/tcltk.props b/PCbuild/tcltk.props index c1694278528..abccd61171e 100644 --- a/PCbuild/tcltk.props +++ b/PCbuild/tcltk.props @@ -1,30 +1,45 @@  - - - Dummy value to avoid patching Tcl/Tk's makefile.vc - tcl86t$(TclDebugExt).dll - tk86t$(TclDebugExt).dll - tix84$(TclDebugExt).dll - $(tcltkDir)\lib\tcl86t$(TclDebugExt).lib;$(tcltkDir)\lib\tk86t$(TclDebugExt).lib + + + 8 + 6 + 1 + 0 + $(TclMajorVersion) + $(TclMinorVersion) + $(TclPatchLevel) + $(TclRevision) + 8 + 4 + 3 + 4 + $(ExternalsDir)tcl-$(TclMajorVersion).$(TclMinorVersion).$(TclPatchLevel).$(TclRevision)\ + $(ExternalsDir)tk-$(TkMajorVersion).$(TkMinorVersion).$(TkPatchLevel).$(TkRevision)\ + $(ExternalsDir)tix-$(TixMajorVersion).$(TixMinorVersion).$(TixPatchLevel).$(TixRevision)\ + $(ExternalsDir)tcltk\ + $(ExternalsDir)tcltk64\ + g + tcl$(TclMajorVersion)$(TclMinorVersion)t$(TclDebugExt).dll + tcl$(TclMajorVersion)$(TclMinorVersion)t$(TclDebugExt).lib + tclsh$(TclMajorVersion)$(TclMinorVersion)t$(TclDebugExt).exe + tk$(TkMajorVersion)$(TkMinorVersion)t$(TclDebugExt).dll + tk$(TkMajorVersion)$(TkMinorVersion)t$(TclDebugExt).lib + tix$(TixMajorVersion)$(TixMinorVersion)$(TclDebugExt).dll + $(tcltkDir)lib\tix$(TixMajorVersion).$(TixMinorVersion).$(TixPatchLevel)\$(tixDLLName) + $(tcltkDir)lib\tcl$(TclMajorVersion)$(TclMinorVersion)t$(TclDebugExt).lib;$(tcltkDir)lib\tk$(TkMajorVersion)$(TkMinorVersion)t$(TclDebugExt).lib + IX86 + AMD64 + TCL_MAJOR_VERSION=$(TclMajorVersion) TCL_MINOR_VERSION=$(TclMinorVersion) TCL_PATCH_LEVEL=$(TclPatchLevel) + TCL_MAJOR=$(TclMajorVersion) TCL_MINOR=$(TclMinorVersion) TCL_PATCH=$(TclPatchLevel) + TK_MAJOR_VERSION=$(TkMajorVersion) TK_MINOR_VERSION=$(TkMinorVersion) TK_PATCH_LEVEL=$(TkPatchLevel) + + Release + Debug + $(BuildDirTop)_$(TclMachine) + $(BuildDirTop)_VC13 + $(BuildDirTop)_VC12 + $(BuildDirTop)_VC11 + $(BuildDirTop)_VC10 - - - - $(MSDEVDIR) - true - - - $(tclDLLName) - - - $(tkDLLName) - - - $(tixDLLName) - - - $(tcltkLib) - - \ No newline at end of file diff --git a/PCbuild/tix.vcxproj b/PCbuild/tix.vcxproj index a177f5c14b4..74a6b84f573 100644 --- a/PCbuild/tix.vcxproj +++ b/PCbuild/tix.vcxproj @@ -5,9 +5,9 @@ Debug Win32 - - Debug - x64 + + Release + Win32 PGInstrument @@ -25,9 +25,9 @@ PGUpdate x64 - - Release - Win32 + + Debug + x64 Release @@ -37,135 +37,58 @@ {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555} tix - MakeFileProj + + - + + + Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet + $(tcltkDir) + $(tixDLLPath) + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - <_ProjectFileVersion>10.0.30319.1 - -IF EXIST $(tcltkDir)\lib\tix8.4.3\$(tixDLLName) ( - echo Tix is already built and available. - exit /b 0 -) - -IF NOT EXIST $(tixDir) ( - echo error: $(tixDir) doesn't exist. - exit 1 -) - -IF "$(Platform)" EQU "Win32" set TclMachine=IX86 -IF "$(Platform)" EQU "x64" set TclMachine=AMD64 - -IF "$(Configuration)" EQU "Debug" ( - set TixDebug=1 -) ELSE ( - set TixDebug=0 -) - -cd $(tixDir)\win -nmake -f python.mak MACHINE=%TclMachine% DEBUG=%TixDebug% TCL_DIR=$(SolutionDir)$(tclDir) TK_DIR=$(SolutionDir)$(tkDir) all && nmake -f python.mak MACHINE=%TclMachine% DEBUG=%TixDebug% TCL_DIR=$(SolutionDir)$(tclDir) TK_DIR=$(SolutionDir)$(tkDir) INSTALL_DIR=$(SolutionDir)$(tcltkDir) install - - echo Tix must be cleaned manually if you want to rebuild it. + msvcrt + symbols,msvcrt + BUILDDIRTOP="$(BuildDirTop)" TCL_DIR="$(tclDir.TrimEnd(`\`))" TK_DIR="$(tkDir.TrimEnd(`\`))" INSTALL_DIR="$(OutDir.TrimEnd(`\`))" + DEBUG=1 NODEBUG=0 TCL_DBGX=g DEBUGFLAGS="-wd4456 -wd4457 -wd4458 -wd4459 -wd4996" + DEBUG=0 NODEBUG=1 + setlocal +@(ExpectedOutputs->'if not exist "%(FullPath)" goto build',' +') +goto :eof +:build +set VCINSTALLDIR=$(VCInstallDir) +cd /D "$(tixDir)win" +nmake /nologo -f makefile.vc MACHINE=$(TclMachine) $(DebugFlags) $(TclShortVersions) $(TixDirs) all install + + rmdir /q/s "$(OutDir.TrimEnd(`\`))" - - + {b5fd6f1d-129e-4bff-9340-03606fac7283} + false {7e85eccf-a72c-4da4-9e52-884508e80ba1} + false + - - + + + + + + \ No newline at end of file diff --git a/PCbuild/tk.vcxproj b/PCbuild/tk.vcxproj index d760f87657f..20749f719f5 100644 --- a/PCbuild/tk.vcxproj +++ b/PCbuild/tk.vcxproj @@ -5,9 +5,9 @@ Debug Win32 - - Debug - x64 + + Release + Win32 PGInstrument @@ -25,9 +25,9 @@ PGUpdate x64 - - Release - Win32 + + Debug + x64 Release @@ -37,142 +37,59 @@ {7E85ECCF-A72C-4DA4-9E52-884508E80BA1} tk - MakeFileProj + + - + + + Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet + $(tcltkDir) + $(OutDir)bin\$(tkDLLName) + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - <_ProjectFileVersion>10.0.30319.1 - -IF EXIST $(tcltkDir)\include\tk.h ( - IF EXIST $(tcltkDir)\bin\$(tkDLLName) ( - IF EXIST $(OutDir)$(tkDLLName) ( - echo Tk is already built and available. - exit /b 0 - ) ELSE ( - echo Copying tk dll to $(OutDir) - xcopy $(tcltkDir)\bin\$(tkDLLName) $(OutDir) - exit /b 0 - ) - ) -) - -IF NOT EXIST $(tkDir) ( - echo error: $(tkDir) doesn't exist. - exit 1 -) - -IF "$(Platform)" EQU "Win32" set TclMachine=IX86 -IF "$(Platform)" EQU "x64" set TclMachine=AMD64 - -IF "$(Configuration)" EQU "Debug" ( - set TclOpts=symbols -) ELSE ( - set TclOpts= -) - -cd $(tkDir)\win - -nmake -f makefile.vc MACHINE=%TclMachine% OPTS=%TclOpts% TCLDIR=$(SolutionDir)$(tclDir) all && nmake -f makefile.vc MACHINE=%TclMachine% OPTS=%TclOpts% TCLDIR=$(SolutionDir)$(tclDir) INSTALLDIR=$(SolutionDir)$(tcltkDir) install-binaries install-libraries && xcopy /y $(SolutionDir)$(tcltkDir)\bin\$(tkDLLName) $(OutDir) - - del $(OutDir)$(tkDLLName) -echo Tk must be cleaned manually if you want to rebuild it. + msvcrt + symbols,msvcrt + TCLDIR="$(tclDir.TrimEnd(`\`))" INSTALLDIR="$(OutDir.TrimEnd(`\`))" + DEBUGFLAGS="-wd4456 -wd4457 -wd4458 -wd4459 -wd4996" + setlocal +@(ExpectedOutputs->'if not exist "%(FullPath)" goto build',' +') +goto :eof +:build +set VCINSTALLDIR=$(VCInstallDir) +cd /D "$(tkDir)win" +nmake /nologo -f makefile.vc RC=rc MACHINE=$(TclMachine) OPTS=$(TkOpts) $(TkDirs) $(DebugFlags) all +nmake /nologo -f makefile.vc RC=rc MACHINE=$(TclMachine) OPTS=$(TkOpts) $(TkDirs) $(DebugFlags) install-binaries install-libraries + - - {b5fd6f1d-129e-4bff-9340-03606fac7283} + false - - + + + + + + + + + + \ No newline at end of file diff --git a/PCbuild/unicodedata.vcxproj b/PCbuild/unicodedata.vcxproj index c9d5278684a..a3071fbf8ee 100644 --- a/PCbuild/unicodedata.vcxproj +++ b/PCbuild/unicodedata.vcxproj @@ -39,170 +39,31 @@ unicodedata Win32Proj + - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - + DynamicLibrary NotSet + + .pyd + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - + 0x1D120000 - - - X64 - - - 0x1D120000 - - - - - 0x1D120000 - - - - - X64 - - - 0x1D120000 - - - - - 0x1D120000 - - - - - X64 - - - 0x1D120000 - MachineX64 - - - - - 0x1D120000 - - - - - X64 - - - 0x1D120000 - MachineX64 - - diff --git a/PCbuild/vs9to10.py b/PCbuild/vs9to10.py deleted file mode 100644 index eb7dab50b88..00000000000 --- a/PCbuild/vs9to10.py +++ /dev/null @@ -1,56 +0,0 @@ -#Run this file after automatic conversion of the VisualStudio 2008 solution by VisualStudio 2010. -#This can be done whenever the 2008 solution changes. -#It will make the necessary cleanup and updates to the vcxproj files -#the .props files need to be maintained by hand if the .vsprops files change - -from __future__ import with_statement -import sys -import os -import os.path - -def vs9to10(src, dest): - for name in os.listdir(src): - path, ext = os.path.splitext(name) - if ext.lower() not in ('.vcxproj',): - continue - - filename = os.path.normpath(os.path.join(src, name)) - destname = os.path.normpath(os.path.join(dest, name)) - print("%s -> %s" % (filename, destname)) - - lines = [] - lastline = b"" - importgroup = False - with open(filename, 'rb') as fin: - for line in fin: - #remove redundant linker output info - if b"" in line: - continue - if b"" in line: - continue - if b"" in line and b"" in line: - continue - - #add new property sheet to the pythoncore - if importgroup and "pythoncore" in name.lower(): - if b"" in line: - if b"debug.props" in lastline: - lines.append(b' \r\n') - elif b"pythoncore" not in lastline: - lines.append(b' \r\n') - if b"" in line: - importgroup = False - lines.append(line) - lastline = line - with open(destname, 'wb') as fout: - for line in lines: - fout.write(line) - -if __name__ == "__main__": - src = "." if len(sys.argv) < 2 else sys.argv[1] - name = os.path.basename(os.path.abspath(src)) - dest = os.path.abspath(os.path.join(src, "..", name + "Upd")) - os.makedirs(dest) - vs9to10(src, dest) diff --git a/PCbuild/vs9to8.py b/PCbuild/vs9to8.py deleted file mode 100644 index 3b88a16c27c..00000000000 --- a/PCbuild/vs9to8.py +++ /dev/null @@ -1,34 +0,0 @@ -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') - - with open(destname, 'wb') as fout: - lines = lines.replace("\n", "\r\n").encode() - fout.write(lines) - -if __name__ == "__main__": - vs9to8(src=".", dest="../PC/VS8.0") diff --git a/PCbuild/winsound.vcxproj b/PCbuild/winsound.vcxproj index cf518e99364..540235af22e 100644 --- a/PCbuild/winsound.vcxproj +++ b/PCbuild/winsound.vcxproj @@ -39,170 +39,31 @@ winsound Win32Proj + - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - + DynamicLibrary NotSet + + .pyd + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - + winmm.lib;%(AdditionalDependencies) - - - X64 - - - winmm.lib;%(AdditionalDependencies) - - - - - winmm.lib;%(AdditionalDependencies) - - - - - X64 - - - winmm.lib;%(AdditionalDependencies) - - - - - winmm.lib;%(AdditionalDependencies) - - - - - X64 - - - winmm.lib;%(AdditionalDependencies) - MachineX64 - - - - - winmm.lib;%(AdditionalDependencies) - - - - - X64 - - - winmm.lib;%(AdditionalDependencies) - MachineX64 - - diff --git a/PCbuild/x64.props b/PCbuild/x64.props deleted file mode 100644 index 9e6f5bb5af6..00000000000 --- a/PCbuild/x64.props +++ /dev/null @@ -1,26 +0,0 @@ - - - - $(HOST_PYTHON) - - - $(externalsDir)\tcltk64 - - - - false - _WIN64;_M_X64;%(PreprocessorDefinitions) - - - MachineX64 - - - - - $(PythonExe) - - - $(tcltkDir) - - - \ No newline at end of file diff --git a/PCbuild/xxlimited.vcxproj b/PCbuild/xxlimited.vcxproj index abf41f96827..4484dbaa962 100644 --- a/PCbuild/xxlimited.vcxproj +++ b/PCbuild/xxlimited.vcxproj @@ -1,6 +1,14 @@  + + Debug + Win32 + + + Debug + x64 + PGInstrument Win32 @@ -31,158 +39,44 @@ xxlimited Win32Proj + - + DynamicLibrary NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true - - - DynamicLibrary - NotSet - true + false + + .pyd + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - + - NDEBUG;_WIN32;_WINDLL;Py_LIMITED_API=0x03040000 + %(PreprocessorDefinitions);Py_LIMITED_API=0x03040000 wsock32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) 0x1D110000 - - - X64 - - - wsock32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) - 0x1D110000 - - - - - Py_LIMITED_API=0x03040000;%(PreprocessorDefinitions) - - - wsock32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) - 0x1D110000 - - - - - X64 - - - wsock32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) - 0x1D110000 - MachineX64 - - - - - Py_LIMITED_API=0x03040000;%(PreprocessorDefinitions) - - - wsock32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) - 0x1D110000 - - - - - X64 - - - wsock32.lib;%(AdditionalDependencies) - libc;%(IgnoreSpecificDefaultLibraries) - 0x1D110000 - MachineX64 - - + + + {885d4898-d08d-4091-9c40-c700cfe3fc5a} + + diff --git a/Tools/buildbot/build.bat b/Tools/buildbot/build.bat index d37ec7b31c4..83a5dfd101c 100644 --- a/Tools/buildbot/build.bat +++ b/Tools/buildbot/build.bat @@ -1,7 +1,10 @@ @rem Used by the buildbot "compile" step. @rem Clean up -call "%~dp0clean.bat" +set PLAT= +if '%1' EQU '-p' if '%2' EQU 'x64' (set PLAT=-amd64) + +call "%~dp0clean%PLAT%.bat" @rem If you need the buildbots to start fresh (such as when upgrading to @rem a new version of an external library, especially Tcl/Tk): @@ -14,4 +17,4 @@ call "%~dp0clean.bat" @rem 4) re-comment, commit and push again @rem Do the build -call "%~dp0..\..\PCbuild\build.bat" -e -d %* +call "%~dp0..\..\PCbuild\build.bat" -e -d -v %* diff --git a/Tools/buildbot/buildmsi.bat b/Tools/buildbot/buildmsi.bat index f414c22e6a8..fc122737b24 100644 --- a/Tools/buildbot/buildmsi.bat +++ b/Tools/buildbot/buildmsi.bat @@ -2,6 +2,7 @@ setlocal set cwd=%CD% + @rem build release versions of things call "%~dp0build.bat" -c Release @@ -9,7 +10,7 @@ call "%~dp0build.bat" -c Release call "%~dp0..\..\Doc\make.bat" htmlhelp @rem build the MSI file -call "%VS100COMNTOOLS%..\..\VC\vcvarsall.bat" x86 +call "%~dp0..\..\PCBuild\env.bat" x86 cd "%~dp0..\..\PC" nmake /f icons.mak cd ..\Tools\msi diff --git a/Tools/buildbot/clean.bat b/Tools/buildbot/clean.bat index f4643a80ee8..39fec01d70b 100644 --- a/Tools/buildbot/clean.bat +++ b/Tools/buildbot/clean.bat @@ -5,29 +5,25 @@ setlocal set root=%~dp0..\.. set pcbuild=%root%\PCbuild -echo.Attempting to kill Pythons... -for %%k in (kill_python.exe - kill_python_d.exe - amd64\kill_python.exe - amd64\kill_python_d.exe - ) do ( - if exist "%pcbuild%\%%k" ( - echo.Calling %pcbuild%\%%k... - "%pcbuild%\%%k" - ) -) if "%1" == "x64" ( set vcvars_target=x86_amd64 - set platform_target=x64 + set platform=x64 ) else ( set vcvars_target=x86 - set platform_target=x86 + set platform=Win32 ) -call "%VS100COMNTOOLS%\..\..\VC\vcvarsall.bat" %vcvars_target% + +call "%pcbuild%\env.bat" %vcvars_target% + +echo.Attempting to kill Pythons... +msbuild /v:m /nologo /target:KillPython "%pcbuild%\pythoncore.vcxproj" /p:Configuration=Release /p:Platform=%platform% + echo Deleting .pyc/.pyo files ... del /s "%root%\Lib\*.pyc" "%root%\Lib\*.pyo" + echo Deleting test leftovers ... rmdir /s /q "%root%\build" -msbuild /target:clean "%pcbuild%\pcbuild.sln" /p:Configuration=Release /p:PlatformTarget=%platform_target% -msbuild /target:clean "%pcbuild%\pcbuild.sln" /p:Configuration=Debug /p:PlatformTarget=%platform_target% +echo Deleting build +msbuild /v:m /nologo /target:clean "%pcbuild%\pcbuild.proj" /p:Configuration=Release /p:Platform=%platform% +msbuild /v:m /nologo /target:clean "%pcbuild%\pcbuild.proj" /p:Configuration=Debug /p:Platform=%platform% diff --git a/Tools/ssl/sslspeed.vcxproj b/Tools/ssl/sslspeed.vcxproj new file mode 100644 index 00000000000..8ec410681ef --- /dev/null +++ b/Tools/ssl/sslspeed.vcxproj @@ -0,0 +1,70 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + + {F068BCCF-C0D6-478D-A2C5-26BA3237C992} + sslspeed + + + + + + + + $(OutDir) + $(MSBuildProjectDirectory)\$(ArchName)\ + $(MSBuildProjectDirectory)\$(ArchName)\obj\ + Application + MultiByte + + + + + + + + + + + + _CONSOLE;%(PreprocessorDefinitions) + $(opensslIncDir);%(AdditionalIncludeDirectories) + + + ws2_32.lib;crypt32.lib;libeay$(PyDebugExt).lib;ssleay$(PyDebugExt).lib;%(AdditionalDependencies) + $(OriginalOutDir);%(AdditionalLibraryDirectories) + Console + + + + + + {10615b24-73bf-4efa-93aa-236916321317} + false + + + {e5b04cc0-eb4c-42ab-b4dc-18ef95f864b0} + false + + + + + \ No newline at end of file