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 | 148 +- 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 | 183 +- 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 2343e9430e9936..0af6671efd4e18 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 d22a58af462cd5..86978cf9f7ae3f 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 595113bffdec22..9c19899da570be 100644 --- a/Lib/ctypes/util.py +++ b/Lib/ctypes/util.py @@ -19,6 +19,8 @@ def _get_build_version(): 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 @@ def find_msvcrt(): 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 54ce13454fa32d..605efbd68f132d 100644 --- a/Lib/distutils/command/build_ext.py +++ b/Lib/distutils/command/build_ext.py @@ -209,7 +209,7 @@ def finalize_options(self): 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 81166569619b6f..1048cd41593939 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 a1452fe16748e9..573724ddd778d1 100644 --- a/Lib/distutils/sysconfig.py +++ b/Lib/distutils/sysconfig.py @@ -9,6 +9,7 @@ Email: """ +import _imp import os import re import sys @@ -22,23 +23,15 @@ 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 dbf77672054be4..c5f541b3d554c2 100644 --- a/Lib/sysconfig.py +++ b/Lib/sysconfig.py @@ -109,13 +109,8 @@ def _safe_realpath(path): # 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 299f432fe4a43f..9b000d6973132a 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 bd7cd8ad483d44..d8e244133184b7 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 68bfeb4f194942..94cf7738e48224 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 1f07bcc90fdd25..7f5f3149afdb74 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 7ceb8c7f089b54..00000000000000 --- 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 8e5cba14fc8d8f..00000000000000 --- 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 70335462113df0..00000000000000 --- 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 b9fabb0cb95fcf..00000000000000 --- 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 f9d7375c0c1fb2..00000000000000 --- 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 77417ec0f5f447..00000000000000 --- 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 7c6003f10e2a3c..00000000000000 --- 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 cb230e10d0dc80..00000000000000 --- 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 fb3d1e70bcc6d1..00000000000000 --- 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 ff1f6d4e3f57bc..00000000000000 --- 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 82c57ae25fd7e3..00000000000000 --- 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 b47dc2740c5bc8..00000000000000 --- 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 03377e17721ac3..00000000000000 --- 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 453300a6427128..00000000000000 --- 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 14d910dfdf51de..00000000000000 --- 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 5163317575c662..00000000000000 --- 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 b8cc7ad6a875a8..00000000000000 --- 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 bc643cb6be5737..00000000000000 --- 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 dbc94255b7af0a..00000000000000 --- 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 a34107aab7a248..00000000000000 --- 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 fb4a64a97182bd..00000000000000 --- 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 924065db42bcdf..00000000000000 --- 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 0a1fd28bc41deb..00000000000000 --- 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 ba7f69cfadbfe5..00000000000000 --- 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 99c117b15267f0..00000000000000 --- 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 26cfc2d0dd9cd4..00000000000000 --- 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 34c21e15c5e6fc..00000000000000 --- 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 313a30b782fd55..00000000000000 --- 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 a8d2cd752728b3..00000000000000 --- 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 e2354bbe777701..00000000000000 --- 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 b07de2183ff1bc..00000000000000 --- 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 ed7333bc567784..00000000000000 --- 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 cf60470ce2c3a5..00000000000000 --- 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 7f5c04b9b55447..00000000000000 --- 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 08def90651b03a..00000000000000 --- 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 637fd972ce0e4a..00000000000000 --- 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 ef8c328c69925a..00000000000000 --- 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 b502df5ace364a..00000000000000 --- 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 d30e877024f6a1..00000000000000 --- 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 b66ff72228fb61..00000000000000 --- 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 47dbf29322c9f5..00000000000000 --- 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 d06f470cebad18..00000000000000 --- 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 a3aaad65836e1a..00000000000000 --- 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 31a7805fd1d05e..50ff15cdddf0f0 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 aec8eda2be850e..0249d9ff542f8a 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 a0232d23c94e5b..bb2eb34a67bf30 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 d018b484b0a97e..0071bdb2ba8d3c 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 35ba3c2534d5a7..0611709e414867 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 9cdc4c5a9525eb..bd8844f5b42127 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 df5824a6635e9a..634b8d6dcbca0b 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 5257d5e48e33ae..45fda3861e8179 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 abe124182933ba..00000000000000 --- 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 609cb9d22f8c6f..00000000000000 --- 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 6501da0adb9b10..00000000000000 --- 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 52bf8234be8864..33ddce7d0b9a64 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 60f231e513ef0d..8639dc33d9ab6c 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 9387e54b3a8e6b..64c3dcde14fa8c 100644 --- a/PCbuild/_bz2.vcxproj +++ b/PCbuild/_bz2.vcxproj @@ -39,200 +39,34 @@ 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) - - - 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 202cb1f42bbb15..68b8e2971d1b65 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 35e299b8867a41..c1260b53f3ecbc 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 98ba81db234a95..943bfb0990345c 100644 --- a/PCbuild/_decimal.vcxproj +++ b/PCbuild/_decimal.vcxproj @@ -39,206 +39,35 @@ _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) - ..\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) + _CRT_SECURE_NO_WARNINGS;MASM;%(PreprocessorDefinitions) + CONFIG_32;PPRO;%(PreprocessorDefinitions) + CONFIG_64;%(PreprocessorDefinitions) ..\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 7802ab30ae227d..414bd8bebb8216 100644 --- a/PCbuild/_elementtree.vcxproj +++ b/PCbuild/_elementtree.vcxproj @@ -39,200 +39,33 @@ _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) - - - 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 e133e020e08811..e331a67585ea08 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 - 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;%(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 52433ed6969e88..d82b266902a93c 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) - - - - - - - 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) + $(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) - 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 ac25c804adde44..af50494ebde69f 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) - 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) + $(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 1323d169df3431..f5ba7bff762749 100644 --- a/PCbuild/_msi.vcxproj +++ b/PCbuild/_msi.vcxproj @@ -39,176 +39,30 @@ _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) - 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) + cabinet.lib;msi.lib;rpcrt4.lib;%(AdditionalDependencies) 0x1D160000 - MachineX64 diff --git a/PCbuild/_multiprocessing.vcxproj b/PCbuild/_multiprocessing.vcxproj index b4bb568538a586..1eb92b67dc241d 100644 --- a/PCbuild/_multiprocessing.vcxproj +++ b/PCbuild/_multiprocessing.vcxproj @@ -39,176 +39,30 @@ _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 d0ee72fb5a1317..55301ea9dc2958 100644 --- a/PCbuild/_overlapped.vcxproj +++ b/PCbuild/_overlapped.vcxproj @@ -39,184 +39,30 @@ _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 63836e9261cc77..03b6f7558eb430 100644 --- a/PCbuild/_socket.vcxproj +++ b/PCbuild/_socket.vcxproj @@ -39,176 +39,30 @@ _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 ed35d5bc0c3147..5e889d0de00f44 100644 --- a/PCbuild/_sqlite3.vcxproj +++ b/PCbuild/_sqlite3.vcxproj @@ -39,200 +39,33 @@ _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) - - - 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 7378794b3d9e4e..8594a06966022e 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) - - - - - - - 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) + $(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) - 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 e1265f6841471e..8cbf1251c365eb 100644 --- a/PCbuild/_testbuffer.vcxproj +++ b/PCbuild/_testbuffer.vcxproj @@ -38,169 +38,31 @@ {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 e99a7e4f3fe0ef..dbf44e6e941462 100644 --- a/PCbuild/_testcapi.vcxproj +++ b/PCbuild/_testcapi.vcxproj @@ -38,169 +38,31 @@ {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 57b7b5cb1eb5db..f0e4d9f87465ae 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 - 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;%(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 84984ff2f704d9..cec042c202c650 100644 --- a/PCbuild/_testimportmultiple.vcxproj +++ b/PCbuild/_testimportmultiple.vcxproj @@ -38,169 +38,31 @@ {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 9218d63933e745..e1408a18ea3ea9 100644 --- a/PCbuild/_tkinter.vcxproj +++ b/PCbuild/_tkinter.vcxproj @@ -39,208 +39,33 @@ _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) - 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) + $(tcltkDir)include;%(AdditionalIncludeDirectories) WITH_APPINIT;%(PreprocessorDefinitions) $(tcltkLib);%(AdditionalDependencies) - MachineX64 diff --git a/PCbuild/bdist_wininst.vcxproj b/PCbuild/bdist_wininst.vcxproj index 49276a2e41e2f6..f7f9cd87915a3d 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 - - - - - 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.exe - true - LIBC;%(IgnoreSpecificDefaultLibraries) - ..\lib\distutils\command\wininst-10.0.pdb - Windows - false - - - MachineX86 - - - + - NDEBUG;%(PreprocessorDefinitions) - true - true - X64 - .\..\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-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 838f6ef7632646..2846144ff98028 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 f5135836027ca8..5988c0a268db80 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 00000000000000..6144c715f64e43 --- /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 54f3c3254200f6..00000000000000 --- 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 f0268a9135c7e4..9d4c9d1c32f7a4 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 dcb0485af7d365..1978b99f6ee19d 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 9f67c4081fd351..00000000000000 --- 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 433d7515968715..00000000000000 --- 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 00000000000000..4adec9082db21c --- /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 f9aadee65f9750..00000000000000 --- 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 eee7f91eac8c49..00000000000000 --- 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 2227f8ce7bd748..00000000000000 --- 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 9cf507bbb6a811..00000000000000 --- 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 96c0434e8776f2..00000000000000 --- 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 00000000000000..f964e4cae653f6 --- /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 00000000000000..332a029e6563d4 --- /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 2c3127b62a1566..e24defd5e6bf9e 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 22fac2e7726b7b..00000000000000 --- 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 d775a02c73a999..00000000000000 --- 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 469966ede6b3ad..00000000000000 --- 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 b023288fbad1fd..00000000000000 --- 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 974fd3d6cbc4b7..4e7621ec926b3f 100644 --- a/PCbuild/pyexpat.vcxproj +++ b/PCbuild/pyexpat.vcxproj @@ -35,185 +35,32 @@ + <_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) - 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) + $(PySourcePath)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 9fa93dd141e843..c27d6f5fc7e3d1 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 93d69d03a24a3c..32038678f1ff28 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 00000000000000..3dbc8065dac79e --- /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 6cb4ef5370c2a9..0ae4882ad16aca 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 bc8ff31ca22315..4c5cd1e680bfb4 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 3cce88e9f992be..4ecfd102c16a95 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) - - - /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 - - - $(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 - + + 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) - libc;%(IgnoreSpecificDefaultLibraries) + ws2_32.lib;%(AdditionalDependencies) 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 1214569eb98f2b..b0a209af42f5e4 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 96ea4215366ebb..aeee1b15bee9f2 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 91ef8d17fd5390..77bfeeba79fa70 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 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 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: + * 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 b460f018c3bee4..00000000000000 --- 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 9153e7e37ea54e..5041cd3ea25ef7 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 7c36d646b7244c..3cd0694baa5f30 100644 --- a/PCbuild/select.vcxproj +++ b/PCbuild/select.vcxproj @@ -37,186 +37,31 @@ {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 d3ee02cf756d84..00000000000000 --- 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 daf010dae04504..b6246fa78c546a 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 f6796b65091b8e..00000000000000 --- 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 00000000000000..bd7dd40a2a2d13 --- /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 dc426b365c28f0..8f2544a74e67d0 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 - - - Makefile - NotSet - - - Makefile - NotSet - - + + + Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet - - - Makefile - NotSet + $(tcltkDir) + $(OutDir)bin\$(tclDLLName) + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - <_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 c1694278528b62..abccd61171eb78 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 a177f5c14b42b6..74a6b84f573252 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 d760f87657f8a9..20749f719f5945 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 c9d5278684a30f..a3071fbf8eea29 100644 --- a/PCbuild/unicodedata.vcxproj +++ b/PCbuild/unicodedata.vcxproj @@ -39,168 +39,29 @@ 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 eb7dab50b882a4..00000000000000 --- 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 3b88a16c27c583..00000000000000 --- 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 cf518e99364216..540235af22e291 100644 --- a/PCbuild/winsound.vcxproj +++ b/PCbuild/winsound.vcxproj @@ -39,168 +39,29 @@ 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 9e6f5bb5af66f4..00000000000000 --- 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 abf41f968278d8..4484dbaa962486 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 d37ec7b31c47a5..83a5dfd101c7dc 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 f414c22e6a85e9..fc122737b24c6a 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 f4643a80ee81ef..39fec01d70b124 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 00000000000000..8ec410681efaa7 --- /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