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 2343e9430e99..0af6671efd4e 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 d22a58af462c..86978cf9f7ae 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 595113bffdec..9c19899da570 100644 --- a/Lib/ctypes/util.py +++ b/Lib/ctypes/util.py @@ -19,6 +19,8 @@ if os.name == "nt": i = i + len(prefix) s, rest = sys.version[i:].split(" ", 1) majorVersion = int(s[:-2]) - 6 + if majorVersion >= 13: + majorVersion += 1 minorVersion = int(s[2:3]) / 10.0 # I don't think paths are affected by minor version in version 6 if majorVersion == 6: @@ -36,8 +38,10 @@ if os.name == "nt": return None if version <= 6: clibname = 'msvcrt' - else: + elif version <= 13: clibname = 'msvcr%d' % (version * 10) + else: + clibname = 'appcrt%d' % (version * 10) # If python was built with in debug mode import importlib.machinery diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py index 54ce13454fa3..605efbd68f13 100644 --- a/Lib/distutils/command/build_ext.py +++ b/Lib/distutils/command/build_ext.py @@ -209,7 +209,7 @@ class build_ext(Command): if MSVC_VERSION >= 9: # Use the .lib files for the correct architecture if self.plat_name == 'win32': - suffix = '' + suffix = 'win32' else: # win-amd64 or win-ia64 suffix = self.plat_name[4:] diff --git a/Lib/distutils/command/wininst-14.0-amd64.exe b/Lib/distutils/command/wininst-14.0-amd64.exe new file mode 100644 index 0000000000000000000000000000000000000000..9affe13039517798970f5e3a8d9f4d1d13e79464 GIT binary patch literal 84480 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%0D@n2#XGC;M~|E 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�uv^N_qiD3Fq<0ht>ard=2*;!=D}FcRc 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 R$;sq2au)fY&3?tt{{j9M=Gp)N literal 0 Hc-jL100001 diff --git a/Lib/distutils/msvc9compiler.py b/Lib/distutils/msvc9compiler.py index 9688f20019c8..d1374efe1391 100644 --- a/Lib/distutils/msvc9compiler.py +++ b/Lib/distutils/msvc9compiler.py @@ -179,6 +179,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/msvccompiler.py b/Lib/distutils/msvccompiler.py index 81166569619b..1048cd415939 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 a1452fe16748..573724ddd778 100644 --- a/Lib/distutils/sysconfig.py +++ b/Lib/distutils/sysconfig.py @@ -9,6 +9,7 @@ Written by: Fred L. Drake, Jr. Email: """ +import _imp import os import re import sys @@ -22,23 +23,15 @@ BASE_PREFIX = os.path.normpath(sys.base_prefix) BASE_EXEC_PREFIX = os.path.normpath(sys.base_exec_prefix) # Path to the base directory of the project. On Windows the binary may -# live in project/PCBuild9. If we're dealing with an x64 Windows build, -# it'll live in project/PCbuild/amd64. +# live in project/PCBuild/win32 or project/PCBuild/amd64. # set for cross builds if "_PYTHON_PROJECT_BASE" in os.environ: project_base = os.path.abspath(os.environ["_PYTHON_PROJECT_BASE"]) else: project_base = os.path.dirname(os.path.abspath(sys.executable)) -if os.name == "nt" and "pcbuild" in project_base[-8:].lower(): - project_base = os.path.abspath(os.path.join(project_base, os.path.pardir)) -# PC/VS7.1 -if os.name == "nt" and "\\pc\\v" in project_base[-10:].lower(): - project_base = os.path.abspath(os.path.join(project_base, os.path.pardir, - os.path.pardir)) -# PC/AMD64 -if os.name == "nt" and "\\pcbuild\\amd64" in project_base[-14:].lower(): - project_base = os.path.abspath(os.path.join(project_base, os.path.pardir, - os.path.pardir)) +if (os.name == 'nt' and + project_base.lower().endswith(('\\pcbuild\\win32', '\\pcbuild\\amd64'))): + project_base = os.path.dirname(os.path.dirname(project_base)) # python_build: (Boolean) if true, we're either building Python or # building an extension with an un-installed Python, so we use @@ -51,11 +44,9 @@ def _is_python_source_dir(d): return True return False _sys_home = getattr(sys, '_home', None) -if _sys_home and os.name == 'nt' and \ - _sys_home.lower().endswith(('pcbuild', 'pcbuild\\amd64')): - _sys_home = os.path.dirname(_sys_home) - if _sys_home.endswith('pcbuild'): # must be amd64 - _sys_home = os.path.dirname(_sys_home) +if (_sys_home and os.name == 'nt' and + _sys_home.lower().endswith(('\\pcbuild\\win32', '\\pcbuild\\amd64'))): + _sys_home = os.path.dirname(os.path.dirname(_sys_home)) def _python_build(): if _sys_home: return _is_python_source_dir(_sys_home) @@ -468,7 +459,7 @@ def _init_nt(): # XXX hmmm.. a normal install puts include files here g['INCLUDEPY'] = get_python_inc(plat_specific=0) - g['EXT_SUFFIX'] = '.pyd' + g['EXT_SUFFIX'] = _imp.extension_suffixes()[0] g['EXE'] = ".exe" g['VERSION'] = get_python_version().replace(".", "") g['BINDIR'] = os.path.dirname(os.path.abspath(sys.executable)) diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py index dbf77672054b..c5f541b3d554 100644 --- a/Lib/sysconfig.py +++ b/Lib/sysconfig.py @@ -109,13 +109,8 @@ else: # unable to retrieve the real program name _PROJECT_BASE = _safe_realpath(os.getcwd()) -if os.name == "nt" and "pcbuild" in _PROJECT_BASE[-8:].lower(): - _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir)) -# PC/VS7.1 -if os.name == "nt" and "\\pc\\v" in _PROJECT_BASE[-10:].lower(): - _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir, pardir)) -# PC/AMD64 -if os.name == "nt" and "\\pcbuild\\amd64" in _PROJECT_BASE[-14:].lower(): +if (os.name == 'nt' and + _PROJECT_BASE.lower().endswith(('\\pcbuild\\win32', '\\pcbuild\\amd64'))): _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir, pardir)) # set for cross builds @@ -129,11 +124,9 @@ def _is_python_source_dir(d): return False _sys_home = getattr(sys, '_home', None) -if _sys_home and os.name == 'nt' and \ - _sys_home.lower().endswith(('pcbuild', 'pcbuild\\amd64')): - _sys_home = os.path.dirname(_sys_home) - if _sys_home.endswith('pcbuild'): # must be amd64 - _sys_home = os.path.dirname(_sys_home) +if (_sys_home and os.name == 'nt' and + _sys_home.lower().endswith(('\\pcbuild\\win32', '\\pcbuild\\amd64'))): + _sys_home = os.path.dirname(os.path.dirname(_sys_home)) def is_python_build(check_home=False): if check_home and _sys_home: return _is_python_source_dir(_sys_home) diff --git a/Misc/NEWS b/Misc/NEWS index 299f432fe4a4..9b000d697313 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 bd7cd8ad483d..d8e244133184 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 68bfeb4f1949..94cf7738e482 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 1f07bcc90fdd..7f5f3149afdb 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 7ceb8c7f089b..000000000000 --- 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 8e5cba14fc8d..000000000000 --- 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 70335462113d..000000000000 --- 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 b9fabb0cb95f..000000000000 --- 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 f9d7375c0c1f..000000000000 --- 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 77417ec0f5f4..000000000000 --- 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 7c6003f10e2a..000000000000 --- 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 cb230e10d0dc..000000000000 --- 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 fb3d1e70bcc6..000000000000 --- 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 ff1f6d4e3f57..000000000000 --- 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 82c57ae25fd7..000000000000 --- 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 b47dc2740c5b..000000000000 --- 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 03377e17721a..000000000000 --- 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 453300a64271..000000000000 --- 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 14d910dfdf51..000000000000 --- 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 5163317575c6..000000000000 --- 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 b8cc7ad6a875..000000000000 --- 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 bc643cb6be57..000000000000 --- 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 dbc94255b7af..000000000000 --- 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 a34107aab7a2..000000000000 --- 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 fb4a64a97182..000000000000 --- 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 924065db42bc..000000000000 --- 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 0a1fd28bc41d..000000000000 --- 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 ba7f69cfadbf..000000000000 --- 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 99c117b15267..000000000000 --- 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 26cfc2d0dd9c..000000000000 --- 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 34c21e15c5e6..000000000000 --- 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 313a30b782fd..000000000000 --- 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 a8d2cd752728..000000000000 --- 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 e2354bbe7777..000000000000 --- 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 b07de2183ff1..000000000000 --- 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 ed7333bc5677..000000000000 --- 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 cf60470ce2c3..000000000000 --- 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 7f5c04b9b554..000000000000 --- 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 08def90651b0..000000000000 --- 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 637fd972ce0e..000000000000 --- 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 ef8c328c6992..000000000000 --- 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 b502df5ace36..000000000000 --- 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 d30e877024f6..000000000000 --- 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 b66ff72228fb..000000000000 --- 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 47dbf29322c9..000000000000 --- 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 d06f470cebad..000000000000 --- 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 a3aaad65836e..000000000000 --- 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 31a7805fd1d0..50ff15cdddf0 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 aec8eda2be85..0249d9ff542f 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 a0232d23c94e..bb2eb34a67bf 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 d018b484b0a9..0071bdb2ba8d 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 35ba3c2534d5..0611709e4148 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 9cdc4c5a9525..bd8844f5b421 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 df5824a6635e..634b8d6dcbca 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 5257d5e48e33..45fda3861e81 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 abe124182933..000000000000 --- 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 609cb9d22f8c..000000000000 --- 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 6501da0adb9b..000000000000 --- 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 52bf8234be88..33ddce7d0b9a 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 60f231e513ef..8639dc33d9ab 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 9387e54b3a8e..64c3dcde14fa 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 202cb1f42bbb..68b8e2971d1b 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 35e299b8867a..c1260b53f3ec 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 98ba81db234a..943bfb099034 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 7802ab30ae22..414bd8bebb82 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 e133e020e088..e331a67585ea 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 52433ed6969e..d82b266902a9 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 ac25c804adde..af50494ebde6 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 1323d169df34..f5ba7bff7627 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 b4bb568538a5..1eb92b67dc24 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 d0ee72fb5a13..55301ea9dc29 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 63836e9261cc..03b6f7558eb4 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 ed35d5bc0c31..5e889d0de00f 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 7378794b3d9e..8594a0696602 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 e1265f684147..8cbf1251c365 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 e99a7e4f3fe0..dbf44e6e9414 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 57b7b5cb1eb5..f0e4d9f87465 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 84984ff2f704..cec042c202c6 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 9218d63933e7..e1408a18ea3e 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 49276a2e41e2..f7f9cd87915a 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 838f6ef76326..2846144ff980 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 f5135836027c..5988c0a268db 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 000000000000..6144c715f64e --- /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 54f3c3254200..000000000000 --- 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 f0268a9135c7..9d4c9d1c32f7 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 dcb0485af7d3..1978b99f6ee1 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 Hc-jL100001 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 9f67c4081fd3..000000000000 --- 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 433d75159687..000000000000 --- 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 000000000000..4adec9082db2 --- /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 f9aadee65f97..000000000000 --- 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 eee7f91eac8c..000000000000 --- 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 2227f8ce7bd7..000000000000 --- 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 9cf507bbb6a8..000000000000 --- 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 96c0434e8776..000000000000 --- 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 000000000000..f964e4cae653 --- /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 000000000000..332a029e6563 --- /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 2c3127b62a15..e24defd5e6bf 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 22fac2e7726b..000000000000 --- 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 d775a02c73a9..000000000000 --- 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 469966ede6b3..000000000000 --- 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 b023288fbad1..000000000000 --- 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 974fd3d6cbc4..4e7621ec926b 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 9fa93dd141e8..c27d6f5fc7e3 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 93d69d03a24a..32038678f1ff 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 000000000000..3dbc8065dac7 --- /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 6cb4ef5370c2..0ae4882ad16a 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 bc8ff31ca223..4c5cd1e680bf 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 3cce88e9f992..4ecfd102c16a 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 1214569eb98f..b0a209af42f5 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 96ea4215366e..aeee1b15bee9 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 91ef8d17fd53..77bfeeba79fa 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 b460f018c3be..000000000000 --- 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 9153e7e37ea5..5041cd3ea25e 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 7c36d646b724..3cd0694baa5f 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 d3ee02cf756d..000000000000 --- 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 daf010dae045..b6246fa78c54 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 f6796b65091b..000000000000 --- 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 000000000000..bd7dd40a2a2d --- /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 dc426b365c28..8f2544a74e67 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 c1694278528b..abccd61171eb 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 a177f5c14b42..74a6b84f5732 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 d760f87657f8..20749f719f59 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 c9d5278684a3..a3071fbf8eea 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 eb7dab50b882..000000000000 --- 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 3b88a16c27c5..000000000000 --- 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 cf518e993642..540235af22e2 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 9e6f5bb5af66..000000000000 --- 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 abf41f968278..4484dbaa9624 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 d37ec7b31c47..83a5dfd101c7 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 f414c22e6a85..fc122737b24c 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 f4643a80ee81..39fec01d70b1 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 000000000000..8ec410681efa --- /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 -- 2.47.3