1<?xml version="1.0" encoding="utf-8"?>
2<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3  <ItemGroup Label="ProjectConfigurations">
4    <ProjectConfiguration Include="Debug|ARM">
5      <Configuration>Debug</Configuration>
6      <Platform>ARM</Platform>
7    </ProjectConfiguration>
8    <ProjectConfiguration Include="Debug|ARM64">
9      <Configuration>Debug</Configuration>
10      <Platform>ARM64</Platform>
11    </ProjectConfiguration>
12    <ProjectConfiguration Include="Debug|Win32">
13      <Configuration>Debug</Configuration>
14      <Platform>Win32</Platform>
15    </ProjectConfiguration>
16    <ProjectConfiguration Include="Debug|x64">
17      <Configuration>Debug</Configuration>
18      <Platform>x64</Platform>
19    </ProjectConfiguration>
20    <ProjectConfiguration Include="PGInstrument|ARM">
21      <Configuration>PGInstrument</Configuration>
22      <Platform>ARM</Platform>
23    </ProjectConfiguration>
24    <ProjectConfiguration Include="PGInstrument|ARM64">
25      <Configuration>PGInstrument</Configuration>
26      <Platform>ARM64</Platform>
27    </ProjectConfiguration>
28    <ProjectConfiguration Include="PGInstrument|Win32">
29      <Configuration>PGInstrument</Configuration>
30      <Platform>Win32</Platform>
31    </ProjectConfiguration>
32    <ProjectConfiguration Include="PGInstrument|x64">
33      <Configuration>PGInstrument</Configuration>
34      <Platform>x64</Platform>
35    </ProjectConfiguration>
36    <ProjectConfiguration Include="PGUpdate|ARM">
37      <Configuration>PGUpdate</Configuration>
38      <Platform>ARM</Platform>
39    </ProjectConfiguration>
40    <ProjectConfiguration Include="PGUpdate|ARM64">
41      <Configuration>PGUpdate</Configuration>
42      <Platform>ARM64</Platform>
43    </ProjectConfiguration>
44    <ProjectConfiguration Include="PGUpdate|Win32">
45      <Configuration>PGUpdate</Configuration>
46      <Platform>Win32</Platform>
47    </ProjectConfiguration>
48    <ProjectConfiguration Include="PGUpdate|x64">
49      <Configuration>PGUpdate</Configuration>
50      <Platform>x64</Platform>
51    </ProjectConfiguration>
52    <ProjectConfiguration Include="Release|ARM">
53      <Configuration>Release</Configuration>
54      <Platform>ARM</Platform>
55    </ProjectConfiguration>
56    <ProjectConfiguration Include="Release|ARM64">
57      <Configuration>Release</Configuration>
58      <Platform>ARM64</Platform>
59    </ProjectConfiguration>
60    <ProjectConfiguration Include="Release|Win32">
61      <Configuration>Release</Configuration>
62      <Platform>Win32</Platform>
63    </ProjectConfiguration>
64    <ProjectConfiguration Include="Release|x64">
65      <Configuration>Release</Configuration>
66      <Platform>x64</Platform>
67    </ProjectConfiguration>
68  </ItemGroup>
69  <PropertyGroup Label="Globals">
70    <ProjectGuid>{B11D750F-CD1F-4A96-85CE-E69A5C5259F9}</ProjectGuid>
71  </PropertyGroup>
72  <Import Project="python.props" />
73  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
74  <PropertyGroup Label="Configuration">
75    <ConfigurationType>Application</ConfigurationType>
76    <UseOfMfc>false</UseOfMfc>
77    <CharacterSet>MultiByte</CharacterSet>
78  </PropertyGroup>
79  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
80  <ImportGroup Label="ExtensionSettings">
81  </ImportGroup>
82  <ImportGroup Label="PropertySheets">
83    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
84    <Import Project="pyproject.props" />
85    <Import Project="tcltk.props" />
86  </ImportGroup>
87  <PropertyGroup Label="UserMacros" />
88  <PropertyGroup>
89    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
90  </PropertyGroup>
91  <ItemDefinitionGroup>
92    <ClCompile>
93      <PreprocessorDefinitions>Py_BUILD_CORE;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
94    </ClCompile>
95    <Link>
96      <SubSystem>Console</SubSystem>
97      <StackReserveSize Condition="$(Configuration) != 'Debug'">2000000</StackReserveSize>
98      <StackReserveSize Condition="$(Configuration) == 'Debug'">8000000</StackReserveSize>
99    </Link>
100  </ItemDefinitionGroup>
101  <ItemGroup>
102    <None Include="..\PC\pycon.ico" />
103  </ItemGroup>
104  <ItemGroup>
105    <ResourceCompile Include="..\PC\python_exe.rc" />
106  </ItemGroup>
107  <ItemGroup>
108    <ClCompile Include="..\Programs\python.c" />
109  </ItemGroup>
110  <ItemGroup>
111    <ProjectReference Include="pythoncore.vcxproj">
112      <Project>{cf7ac3d1-e2df-41d2-bea6-1e2556cdea26}</Project>
113      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
114    </ProjectReference>
115  </ItemGroup>
116  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
117  <ImportGroup Label="ExtensionTargets">
118    <Import Project="regen.targets" />
119  </ImportGroup>
120  <Target Name="_TriggerPostRegen" AfterTargets="Build" DependsOnTargets="PostBuildRegen" />
121  <Target Name="GeneratePyBuildDirTxt" AfterTargets="Link">
122    <Message Text="Generating $(OutDir)pybuilddir.txt" />
123    <WriteLinesToFile File="$(OutDir)pybuilddir.txt" Lines="%0D%0A" Overwrite="true" />
124  </Target>
125  <Target Name="ValidateUcrtbase" AfterTargets="AfterBuild" Condition="$(Configuration) != 'PGInstrument' and $(Platform) != 'ARM' and $(Platform) != 'ARM64'">
126    <PropertyGroup>
127      <UcrtName>ucrtbase</UcrtName>
128      <UcrtName Condition="'$(Configuration)' == 'Debug'">ucrtbased</UcrtName>
129    </PropertyGroup>
130    <Exec Command='setlocal
131set PYTHONPATH=$(PySourcePath)Lib
132"$(OutDir)python$(PyDebugExt).exe" "$(PySourcePath)PC\validate_ucrtbase.py" $(UcrtName)' ContinueOnError="true" />
133  </Target>
134  <Target Name="GeneratePythonBat" AfterTargets="AfterBuild">
135    <PropertyGroup>
136      <_Content>@rem This script invokes the most recently built Python with all arguments
137@rem passed through to the interpreter.  This file is generated by the
138@rem build process and any changes *will* be thrown away by the next
139@rem rebuild.
140@rem This is only meant as a convenience for developing CPython
141@rem and using it outside of that context is ill-advised.
142@echo Running $(Configuration)^|$(Platform) interpreter...
143@setlocal
144@set PYTHONHOME=$(PySourcePath)
145@"$(OutDir)python$(PyDebugExt).exe" %*
146</_Content>
147      <_ExistingContent Condition="Exists('$(PySourcePath)python.bat')">$([System.IO.File]::ReadAllText('$(PySourcePath)python.bat'))</_ExistingContent>
148    </PropertyGroup>
149    <WriteLinesToFile File="$(PySourcePath)python.bat" Lines="$(_Content)" Overwrite="true" Condition="'$(_Content)' != '$(_ExistingContent)'" />
150  </Target>
151  <Target Name="CopyPGORT" AfterTargets="Link" Condition="$(Configuration) == 'PGInstrument'">
152    <ItemGroup>
153      <_PGORT Include="$(VCToolsInstallDir)bin\Hostx86\x86\pgort140.dll" Condition="$(Platform) == 'Win32'" />
154      <_PGORT Include="$(VCToolsInstallDir)bin\Hostx64\x64\pgort140.dll" Condition="$(Platform) == 'x64'" />
155      <_PGORT Include="$(VCToolsInstallDir)bin\arm64\pgort140.dll" Condition="$(Platform) == 'ARM64'" />
156    </ItemGroup>
157    <Warning Text="Unable to locate pgort140.dll for $(Platform)." Condition="@(_PGORT) == '' or !Exists(@(_PGORT))" />
158    <Copy SourceFiles="@(_PGORT)" DestinationFolder="$(OutDir)">
159      <Output TaskParameter="CopiedFiles" ItemName="FileWrites" />
160    </Copy>
161  </Target>
162</Project>
163