Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
5db5a47
Link against python3t.lib
encukou Apr 17, 2026
1153d48
Add ABI3T_COMPAT_DLLNAME
encukou Apr 21, 2026
fda3900
Build abi3t-compat\python3t.dll
encukou Apr 21, 2026
96676cf
Add abi3tcompat to MSI installer
encukou Apr 22, 2026
32083dd
minimal fix for build errors on Petr's PR
ngoldbaum Apr 27, 2026
e25d7ff
Merge in the main branch
encukou Apr 28, 2026
eb61469
Build python3.dll & python3t.dll separately, with fixed names
encukou Apr 28, 2026
92ae703
Don't use !(bindpath.build)
encukou Apr 28, 2026
3dc7bc1
Apply suggestions from code review
encukou Apr 29, 2026
b64ad2c
Look for python3t.dll without the directory too
encukou Apr 29, 2026
9dd8cae
Merge in the main branch
encukou Apr 29, 2026
4bc0289
PC/layout: Include python3t in GIL-ful builds
encukou Apr 29, 2026
8b2981e
Build in the abi3t-compat directory
encukou Apr 30, 2026
1cb147a
Build FT to separate directory. Start updating everything that depend…
zooba Apr 30, 2026
555d016
Fix bindpath and simplify some settings
zooba May 1, 2026
90681fc
Fix zlib-ng generator and MSI paths
zooba May 1, 2026
4bf0990
Add NEWS and update rt.bat
zooba May 1, 2026
8529d44
Merge from main
zooba May 1, 2026
ee8d037
Fix venv
zooba May 1, 2026
b40f782
Revert unneeded changes
zooba May 1, 2026
65d7291
Fix version check for testing
zooba May 1, 2026
095886a
Fix comparison
zooba May 1, 2026
d7eb396
Fix version check
zooba May 1, 2026
de2da65
Merge from main
zooba May 1, 2026
185a6d7
Update tests that build extensions
zooba May 4, 2026
57871e9
Satisfy linter
zooba May 4, 2026
ec2bf28
Maybe satisfy mypy
zooba May 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Include/pyabi.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@
*
* (Don't use Py_TARGET_ABI3T directly. It's currently only used to set these
* 2 macros, and defined for users' convenience.)
*
* This logic is currently partially duplicated in PC/pyconfig.h.
*/
#if defined(Py_LIMITED_API) && defined(Py_GIL_DISABLED) \
&& !defined(Py_TARGET_ABI3T)
Expand Down
5 changes: 5 additions & 0 deletions Lib/test/test_cext/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
import shlex
import shutil
import subprocess
import sysconfig
import sys
import unittest
from test import support

Expand Down Expand Up @@ -62,6 +64,9 @@ def run_cmd(operation, cmd):
env['CPYTHON_TEST_LIMITED'] = '1'
if abi3t:
env['CPYTHON_TEST_ABI3T'] = '1'
if support.MS_WINDOWS and sysconfig.is_python_build():
env['CPYTHON_EXTRA_INCDIRS'] = os.path.split(sysconfig.get_config_h_filename())[0]
env['CPYTHON_EXTRA_LIBDIRS'] = os.path.split(sys.executable)[0]
env['CPYTHON_TEST_EXT_NAME'] = extension_name
env['TEST_INTERNAL_C_API'] = str(int(self.TEST_INTERNAL_C_API))
if support.verbose:
Expand Down
22 changes: 10 additions & 12 deletions Lib/test/test_cext/setup.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# gh-91321: Build a basic C test extension to check that the Python C API is
# compatible with C and does not emit C compiler warnings.
import os
import platform
import shlex
import sys
import sysconfig
Expand Down Expand Up @@ -66,6 +65,8 @@ def main():
limited = bool(os.environ.get("CPYTHON_TEST_LIMITED", ""))
abi3t = bool(os.environ.get("CPYTHON_TEST_ABI3T", ""))
internal = bool(int(os.environ.get("TEST_INTERNAL_C_API", "0")))
incdirs = os.environ.get("CPYTHON_EXTRA_INCDIRS", "")
libdirs = os.environ.get("CPYTHON_EXTRA_LIBDIRS", "")

sources = [SOURCE]

Expand Down Expand Up @@ -106,19 +107,16 @@ def main():
if internal:
cflags.append('-DTEST_INTERNAL_C_API=1')

# On Windows, add PCbuild\amd64\ to include and library directories
# Add additional include and library directories, typically for in-tree
# testing where not all directories are inferred
include_dirs = []
library_dirs = []
if support.MS_WINDOWS:
srcdir = sysconfig.get_config_var('srcdir')
machine = platform.uname().machine
pcbuild = os.path.join(srcdir, 'PCbuild', machine)
if os.path.exists(pcbuild):
# pyconfig.h is generated in PCbuild\amd64\
include_dirs.append(pcbuild)
# python313.lib is generated in PCbuild\amd64\
library_dirs.append(pcbuild)
print(f"Add PCbuild directory: {pcbuild}")
if incdirs:
print("Add incdirs:", incdirs)
include_dirs.extend(incdirs.split(os.pathsep))
if libdirs:
print("Add libdirs:", libdirs)
library_dirs.extend(libdirs.split(os.pathsep))

# Display information to help debugging
for env_name in ('CC', 'CFLAGS', 'CPPFLAGS'):
Expand Down
4 changes: 4 additions & 0 deletions Lib/test/test_cppext/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import shutil
import subprocess
import sys
import sysconfig
import unittest
from test import support

Expand Down Expand Up @@ -50,6 +51,9 @@ def run_cmd(operation, cmd):
env['CPYTHON_TEST_CPP_STD'] = std
if limited:
env['CPYTHON_TEST_LIMITED'] = '1'
if support.MS_WINDOWS and sysconfig.is_python_build():
env['CPYTHON_EXTRA_INCDIRS'] = os.path.split(sysconfig.get_config_h_filename())[0]
env['CPYTHON_EXTRA_LIBDIRS'] = os.path.split(sys.executable)[0]
env['CPYTHON_TEST_EXT_NAME'] = extension_name
env['TEST_INTERNAL_C_API'] = str(int(self.TEST_INTERNAL_C_API))
if extra_cflags:
Expand Down
22 changes: 10 additions & 12 deletions Lib/test/test_cppext/setup.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# gh-91321: Build a basic C++ test extension to check that the Python C API is
# compatible with C++ and does not emit C++ compiler warnings.
import os
import platform
import shlex
import sys
import sysconfig
Expand Down Expand Up @@ -48,6 +47,8 @@ def main():
module_name = os.environ["CPYTHON_TEST_EXT_NAME"]
limited = bool(os.environ.get("CPYTHON_TEST_LIMITED", ""))
internal = bool(int(os.environ.get("TEST_INTERNAL_C_API", "0")))
incdirs = os.environ.get("CPYTHON_EXTRA_INCDIRS", "")
libdirs = os.environ.get("CPYTHON_EXTRA_LIBDIRS", "")

cppflags = list(CPPFLAGS)
cppflags.append(f'-DMODULE_NAME={module_name}')
Expand Down Expand Up @@ -90,19 +91,16 @@ def main():
if extra_cflags:
cppflags.extend(shlex.split(extra_cflags))

# On Windows, add PCbuild\amd64\ to include and library directories
# Add additional include and library directories, typically for in-tree
# testing where not all directories are inferred
include_dirs = []
library_dirs = []
if support.MS_WINDOWS:
srcdir = sysconfig.get_config_var('srcdir')
machine = platform.uname().machine
pcbuild = os.path.join(srcdir, 'PCbuild', machine)
if os.path.exists(pcbuild):
# pyconfig.h is generated in PCbuild\amd64\
include_dirs.append(pcbuild)
# python313.lib is generated in PCbuild\amd64\
library_dirs.append(pcbuild)
print(f"Add PCbuild directory: {pcbuild}")
if incdirs:
print("Add incdirs:", incdirs)
include_dirs.extend(incdirs.split(os.pathsep))
if libdirs:
print("Add libdirs:", libdirs)
library_dirs.extend(libdirs.split(os.pathsep))

# Display information to help debugging
for env_name in ('CC', 'CXX', 'CFLAGS', 'CPPFLAGS', 'CXXFLAGS'):
Expand Down
3 changes: 3 additions & 0 deletions Lib/venv/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -358,6 +358,9 @@ def setup_python(self, context):
exe_t = f'3.{sys.version_info[1]}t'
python_exe = os.path.join(dirname, f'python{exe_t}{exe_d}.exe')
pythonw_exe = os.path.join(dirname, f'pythonw{exe_t}{exe_d}.exe')
if not os.path.isfile(python_exe):
python_exe = os.path.join(dirname, f'python{exe_d}.exe')
pythonw_exe = os.path.join(dirname, f'pythonw{exe_d}.exe')
link_sources = {
'python.exe': python_exe,
f'python{exe_d}.exe': python_exe,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Windows free-threaded builds now output to a different default path with
default filenames, for example, ``PCbuild/amd64t/python.exe`` rather than
``PCbuild/amd64/python3.15t.exe``. The ``PC/layout`` script has been updated
to ensure compatibility of generated layouts.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Non-freethreaded builds on Windows now support extensions linked to
``python3t.dll``, and will include a copy of that library in normal installs
that references the non-freethreaded runtime.
12 changes: 9 additions & 3 deletions PC/layout/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,10 @@ def get_tcltk_lib(ns):
def get_layout(ns):
def in_build(f, dest="", new_name=None, no_lib=False):
n, _, x = f.rpartition(".")
n = new_name or n
if new_name and new_name.endswith(f".{x}"):
n = new_name.rpartition(".")[0]
else:
n = new_name or n
src = ns.build / f
if ns.debug and src not in REQUIRED_DLLS:
if not "_d." in src.name:
Expand Down Expand Up @@ -161,11 +164,12 @@ def in_build(f, dest="", new_name=None, no_lib=False):
source = "python_uwp.exe"
sourcew = "pythonw_uwp.exe"
elif ns.include_freethreaded:
source = "python{}t.exe".format(VER_DOT)
sourcew = "pythonw{}t.exe".format(VER_DOT)
if not ns.include_alias:
alias = []
aliasw = []
if (VER_MAJOR, VER_MINOR, VER_MICRO, VER_FIELD4) < (3, 15, 0, 0xB0):
source = "python{}t.exe".format(VER_DOT)
sourcew = "pythonw{}t.exe".format(VER_DOT)
alias.extend([
"python{}t".format(VER_DOT),
"python{}t".format(VER_MAJOR) if ns.include_alias3 else None,
Expand Down Expand Up @@ -196,6 +200,8 @@ def in_build(f, dest="", new_name=None, no_lib=False):
yield from in_build(FREETHREADED_PYTHON_STABLE_DLL_NAME)
else:
yield from in_build(PYTHON_STABLE_DLL_NAME)
if (VER_MAJOR, VER_MINOR, VER_MICRO, VER_FIELD4) >= (3, 15, 0, 0xB0):
yield from in_build(FREETHREADED_PYTHON_STABLE_DLL_NAME)

found_any = False
for dest, src in rglob(ns.build, "vcruntime*.dll"):
Expand Down
4 changes: 3 additions & 1 deletion PC/pyconfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -331,14 +331,16 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
# if defined(Py_GIL_DISABLED)
# if defined(Py_DEBUG)
# pragma comment(lib,"python315t_d.lib")
# elif defined(Py_LIMITED_API)
# elif defined(Py_LIMITED_API) || defined(Py_TARGET_ABI3T)
# pragma comment(lib,"python3t.lib")
# else
# pragma comment(lib,"python315t.lib")
# endif /* Py_DEBUG */
# else /* Py_GIL_DISABLED */
# if defined(Py_DEBUG)
# pragma comment(lib,"python315_d.lib")
# elif defined(Py_TARGET_ABI3T)
# pragma comment(lib,"python3t.lib")
# elif defined(Py_LIMITED_API)
# pragma comment(lib,"python3.lib")
# else
Expand Down
4 changes: 4 additions & 0 deletions PCbuild/_remote_debugging.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,10 @@
<Project>{885d4898-d08d-4091-9c40-c700cfe3fc5a}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="python3tdll.vcxproj">
<Project>{947BB5F5-6025-4A4F-8182-1B175469F8D2}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
Expand Down
4 changes: 4 additions & 0 deletions PCbuild/_testcapi.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,10 @@
<Project>{885d4898-d08d-4091-9c40-c700cfe3fc5a}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="python3tdll.vcxproj">
<Project>{947BB5F5-6025-4A4F-8182-1B175469F8D2}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
Expand Down
4 changes: 4 additions & 0 deletions PCbuild/_testlimitedcapi.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,10 @@
<Project>{885d4898-d08d-4091-9c40-c700cfe3fc5a}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="python3tdll.vcxproj">
<Project>{947BB5F5-6025-4A4F-8182-1B175469F8D2}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
Expand Down
2 changes: 2 additions & 0 deletions PCbuild/pcbuild.proj
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@
</Projects>
<!-- python3.dll -->
<Projects Include="python3dll.vcxproj" />
<!-- python3t.dll -->
<Projects Include="python3tdll.vcxproj" />
<!-- py[w].exe -->
<Projects Include="pylauncher.vcxproj;pywlauncher.vcxproj" />
<!-- pyshellext.dll -->
Expand Down
69 changes: 69 additions & 0 deletions PCbuild/pcbuild.sln
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python", "python.vcxproj",
{78D80A15-BD8C-44E2-B49E-1F05B0A0A687} = {78D80A15-BD8C-44E2-B49E-1F05B0A0A687}
{86937F53-C189-40EF-8CE8-8759D8E7D480} = {86937F53-C189-40EF-8CE8-8759D8E7D480}
{885D4898-D08D-4091-9C40-C700CFE3FC5A} = {885D4898-D08D-4091-9C40-C700CFE3FC5A}
{947BB5F5-6025-4A4F-8182-1B175469F8D2} = {947BB5F5-6025-4A4F-8182-1B175469F8D2}
{900342D7-516A-4469-B1AD-59A66E49A25F} = {900342D7-516A-4469-B1AD-59A66E49A25F}
{9E48B300-37D1-11DD-8C41-005056C00008} = {9E48B300-37D1-11DD-8C41-005056C00008}
{9EC7190A-249F-4180-A900-548FDCF3055F} = {9EC7190A-249F-4180-A900-548FDCF3055F}
Expand Down Expand Up @@ -104,6 +105,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_multiprocessing", "_multip
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python3dll", "python3dll.vcxproj", "{885D4898-D08D-4091-9C40-C700CFE3FC5A}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python3tdll", "python3tdll.vcxproj", "{947BB5F5-6025-4A4F-8182-1B175469F8D2}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xxlimited", "xxlimited.vcxproj", "{F749B822-B489-4CA5-A3AD-CE078F5F338A}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testbuffer", "_testbuffer.vcxproj", "{A2697BD3-28C1-4AEC-9106-8B748639FD16}"
Expand Down Expand Up @@ -168,6 +171,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_remote_debugging", "_remot
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_zstd", "_zstd.vcxproj", "{07029B86-F3E9-443E-86FB-78AA6D47FED1}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xxlimited_35", "xxlimited_35.vcxproj", "{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM = Debug|ARM
Expand Down Expand Up @@ -984,6 +989,38 @@ Global
{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
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.Debug|ARM.ActiveCfg = Debug|ARM
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.Debug|ARM.Build.0 = Debug|ARM
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.Debug|ARM64.ActiveCfg = Debug|ARM64
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.Debug|ARM64.Build.0 = Debug|ARM64
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.Debug|Win32.ActiveCfg = Debug|Win32
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.Debug|Win32.Build.0 = Debug|Win32
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.Debug|x64.ActiveCfg = Debug|x64
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.Debug|x64.Build.0 = Debug|x64
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.PGInstrument|ARM.ActiveCfg = PGInstrument|ARM
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.PGInstrument|ARM.Build.0 = PGInstrument|ARM
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.PGInstrument|ARM64.ActiveCfg = PGInstrument|ARM64
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.PGInstrument|ARM64.Build.0 = PGInstrument|ARM64
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.PGInstrument|Win32.ActiveCfg = Debug|Win32
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.PGInstrument|Win32.Build.0 = Debug|Win32
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.PGInstrument|x64.ActiveCfg = Debug|x64
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.PGInstrument|x64.Build.0 = Debug|x64
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.PGUpdate|ARM.ActiveCfg = PGUpdate|ARM
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.PGUpdate|ARM.Build.0 = PGUpdate|ARM
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.PGUpdate|ARM64.ActiveCfg = PGUpdate|ARM64
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.PGUpdate|ARM64.Build.0 = PGUpdate|ARM64
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.PGUpdate|Win32.ActiveCfg = Debug|Win32
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.PGUpdate|Win32.Build.0 = Debug|Win32
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.PGUpdate|x64.ActiveCfg = Debug|x64
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.PGUpdate|x64.Build.0 = Debug|x64
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.Release|ARM.ActiveCfg = Release|ARM
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.Release|ARM.Build.0 = Release|ARM
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.Release|ARM64.ActiveCfg = Release|ARM64
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.Release|ARM64.Build.0 = Release|ARM64
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.Release|Win32.ActiveCfg = Release|Win32
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.Release|Win32.Build.0 = Release|Win32
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.Release|x64.ActiveCfg = Release|x64
{947BB5F5-6025-4A4F-8182-1B175469F8D2}.Release|x64.Build.0 = Release|x64
{F749B822-B489-4CA5-A3AD-CE078F5F338A}.Debug|ARM.ActiveCfg = Debug|ARM
{F749B822-B489-4CA5-A3AD-CE078F5F338A}.Debug|ARM64.ActiveCfg = Debug|ARM64
{F749B822-B489-4CA5-A3AD-CE078F5F338A}.Debug|Win32.ActiveCfg = Release|Win32
Expand Down Expand Up @@ -1785,6 +1822,38 @@ Global
{07029B86-F3E9-443E-86FB-78AA6D47FED1}.Release|Win32.Build.0 = Release|Win32
{07029B86-F3E9-443E-86FB-78AA6D47FED1}.Release|x64.ActiveCfg = Release|x64
{07029B86-F3E9-443E-86FB-78AA6D47FED1}.Release|x64.Build.0 = Release|x64
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.Debug|ARM.ActiveCfg = Debug|ARM
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.Debug|ARM.Build.0 = Debug|ARM
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.Debug|ARM64.ActiveCfg = Debug|ARM64
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.Debug|ARM64.Build.0 = Debug|ARM64
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.Debug|Win32.ActiveCfg = Debug|Win32
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.Debug|Win32.Build.0 = Debug|Win32
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.Debug|x64.ActiveCfg = Debug|x64
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.Debug|x64.Build.0 = Debug|x64
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.PGInstrument|ARM.ActiveCfg = PGInstrument|ARM
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.PGInstrument|ARM.Build.0 = PGInstrument|ARM
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.PGInstrument|ARM64.ActiveCfg = PGInstrument|ARM64
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.PGInstrument|ARM64.Build.0 = PGInstrument|ARM64
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.PGInstrument|x64.Build.0 = PGInstrument|x64
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.PGUpdate|ARM.ActiveCfg = PGUpdate|ARM
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.PGUpdate|ARM.Build.0 = PGUpdate|ARM
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.PGUpdate|ARM64.ActiveCfg = PGUpdate|ARM64
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.PGUpdate|ARM64.Build.0 = PGUpdate|ARM64
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.PGUpdate|x64.Build.0 = PGUpdate|x64
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.Release|ARM.ActiveCfg = Release|ARM
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.Release|ARM.Build.0 = Release|ARM
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.Release|ARM64.ActiveCfg = Release|ARM64
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.Release|ARM64.Build.0 = Release|ARM64
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.Release|Win32.ActiveCfg = Release|Win32
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.Release|Win32.Build.0 = Release|Win32
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.Release|x64.ActiveCfg = Release|x64
{FB868EA7-F93A-4D9B-BE78-CA4E9BA14FFF}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
Loading
Loading