115 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			XML
		
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			XML
		
	
	
	
| <?xml version="1.0" encoding="utf-8"?>
 | |
| <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 | |
|   <Target Name="_SetPythonForBuild">
 | |
|     <PropertyGroup>
 | |
|       <PythonForBuild>$(PYTHON)</PythonForBuild>
 | |
|     </PropertyGroup>
 | |
|   </Target>
 | |
| 
 | |
|   <ItemGroup>
 | |
|     <_PegenSources Include="$(PySourcePath)Grammar\python.gram;$(PySourcePath)Grammar\Tokens" />
 | |
|     <_PegenOutputs Include="$(PySourcePath)Parser\parser.c" />
 | |
|     <_ASTSources Include="$(PySourcePath)Parser\Python.asdl" />
 | |
|     <_ASTOutputs Include="$(PySourcePath)Include\internal\pycore_ast.h">
 | |
|       <Argument>-H</Argument>
 | |
|     </_ASTOutputs>
 | |
|     <_ASTOutputs Include="$(PySourcePath)Include\internal\pycore_ast_state.h">
 | |
|       <Argument>-I</Argument>
 | |
|     </_ASTOutputs>
 | |
|     <_ASTOutputs Include="$(PySourcePath)Python\Python-ast.c">
 | |
|       <Argument>-C</Argument>
 | |
|     </_ASTOutputs>
 | |
|     <_OpcodeSources Include="$(PySourcePath)Tools\scripts\generate_opcode_h.py;$(PySourcePath)Lib\opcode.py" />
 | |
|     <_OpcodeOutputs Include="$(PySourcePath)Include\opcode.h;$(PySourcePath)Python\opcode_targets.h" />
 | |
|     <_TokenSources Include="$(PySourcePath)Grammar\Tokens" />
 | |
|     <_TokenOutputs Include="$(PySourcePath)Doc\library\token-list.inc">
 | |
|       <Format>rst</Format>
 | |
|     </_TokenOutputs>
 | |
|     <_TokenOutputs Include="$(PySourcePath)Include\token.h">
 | |
|       <Format>h</Format>
 | |
|     </_TokenOutputs>
 | |
|     <_TokenOutputs Include="$(PySourcePath)Parser\token.c">
 | |
|       <Format>c</Format>
 | |
|     </_TokenOutputs>
 | |
|     <_TokenOutputs Include="$(PySourcePath)Lib\token.py">
 | |
|       <Format>py</Format>
 | |
|     </_TokenOutputs>
 | |
|     <_KeywordSources Include="$(PySourcePath)Grammar\python.gram;$(PySourcePath)Grammar\Tokens" />
 | |
|     <_KeywordOutputs Include="$(PySourcePath)Lib\keyword.py" />
 | |
|   </ItemGroup>
 | |
| 
 | |
|   <Target Name="_TouchRegenSources" Condition="$(ForceRegen) == 'true'">
 | |
|     <Message Text="Touching source files to force regeneration" Importance="high" />
 | |
|     <Touch Files="@(_PegenSources);@(_ASTSources);@(_OpcodeSources);@(_TokenSources);@(_KeywordOutputs)"
 | |
|            AlwaysCreate="False" />
 | |
|   </Target>
 | |
| 
 | |
|   <Target Name="_RegenPegen" Inputs="@(_PegenSources)" Outputs="@(_PegenOutputs)">
 | |
|     <Message Text="Regenerate @(_PegenOutputs->'%(Filename)%(Extension)',' ')" Importance="high" />
 | |
|     <!-- Specify python.gram with POSIX-like path because the argument gets written into the file verbatim -->
 | |
|     <Exec Command="set PYTHONPATH=Tools\peg_generator%0D%0A$(PythonForBuild) -m pegen -q c ./Grammar/python.gram Grammar\Tokens -o Parser\parser.c"
 | |
|           WorkingDirectory="$(PySourcePath)" />
 | |
|   </Target>
 | |
| 
 | |
|   <Target Name="_RegenAST_H" Inputs="@(_ASTSources)" Outputs="@(_ASTOutputs)">
 | |
|     <Message Text="Regenerate @(_ASTOutputs->'%(Filename)%(Extension)',' ')" Importance="high" />
 | |
|     <Exec Command="$(PythonForBuild) Parser\asdl_c.py Parser\Python.asdl @(_ASTOutputs->'%(Argument) "%(Identity)"',' ')"
 | |
