17db96d56Sopenharmony_ci<?xml version="1.0" encoding="utf-8"?>
27db96d56Sopenharmony_ci<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
37db96d56Sopenharmony_ci  <ItemGroup>
47db96d56Sopenharmony_ci    <_PegenSources Include="$(PySourcePath)Grammar\python.gram;$(PySourcePath)Grammar\Tokens" />
57db96d56Sopenharmony_ci    <_PegenOutputs Include="$(PySourcePath)Parser\parser.c" />
67db96d56Sopenharmony_ci    <_ASTSources Include="$(PySourcePath)Parser\Python.asdl" />
77db96d56Sopenharmony_ci    <_ASTOutputs Include="$(PySourcePath)Include\internal\pycore_ast.h">
87db96d56Sopenharmony_ci      <Argument>-H</Argument>
97db96d56Sopenharmony_ci    </_ASTOutputs>
107db96d56Sopenharmony_ci    <_ASTOutputs Include="$(PySourcePath)Include\internal\pycore_ast_state.h">
117db96d56Sopenharmony_ci      <Argument>-I</Argument>
127db96d56Sopenharmony_ci    </_ASTOutputs>
137db96d56Sopenharmony_ci    <_ASTOutputs Include="$(PySourcePath)Python\Python-ast.c">
147db96d56Sopenharmony_ci      <Argument>-C</Argument>
157db96d56Sopenharmony_ci    </_ASTOutputs>
167db96d56Sopenharmony_ci    <_OpcodeSources Include="$(PySourcePath)Tools\scripts\generate_opcode_h.py;$(PySourcePath)Lib\opcode.py" />
177db96d56Sopenharmony_ci    <_OpcodeOutputs Include="$(PySourcePath)Include\opcode.h;$(PySourcePath)Include\internal\pycore_opcode.h;$(PySourcePath)Python\opcode_targets.h" />
187db96d56Sopenharmony_ci    <_TokenSources Include="$(PySourcePath)Grammar\Tokens" />
197db96d56Sopenharmony_ci    <_TokenOutputs Include="$(PySourcePath)Doc\library\token-list.inc">
207db96d56Sopenharmony_ci      <Format>rst</Format>
217db96d56Sopenharmony_ci    </_TokenOutputs>
227db96d56Sopenharmony_ci    <_TokenOutputs Include="$(PySourcePath)Include\token.h">
237db96d56Sopenharmony_ci      <Format>h</Format>
247db96d56Sopenharmony_ci    </_TokenOutputs>
257db96d56Sopenharmony_ci    <_TokenOutputs Include="$(PySourcePath)Parser\token.c">
267db96d56Sopenharmony_ci      <Format>c</Format>
277db96d56Sopenharmony_ci    </_TokenOutputs>
287db96d56Sopenharmony_ci    <_TokenOutputs Include="$(PySourcePath)Lib\token.py">
297db96d56Sopenharmony_ci      <Format>py</Format>
307db96d56Sopenharmony_ci    </_TokenOutputs>
317db96d56Sopenharmony_ci    <_KeywordSources Include="$(PySourcePath)Grammar\python.gram;$(PySourcePath)Grammar\Tokens" />
327db96d56Sopenharmony_ci    <_KeywordOutputs Include="$(PySourcePath)Lib\keyword.py" />
337db96d56Sopenharmony_ci  </ItemGroup>
347db96d56Sopenharmony_ci
357db96d56Sopenharmony_ci  <Target Name="_TouchRegenSources" Condition="$(ForceRegen) == 'true'">
367db96d56Sopenharmony_ci    <Message Text="Touching source files to force regeneration" Importance="high" />
377db96d56Sopenharmony_ci    <Touch Files="@(_PegenSources);@(_ASTSources);@(_OpcodeSources);@(_TokenSources);@(_KeywordOutputs)"
387db96d56Sopenharmony_ci           AlwaysCreate="False" />
397db96d56Sopenharmony_ci  </Target>
407db96d56Sopenharmony_ci
417db96d56Sopenharmony_ci  <Target Name="_RegenPegen"
427db96d56Sopenharmony_ci          Inputs="@(_PegenSources)" Outputs="@(_PegenOutputs)"
437db96d56Sopenharmony_ci          DependsOnTargets="FindPythonForBuild">
447db96d56Sopenharmony_ci    <Message Text="Regenerate @(_PegenOutputs->'%(Filename)%(Extension)',' ')" Importance="high" />
457db96d56Sopenharmony_ci    <!-- Specify python.gram with POSIX-like path because the argument gets written into the file verbatim -->
467db96d56Sopenharmony_ci    <Exec Command="set PYTHONPATH=Tools\peg_generator%0D%0A$(PythonForBuild) -m pegen -q c ./Grammar/python.gram Grammar\Tokens -o Parser\parser.c"
477db96d56Sopenharmony_ci          WorkingDirectory="$(PySourcePath)" />
487db96d56Sopenharmony_ci  </Target>
497db96d56Sopenharmony_ci
507db96d56Sopenharmony_ci  <Target Name="_RegenAST_H"
517db96d56Sopenharmony_ci          Inputs="@(_ASTSources)" Outputs="@(_ASTOutputs)"
527db96d56Sopenharmony_ci          DependsOnTargets="FindPythonForBuild">
537db96d56Sopenharmony_ci    <Message Text="Regenerate @(_ASTOutputs->'%(Filename)%(Extension)',' ')" Importance="high" />
547db96d56Sopenharmony_ci    <Exec Command="$(PythonForBuild) Parser\asdl_c.py Parser\Python.asdl @(_ASTOutputs->'%(Argument) &quot;%(Identity)&quot;',' ')"
557db96d56Sopenharmony_ci          WorkingDirectory="$(PySourcePath)" />
567db96d56Sopenharmony_ci  </Target>
577db96d56Sopenharmony_ci
587db96d56Sopenharmony_ci  <Target Name="_RegenOpcodes"
597db96d56Sopenharmony_ci          Inputs="@(_OpcodeSources)" Outputs="@(_OpcodeOutputs)"
607db96d56Sopenharmony_ci          DependsOnTargets="FindPythonForBuild">
617db96d56Sopenharmony_ci    <Message Text="Regenerate @(_OpcodeOutputs->'%(Filename)%(Extension)',' ')" Importance="high" />
627db96d56Sopenharmony_ci    <Exec Command="$(PythonForBuild) Tools\scripts\generate_opcode_h.py Lib\opcode.py Include\opcode.h Include\internal\pycore_opcode.h"
637db96d56Sopenharmony_ci          WorkingDirectory="$(PySourcePath)" />
647db96d56Sopenharmony_ci    <Exec Command="$(PythonForBuild) Python\makeopcodetargets.py Python\opcode_targets.h"
657db96d56Sopenharmony_ci          WorkingDirectory="$(PySourcePath)" />
667db96d56Sopenharmony_ci  </Target>
677db96d56Sopenharmony_ci
687db96d56Sopenharmony_ci  <Target Name="_RegenTokens"
697db96d56Sopenharmony_ci          Inputs="@(_TokenSources)" Outputs="@(_TokenOutputs)"
707db96d56Sopenharmony_ci          DependsOnTargets="FindPythonForBuild">
717db96d56Sopenharmony_ci    <Message Text="Regenerate @(_TokenOutputs->'%(Filename)%(Extension)',' ')" Importance="high" />
727db96d56Sopenharmony_ci    <Exec Command="$(PythonForBuild) Tools\scripts\generate_token.py %(_TokenOutputs.Format) Grammar\Tokens &quot;%(_TokenOutputs.Identity)&quot;"
737db96d56Sopenharmony_ci          WorkingDirectory="$(PySourcePath)" />
747db96d56Sopenharmony_ci    <Touch Files="@(_TokenOutputs)" />
757db96d56Sopenharmony_ci  </Target>
767db96d56Sopenharmony_ci
777db96d56Sopenharmony_ci  <Target Name="_RegenKeywords"
787db96d56Sopenharmony_ci          Inputs="@(_KeywordSources)" Outputs="@(_KeywordOutputs)"
797db96d56Sopenharmony_ci          DependsOnTargets="FindPythonForBuild">
807db96d56Sopenharmony_ci    <Message Text="Regenerate @(_KeywordOutputs->'%(Filename)%(Extension)',' ')" Importance="high" />
817db96d56Sopenharmony_ci    <Exec Command="set PYTHONPATH=Tools\peg_generator%0D%0A$(PythonForBuild) -m pegen.keywordgen Grammar\python.gram Grammar\Tokens Lib\keyword.py"
827db96d56Sopenharmony_ci          WorkingDirectory="$(PySourcePath)" />
837db96d56Sopenharmony_ci  </Target>
847db96d56Sopenharmony_ci
857db96d56Sopenharmony_ci  <Target Name="Regen"
867db96d56Sopenharmony_ci          Condition="$(Configuration) != 'PGUpdate'"
877db96d56Sopenharmony_ci          DependsOnTargets="_TouchRegenSources;_RegenPegen;_RegenAST_H;_RegenOpcodes;_RegenTokens;_RegenKeywords">
887db96d56Sopenharmony_ci    <Message Text="Generated sources are up to date" Importance="high" />
897db96d56Sopenharmony_ci  </Target>
907db96d56Sopenharmony_ci
917db96d56Sopenharmony_ci
927db96d56Sopenharmony_ci  <ItemGroup>
937db96d56Sopenharmony_ci    <_TestFrozenSources Include="$(PySourcePath)Programs\freeze_test_frozenmain.py;
947db96d56Sopenharmony_ci                                 $(PySourcePath)Programs\test_frozenmain.py;
957db96d56Sopenharmony_ci                                 @(_OpcodeOutputs)" />
967db96d56Sopenharmony_ci    <_TestFrozenOutputs Include="$(PySourcePath)Programs\test_frozenmain.h" />
977db96d56Sopenharmony_ci    <_LicenseSources Include="$(PySourcePath)LICENSE;
987db96d56Sopenharmony_ci                              $(PySourcePath)PC\crtlicense.txt;
997db96d56Sopenharmony_ci                              $(bz2Dir)LICENSE;
1007db96d56Sopenharmony_ci                              $(opensslOutDir)LICENSE;
1017db96d56Sopenharmony_ci                              $(libffiDir)LICENSE;" />
1027db96d56Sopenharmony_ci    <_LicenseSources Include="$(tcltkDir)tcllicense.terms;
1037db96d56Sopenharmony_ci                              $(tcltkDir)tklicense.terms;
1047db96d56Sopenharmony_ci                              $(tcltkDir)tixlicense.terms" Condition="$(IncludeTkinter)" />
1057db96d56Sopenharmony_ci  </ItemGroup>
1067db96d56Sopenharmony_ci
1077db96d56Sopenharmony_ci  <Target Name="_RegenTestFrozenmain" Inputs="@(_TestFrozenSources)" Outputs="@(_TestFrozenOutputs)"
1087db96d56Sopenharmony_ci          Condition="($(Platform) == 'Win32' or $(Platform) == 'x64') and
1097db96d56Sopenharmony_ci                     $(Configuration) != 'PGInstrument' and $(Configuration) != 'PGUpdate'">
1107db96d56Sopenharmony_ci    <Message Text="Regenerate @(_TestFrozenOutputs->'%(Filename)%(Extension)', ' ')" Importance="high" />
1117db96d56Sopenharmony_ci    <Exec Command='setlocal
1127db96d56Sopenharmony_ciset PYTHONPATH=$(PySourcePath)Lib
1137db96d56Sopenharmony_ci"$(PythonExe)" Programs\freeze_test_frozenmain.py Programs\test_frozenmain.h'
1147db96d56Sopenharmony_ci          WorkingDirectory="$(PySourcePath)" />
1157db96d56Sopenharmony_ci  </Target>
1167db96d56Sopenharmony_ci
1177db96d56Sopenharmony_ci  <Target Name="_RegenLicense">
1187db96d56Sopenharmony_ci    <ItemGroup>
1197db96d56Sopenharmony_ci      <_Text1 Include="@(_LicenseSources)">
1207db96d56Sopenharmony_ci        <Content Condition="Exists(%(FullPath))">$([System.IO.File]::ReadAllText(%(FullPath)))</Content>
1217db96d56Sopenharmony_ci      </_Text1>
1227db96d56Sopenharmony_ci      <_Text Include="@(_Text1->'%(Content)')" />
1237db96d56Sopenharmony_ci    </ItemGroup>
1247db96d56Sopenharmony_ci
1257db96d56Sopenharmony_ci    <WriteLinesToFile File="$(OutDir)LICENSE.txt" Overwrite="true" Lines="@(_Text)" />
1267db96d56Sopenharmony_ci    <Warning Text="License file %(_LicenseSources.FullPath) is missing"
1277db96d56Sopenharmony_ci             Condition="!Exists(@(_LicenseSources))" />
1287db96d56Sopenharmony_ci    <Message Text="Wrote $(OutDir)LICENSE.txt" Importance="high" />
1297db96d56Sopenharmony_ci  </Target>
1307db96d56Sopenharmony_ci
1317db96d56Sopenharmony_ci  <Target Name="PostBuildRegen" DependsOnTargets="_RegenTestFrozenmain;_RegenLicense" />
1327db96d56Sopenharmony_ci</Project>
133