17db96d56Sopenharmony_ci""" 27db96d56Sopenharmony_ciProvides .props file. 37db96d56Sopenharmony_ci""" 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_ciimport os 67db96d56Sopenharmony_ci 77db96d56Sopenharmony_cifrom .constants import * 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_ci__all__ = ["get_props_layout"] 107db96d56Sopenharmony_ci 117db96d56Sopenharmony_ciPYTHON_PROPS_NAME = "python.props" 127db96d56Sopenharmony_ci 137db96d56Sopenharmony_ciPROPS_DATA = { 147db96d56Sopenharmony_ci "PYTHON_TAG": VER_DOT, 157db96d56Sopenharmony_ci "PYTHON_VERSION": os.getenv("PYTHON_NUSPEC_VERSION"), 167db96d56Sopenharmony_ci "PYTHON_PLATFORM": os.getenv("PYTHON_PROPS_PLATFORM"), 177db96d56Sopenharmony_ci "PYTHON_TARGET": "", 187db96d56Sopenharmony_ci} 197db96d56Sopenharmony_ci 207db96d56Sopenharmony_ciif not PROPS_DATA["PYTHON_VERSION"]: 217db96d56Sopenharmony_ci PROPS_DATA["PYTHON_VERSION"] = "{}.{}{}{}".format( 227db96d56Sopenharmony_ci VER_DOT, VER_MICRO, "-" if VER_SUFFIX else "", VER_SUFFIX 237db96d56Sopenharmony_ci ) 247db96d56Sopenharmony_ci 257db96d56Sopenharmony_ciPROPS_DATA["PYTHON_TARGET"] = "_GetPythonRuntimeFilesDependsOn{}{}_{}".format( 267db96d56Sopenharmony_ci VER_MAJOR, VER_MINOR, PROPS_DATA["PYTHON_PLATFORM"] 277db96d56Sopenharmony_ci) 287db96d56Sopenharmony_ci 297db96d56Sopenharmony_ciPROPS_TEMPLATE = r"""<?xml version="1.0" encoding="utf-8"?> 307db96d56Sopenharmony_ci<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 317db96d56Sopenharmony_ci <PropertyGroup Condition="$(Platform) == '{PYTHON_PLATFORM}'"> 327db96d56Sopenharmony_ci <PythonHome Condition="$(PythonHome) == ''">$([System.IO.Path]::GetFullPath("$(MSBuildThisFileDirectory)\..\..\tools"))</PythonHome> 337db96d56Sopenharmony_ci <PythonInclude>$(PythonHome)\include</PythonInclude> 347db96d56Sopenharmony_ci <PythonLibs>$(PythonHome)\libs</PythonLibs> 357db96d56Sopenharmony_ci <PythonTag>{PYTHON_TAG}</PythonTag> 367db96d56Sopenharmony_ci <PythonVersion>{PYTHON_VERSION}</PythonVersion> 377db96d56Sopenharmony_ci 387db96d56Sopenharmony_ci <IncludePythonExe Condition="$(IncludePythonExe) == ''">true</IncludePythonExe> 397db96d56Sopenharmony_ci <IncludeDistutils Condition="$(IncludeDistutils) == ''">false</IncludeDistutils> 407db96d56Sopenharmony_ci <IncludeLib2To3 Condition="$(IncludeLib2To3) == ''">false</IncludeLib2To3> 417db96d56Sopenharmony_ci <IncludeVEnv Condition="$(IncludeVEnv) == ''">false</IncludeVEnv> 427db96d56Sopenharmony_ci 437db96d56Sopenharmony_ci <GetPythonRuntimeFilesDependsOn>{PYTHON_TARGET};$(GetPythonRuntimeFilesDependsOn)</GetPythonRuntimeFilesDependsOn> 447db96d56Sopenharmony_ci </PropertyGroup> 457db96d56Sopenharmony_ci 467db96d56Sopenharmony_ci <ItemDefinitionGroup Condition="$(Platform) == '{PYTHON_PLATFORM}'"> 477db96d56Sopenharmony_ci <ClCompile> 487db96d56Sopenharmony_ci <AdditionalIncludeDirectories>$(PythonInclude);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> 497db96d56Sopenharmony_ci <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> 507db96d56Sopenharmony_ci </ClCompile> 517db96d56Sopenharmony_ci <Link> 527db96d56Sopenharmony_ci <AdditionalLibraryDirectories>$(PythonLibs);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> 537db96d56Sopenharmony_ci </Link> 547db96d56Sopenharmony_ci </ItemDefinitionGroup> 557db96d56Sopenharmony_ci 567db96d56Sopenharmony_ci <Target Name="GetPythonRuntimeFiles" Returns="@(PythonRuntime)" DependsOnTargets="$(GetPythonRuntimeFilesDependsOn)" /> 577db96d56Sopenharmony_ci 587db96d56Sopenharmony_ci <Target Name="{PYTHON_TARGET}" Returns="@(PythonRuntime)"> 597db96d56Sopenharmony_ci <ItemGroup> 607db96d56Sopenharmony_ci <_PythonRuntimeExe Include="$(PythonHome)\python*.dll" /> 617db96d56Sopenharmony_ci <_PythonRuntimeExe Include="$(PythonHome)\python*.exe" Condition="$(IncludePythonExe) == 'true'" /> 627db96d56Sopenharmony_ci <_PythonRuntimeExe> 637db96d56Sopenharmony_ci <Link>%(Filename)%(Extension)</Link> 647db96d56Sopenharmony_ci </_PythonRuntimeExe> 657db96d56Sopenharmony_ci <_PythonRuntimeDlls Include="$(PythonHome)\DLLs\*.pyd" /> 667db96d56Sopenharmony_ci <_PythonRuntimeDlls Include="$(PythonHome)\DLLs\*.dll" /> 677db96d56Sopenharmony_ci <_PythonRuntimeDlls> 687db96d56Sopenharmony_ci <Link>DLLs\%(Filename)%(Extension)</Link> 697db96d56Sopenharmony_ci </_PythonRuntimeDlls> 707db96d56Sopenharmony_ci <_PythonRuntimeLib Include="$(PythonHome)\Lib\**\*" Exclude="$(PythonHome)\Lib\**\*.pyc;$(PythonHome)\Lib\site-packages\**\*" /> 717db96d56Sopenharmony_ci <_PythonRuntimeLib Remove="$(PythonHome)\Lib\distutils\**\*" Condition="$(IncludeDistutils) != 'true'" /> 727db96d56Sopenharmony_ci <_PythonRuntimeLib Remove="$(PythonHome)\Lib\lib2to3\**\*" Condition="$(IncludeLib2To3) != 'true'" /> 737db96d56Sopenharmony_ci <_PythonRuntimeLib Remove="$(PythonHome)\Lib\ensurepip\**\*" Condition="$(IncludeVEnv) != 'true'" /> 747db96d56Sopenharmony_ci <_PythonRuntimeLib Remove="$(PythonHome)\Lib\venv\**\*" Condition="$(IncludeVEnv) != 'true'" /> 757db96d56Sopenharmony_ci <_PythonRuntimeLib> 767db96d56Sopenharmony_ci <Link>Lib\%(RecursiveDir)%(Filename)%(Extension)</Link> 777db96d56Sopenharmony_ci </_PythonRuntimeLib> 787db96d56Sopenharmony_ci <PythonRuntime Include="@(_PythonRuntimeExe);@(_PythonRuntimeDlls);@(_PythonRuntimeLib)" /> 797db96d56Sopenharmony_ci </ItemGroup> 807db96d56Sopenharmony_ci 817db96d56Sopenharmony_ci <Message Importance="low" Text="Collected Python runtime from $(PythonHome):%0D%0A@(PythonRuntime->' %(Link)','%0D%0A')" /> 827db96d56Sopenharmony_ci </Target> 837db96d56Sopenharmony_ci</Project> 847db96d56Sopenharmony_ci""" 857db96d56Sopenharmony_ci 867db96d56Sopenharmony_ci 877db96d56Sopenharmony_cidef get_props_layout(ns): 887db96d56Sopenharmony_ci if ns.include_all or ns.include_props: 897db96d56Sopenharmony_ci # TODO: Filter contents of props file according to included/excluded items 907db96d56Sopenharmony_ci d = dict(PROPS_DATA) 917db96d56Sopenharmony_ci if not d.get("PYTHON_PLATFORM"): 927db96d56Sopenharmony_ci d["PYTHON_PLATFORM"] = { 937db96d56Sopenharmony_ci "win32": "Win32", 947db96d56Sopenharmony_ci "amd64": "X64", 957db96d56Sopenharmony_ci "arm32": "ARM", 967db96d56Sopenharmony_ci "arm64": "ARM64", 977db96d56Sopenharmony_ci }[ns.arch] 987db96d56Sopenharmony_ci props = PROPS_TEMPLATE.format_map(d) 997db96d56Sopenharmony_ci yield "python.props", ("python.props", props.encode("utf-8")) 100