|           WorkingDirectory="$(PySourcePath)" />
 | |
|   </Target>
 | |
| 
 | |
|   <Target Name="_RegenOpcodes" Inputs="@(_OpcodeSources)" Outputs="@(_OpcodeOutputs)">
 | |
|     <Message Text="Regenerate @(_OpcodeOutputs->'%(Filename)%(Extension)',' ')" Importance="high" />
 | |
|     <Exec Command="$(PythonForBuild) Tools\scripts\generate_opcode_h.py Lib\opcode.py Include\opcode.h"
 | |
|           WorkingDirectory="$(PySourcePath)" />
 | |
|     <Exec Command="$(PythonForBuild) Python\makeopcodetargets.py Python\opcode_targets.h"
 | |
|           WorkingDirectory="$(PySourcePath)" />
 | |
|   </Target>
 | |
| 
 | |
|   <Target Name="_RegenTokens" Inputs="@(_TokenSources)" Outputs="@(_TokenOutputs)">
 | |
|     <Message Text="Regenerate @(_TokenOutputs->'%(Filename)%(Extension)',' ')" Importance="high" />
 | |
|     <Exec Command="$(PythonForBuild) Tools\scripts\generate_token.py %(_TokenOutputs.Format) Grammar\Tokens "%(_TokenOutputs.Identity)""
 | |
|           WorkingDirectory="$(PySourcePath)" />
 | |
|     <Touch Files="@(_TokenOutputs)" />
 | |
|   </Target>
 | |
| 
 | |
|   <Target Name="_RegenKeywords" Inputs="@(_KeywordSources)" Outputs="@(_KeywordOutputs)">
 | |
|     <Message Text="Regenerate @(_KeywordOutputs->'%(Filename)%(Extension)',' ')" Importance="high" />
 | |
|     <Exec Command="set PYTHONPATH=Tools\peg_generator%0D%0A$(PythonForBuild) -m pegen.keywordgen Grammar\python.gram Grammar\Tokens Lib\keyword.py"
 | |
|           WorkingDirectory="$(PySourcePath)" />
 | |
|   </Target>
 | |
| 
 | |
|   <Target Name="Regen"
 | |
|           Condition="$(Configuration) != 'PGUpdate'"
 | |
|           DependsOnTargets="_TouchRegenSources;_RegenPegen;_RegenAST_H;_RegenOpcodes;_RegenTokens;_RegenKeywords">
 | |
|     <Message Text="Generated sources are up to date" Importance="high" />
 | |
|   </Target>
 | |
| 
 | |
| 
 | |
|   <ItemGroup>
 | |
|     <_LicenseSources Include="$(PySourcePath)LICENSE;
 | |
|                               $(PySourcePath)PC\crtlicense.txt;
 | |
|                               $(bz2Dir)LICENSE;
 | |
|                               $(opensslOutDir)LICENSE;
 | |
|                               $(libffiDir)LICENSE;" />
 | |
|     <_LicenseSources Include="$(tcltkDir)tcllicense.terms;
 | |
|                               $(tcltkDir)tklicense.terms;
 | |
|                               $(tcltkDir)tixlicense.terms" Condition="$(IncludeTkinter)" />
 | |
|   </ItemGroup>
 | |
| 
 | |
|   <Target Name="_RegenLicense">
 | |
|     <ItemGroup>
 | |
|       <_Text1 Include="@(_LicenseSources)">
 | |
|         <Content Condition="Exists(%(FullPath))">$([System.IO.File]::ReadAllText(%(FullPath)))</Content>
 | |
|       </_Text1>
 | |
|       <_Text Include="@(_Text1->'%(Content)')" />
 | |
|     </ItemGroup>
 | |
| 
 | |
|     <WriteLinesToFile File="$(OutDir)LICENSE.txt" Overwrite="true" Lines="@(_Text)" />
 | |
|     <Warning Text="License file %(_LicenseSources.FullPath) is missing"
 | |
|              Condition="!Exists(@(_LicenseSources))" />
 | |
|     <Message Text="Wrote $(OutDir)LICENSE.txt" Importance="high" />
 | |
|   </Target>
 | |
| 
 | |
|   <Target Name="PostBuildRegen" DependsOnTargets="_RegenLicense" />
 | |
| </Project>
 |