mirror of https://github.com/python/cpython
bpo-46567: Add Tcl/Tk build for Windows ARM64 (GH-31574)
This commit is contained in:
parent
424ecab494
commit
da7d99a4de
|
@ -60,6 +60,12 @@ jobs:
|
|||
& "$(msbuild)" PCbuild\tix.vcxproj "@msbuild.rsp" /p:Platform=x64 /p:tcltkDir="$(OutDir)\amd64"
|
||||
displayName: 'Build for amd64'
|
||||
|
||||
- powershell: |
|
||||
& "$(msbuild)" PCbuild\tcl.vcxproj "@msbuild.rsp" /p:Platform=ARM64 /p:tcltkDir="$(OutDir)\arm64"
|
||||
& "$(msbuild)" PCbuild\tk.vcxproj "@msbuild.rsp" /p:Platform=ARM64 /p:tcltkDir="$(OutDir)\arm64"
|
||||
& "$(msbuild)" PCbuild\tix.vcxproj "@msbuild.rsp" /p:Platform=ARM64 /p:tcltkDir="$(OutDir)\arm64"
|
||||
displayName: 'Build for arm64'
|
||||
|
||||
- publish: '$(OutDir)'
|
||||
artifact: 'tcltk'
|
||||
displayName: 'Publishing tcltk'
|
||||
|
|
|
@ -71,6 +71,13 @@ steps:
|
|||
artifactName: tcltk_lib_amd64
|
||||
targetPath: $(Build.BinariesDirectory)\tcltk_lib_amd64
|
||||
|
||||
- task: DownloadPipelineArtifact@1
|
||||
displayName: 'Download artifact: tcltk_lib_arm64'
|
||||
condition: and(succeeded(), eq(variables['PublishARM64'], 'true'))
|
||||
inputs:
|
||||
artifactName: tcltk_lib_arm64
|
||||
targetPath: $(Build.BinariesDirectory)\tcltk_lib_arm64
|
||||
|
||||
- powershell: |
|
||||
copy $(Build.BinariesDirectory)\amd64\Activate.ps1 Lib\venv\scripts\common\Activate.ps1 -Force
|
||||
displayName: 'Copy signed files into sources'
|
||||
|
@ -107,7 +114,6 @@ steps:
|
|||
PYTHONHOME: $(Build.SourcesDirectory)
|
||||
TclTkLibraryDir: $(Build.BinariesDirectory)\tcltk_lib_win32
|
||||
BuildForRelease: true
|
||||
SuppressMinGWLib: true
|
||||
|
||||
- script: |
|
||||
%MSBUILD% Tools\msi\bundle\releaselocal.wixproj /t:Rebuild /p:RebuildAll=true
|
||||
|
@ -120,7 +126,6 @@ steps:
|
|||
PYTHONHOME: $(Build.SourcesDirectory)
|
||||
TclTkLibraryDir: $(Build.BinariesDirectory)\tcltk_lib_amd64
|
||||
BuildForRelease: true
|
||||
SuppressMinGWLib: true
|
||||
|
||||
- script: |
|
||||
%MSBUILD% Tools\msi\bundle\releaselocal.wixproj /t:Rebuild /p:RebuildAll=true
|
||||
|
@ -132,8 +137,8 @@ steps:
|
|||
PYTHON: $(Build.BinariesDirectory)\win32\python.exe
|
||||
PythonForBuild: $(Build.BinariesDirectory)\win32\python.exe
|
||||
PYTHONHOME: $(Build.SourcesDirectory)
|
||||
TclTkLibraryDir: $(Build.BinariesDirectory)\tcltk_lib_arm64
|
||||
BuildForRelease: true
|
||||
SuppressMinGWLib: true
|
||||
|
||||
- task: CopyFiles@2
|
||||
displayName: 'Assemble artifact: msi (win32)'
|
||||
|
|
|
@ -166,6 +166,13 @@ jobs:
|
|||
platform: x64
|
||||
msbuildArguments: /t:CopyTclTkLib /p:OutDir="$(Build.ArtifactStagingDirectory)\tcl_amd64"
|
||||
|
||||
- task: MSBuild@1
|
||||
displayName: 'Copy Tcl/Tk lib for publish'
|
||||
inputs:
|
||||
solution: PCbuild\tcltk.props
|
||||
platform: ARM64
|
||||
msbuildArguments: /t:CopyTclTkLib /p:OutDir="$(Build.ArtifactStagingDirectory)\tcl_arm64"
|
||||
|
||||
- task: PublishPipelineArtifact@0
|
||||
displayName: 'Publish artifact: tcltk_lib_win32'
|
||||
inputs:
|
||||
|
@ -177,3 +184,9 @@ jobs:
|
|||
inputs:
|
||||
targetPath: '$(Build.ArtifactStagingDirectory)\tcl_amd64'
|
||||
artifactName: tcltk_lib_amd64
|
||||
|
||||
- task: PublishPipelineArtifact@0
|
||||
displayName: 'Publish artifact: tcltk_lib_arm64'
|
||||
inputs:
|
||||
targetPath: '$(Build.ArtifactStagingDirectory)\tcl_arm64'
|
||||
artifactName: tcltk_lib_arm64
|
||||
|
|
|
@ -26,6 +26,7 @@ jobs:
|
|||
HostArch: amd64
|
||||
Python: $(Build.BinariesDirectory)\bin_amd64\python.exe
|
||||
PYTHONHOME: $(Build.SourcesDirectory)
|
||||
TclLibrary: $(Build.BinariesDirectory)\tcltk_lib\tcl8
|
||||
|
||||
steps:
|
||||
- template: ./checkout.yml
|
||||
|
|
|
@ -25,6 +25,7 @@ jobs:
|
|||
HostArch: amd64
|
||||
Python: $(Build.BinariesDirectory)\bin_amd64\python.exe
|
||||
PYTHONHOME: $(Build.SourcesDirectory)
|
||||
TclLibrary: $(Build.BinariesDirectory)\tcltk_lib\tcl8
|
||||
|
||||
steps:
|
||||
- template: ./checkout.yml
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Adds Tcl and Tk support for Windows ARM64. This also adds IDLE to the
|
||||
installation.
|
|
@ -55,8 +55,8 @@ set libraries=%libraries% bzip2-1.0.6
|
|||
if NOT "%IncludeLibffiSrc%"=="false" set libraries=%libraries% libffi-3.4.2
|
||||
if NOT "%IncludeSSLSrc%"=="false" set libraries=%libraries% openssl-1.1.1m
|
||||
set libraries=%libraries% sqlite-3.37.2.0
|
||||
if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tcl-core-8.6.12.0
|
||||
if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tk-8.6.12.0
|
||||
if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tcl-core-8.6.12.1
|
||||
if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tk-8.6.12.1
|
||||
if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tix-8.4.3.6
|
||||
set libraries=%libraries% xz-5.2.2
|
||||
set libraries=%libraries% zlib-1.2.11
|
||||
|
@ -78,7 +78,7 @@ echo.Fetching external binaries...
|
|||
set binaries=
|
||||
if NOT "%IncludeLibffi%"=="false" set binaries=%binaries% libffi-3.4.2
|
||||
if NOT "%IncludeSSL%"=="false" set binaries=%binaries% openssl-bin-1.1.1m
|
||||
if NOT "%IncludeTkinter%"=="false" set binaries=%binaries% tcltk-8.6.12.0
|
||||
if NOT "%IncludeTkinter%"=="false" set binaries=%binaries% tcltk-8.6.12.1
|
||||
if NOT "%IncludeSSLSrc%"=="false" set binaries=%binaries% nasm-2.11.06
|
||||
|
||||
for %%b in (%binaries%) do (
|
||||
|
|
|
@ -73,7 +73,7 @@
|
|||
<!-- _ssl will build _socket as well, which may cause conflicts in parallel builds -->
|
||||
<ExtensionModules Include="_socket" Condition="!$(IncludeSSL) or !$(IncludeExternals)" />
|
||||
<ExternalModules Include="_ssl;_hashlib" Condition="$(IncludeSSL)" />
|
||||
<ExternalModules Include="_tkinter" Condition="$(IncludeTkinter) and $(Platform) != 'ARM' and $(Platform) != 'ARM64'" />
|
||||
<ExternalModules Include="_tkinter" Condition="$(IncludeTkinter)" />
|
||||
<ExtensionModules Include="@(ExternalModules->'%(Identity)')" Condition="$(IncludeExternals)" />
|
||||
<Projects Include="@(ExtensionModules->'%(Identity).vcxproj')" Condition="$(IncludeExtensions)" />
|
||||
<!-- Test modules -->
|
||||
|
|
|
@ -53,3 +53,7 @@ call "%PCBUILD%\get_externals.bat" --tkinter-src %ORG_SETTING%
|
|||
%MSBUILD% "%PCBUILD%\tcl.vcxproj" /p:Configuration=Release /p:Platform=x64
|
||||
%MSBUILD% "%PCBUILD%\tk.vcxproj" /p:Configuration=Release /p:Platform=x64
|
||||
%MSBUILD% "%PCBUILD%\tix.vcxproj" /p:Configuration=Release /p:Platform=x64
|
||||
|
||||
%MSBUILD% "%PCBUILD%\tcl.vcxproj" /p:Configuration=Release /p:Platform=ARM64
|
||||
%MSBUILD% "%PCBUILD%\tk.vcxproj" /p:Configuration=Release /p:Platform=ARM64
|
||||
%MSBUILD% "%PCBUILD%\tix.vcxproj" /p:Configuration=Release /p:Platform=ARM64
|
||||
|
|
|
@ -33,6 +33,10 @@
|
|||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{B5FD6F1D-129E-4BFF-9340-03606FAC7283}</ProjectGuid>
|
||||
|
@ -59,8 +63,8 @@
|
|||
<NMakeBuildCommandLine>setlocal
|
||||
set VCINSTALLDIR=$(VCInstallDir)
|
||||
cd /D "$(tclDir)win"
|
||||
nmake -f makefile.vc MACHINE=$(TclMachine) OPTS=$(TclOpts) $(TclDirs) $(DebugFlags) $(WarningsFlags) core shell dlls
|
||||
nmake -f makefile.vc MACHINE=$(TclMachine) OPTS=$(TclOpts) $(TclDirs) $(DebugFlags) $(WarningsFlags) install-binaries install-libraries
|
||||
nmake -f makefile.vc MACHINE=$(TclMachine) OPTS=$(TclOpts) $(TclDirs) $(DebugFlags) $(WarningsFlags) TCLSH_NATIVE="$(tclWin32Exe)" core shell dlls
|
||||
nmake -f makefile.vc MACHINE=$(TclMachine) OPTS=$(TclOpts) $(TclDirs) $(DebugFlags) $(WarningsFlags) TCLSH_NATIVE="$(tclWin32Exe)" install-binaries install-libraries
|
||||
copy /Y ..\license.terms "$(OutDir)\tcllicense.terms"
|
||||
</NMakeBuildCommandLine>
|
||||
</PropertyGroup>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<TclMajorVersion>8</TclMajorVersion>
|
||||
<TclMinorVersion>6</TclMinorVersion>
|
||||
<TclPatchLevel>12</TclPatchLevel>
|
||||
<TclRevision>0</TclRevision>
|
||||
<TclRevision>1</TclRevision>
|
||||
<TkMajorVersion>$(TclMajorVersion)</TkMajorVersion>
|
||||
<TkMinorVersion>$(TclMinorVersion)</TkMinorVersion>
|
||||
<TkPatchLevel>$(TclPatchLevel)</TkPatchLevel>
|
||||
|
@ -18,6 +18,9 @@
|
|||
<tkDir>$(ExternalsDir)tk-$(TkMajorVersion).$(TkMinorVersion).$(TkPatchLevel).$(TkRevision)\</tkDir>
|
||||
<tixDir>$(ExternalsDir)tix-$(TixMajorVersion).$(TixMinorVersion).$(TixPatchLevel).$(TixRevision)\</tixDir>
|
||||
<tcltkDir>$(ExternalsDir)tcltk-$(TclMajorVersion).$(TclMinorVersion).$(TclPatchLevel).$(TclRevision)\$(ArchName)\</tcltkDir>
|
||||
<tclWin32Exe Condition="$(Platform) == 'Win32'">$(tcltkDir)\bin\tclsh$(TclMajorVersion)$(TclMinorVersion)t.exe</tclWin32Exe>
|
||||
<tclWin32Exe Condition="$(Platform) != 'Win32'">$(tcltkDir)\..\win32\bin\tclsh$(TclMajorVersion)$(TclMinorVersion)t.exe</tclWin32Exe>
|
||||
|
||||
<!--<TclDebugExt Condition="'$(Configuration)' == 'Debug'">g</TclDebugExt>-->
|
||||
<tclDLLName>tcl$(TclMajorVersion)$(TclMinorVersion)t$(TclDebugExt).dll</tclDLLName>
|
||||
<tclLibName>tcl$(TclMajorVersion)$(TclMinorVersion)t$(TclDebugExt).lib</tclLibName>
|
||||
|
|
|
@ -33,6 +33,10 @@
|
|||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}</ProjectGuid>
|
||||
|
@ -53,7 +57,7 @@
|
|||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TixDirs>BUILDDIRTOP="$(BuildDirTop)" TCL_DIR="$(tclDir.TrimEnd(`\`))" TK_DIR="$(tkDir.TrimEnd(`\`))" INSTALL_DIR="$(OutDir.TrimEnd(`\`))"</TixDirs>
|
||||
<TixDirs>BUILDDIRTOP="$(BuildDirTop)" TCL_DIR="$(tclDir.TrimEnd(`\`))" TK_DIR="$(tkDir.TrimEnd(`\`))" INSTALL_DIR="$(OutDir.TrimEnd(`\`))" TCLSH_EXE="$(tclWin32Exe)"</TixDirs>
|
||||
<DebugFlags Condition="'$(Configuration)' == 'Debug'">DEBUG=1 NODEBUG=0 TCL_DBGX=g TK_DBGX=g</DebugFlags>
|
||||
<DebugFlags Condition="'$(Configuration)' != 'Debug'">DEBUG=0 NODEBUG=1</DebugFlags>
|
||||
<CFlags>-c -W3 -nologo -MD -wd4028 -wd4090 -wd4244 -wd4267 -wd4312</CFlags>
|
||||
|
|
|
@ -32,6 +32,10 @@
|
|||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
|
@ -60,8 +64,8 @@
|
|||
<NMakeBuildCommandLine>setlocal
|
||||
set VCINSTALLDIR=$(VCInstallDir)
|
||||
cd /D "$(tkDir)win"
|
||||
nmake /nologo -f makefile.vc RC=rc MACHINE=$(TclMachine) OPTS=$(TkOpts) $(TkDirs) $(DebugFlags) $(WarningsFlags) all
|
||||
nmake /nologo -f makefile.vc RC=rc MACHINE=$(TclMachine) OPTS=$(TkOpts) $(TkDirs) $(DebugFlags) $(WarningsFlags) install-binaries install-libraries
|
||||
nmake /nologo -f makefile.vc RC=rc MACHINE=$(TclMachine) OPTS=$(TkOpts) $(TkDirs) $(DebugFlags) $(WarningsFlags) TCLSH_NATIVE="$(tclWin32Exe)" all
|
||||
nmake /nologo -f makefile.vc RC=rc MACHINE=$(TclMachine) OPTS=$(TkOpts) $(TkDirs) $(DebugFlags) $(WarningsFlags) TCLSH_NATIVE="$(tclWin32Exe)" install-binaries install-libraries
|
||||
copy /Y ..\license.terms "$(OutDir)\tklicense.terms"
|
||||
</NMakeBuildCommandLine>
|
||||
</PropertyGroup>
|
||||
|
|
|
@ -13,14 +13,11 @@
|
|||
<xsl:template match="*[local-name()='String' and @Id='InstallButtonNote']">
|
||||
<String Id="InstallButtonNote">[TargetDir]
|
||||
|
||||
Includes pip and documentation
|
||||
Includes IDLE, pip and documentation
|
||||
Creates shortcuts but no file associations</String>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="*[local-name()='String' and @Id='Include_launcherHelp']">
|
||||
<String Id="Include_launcherHelp">(The 'py' launcher is currently unavailable on ARM64.)</String>
|
||||
</xsl:template>
|
||||
<xsl:template match="*[local-name()='String' and @Id='Include_tcltkHelpLabel']">
|
||||
<String Id="Include_tcltkHelpLabel">(tcl/tk and IDLE are currently unavailable on ARM64.)</String>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
|
@ -69,7 +69,7 @@
|
|||
<Package Include="..\path\path*.wixproj" />
|
||||
<Package Include="..\appendpath\appendpath*.wixproj" />
|
||||
<Package Include="..\pip\pip*.wixproj" />
|
||||
<Package Include="..\tcltk\tcltk*.wixproj" Condition="$(Platform) != 'ARM64'" />
|
||||
<Package Include="..\tcltk\tcltk*.wixproj" />
|
||||
<Package Include="..\test\test*.wixproj" />
|
||||
<Package Include="..\tools\tools*.wixproj" />
|
||||
<Package Include="..\ucrt\ucrt*.wixproj" Condition="$(Platform) != 'ARM64'" />
|
||||
|
|
|
@ -77,12 +77,7 @@
|
|||
<Variable Name="Include_test" Value="1" bal:Overridable="yes" />
|
||||
<Variable Name="Include_doc" Value="1" bal:Overridable="yes" />
|
||||
<Variable Name="Include_tools" Value="1" bal:Overridable="yes" />
|
||||
<?if $(var.Platform)~="ARM64" ?>
|
||||
<Variable Name="Include_tcltk" Value="0" />
|
||||
<Variable Name="Include_tcltkState" Value="disable" />
|
||||
<?else ?>
|
||||
<Variable Name="Include_tcltk" Value="1" bal:Overridable="yes" />
|
||||
<?endif ?>
|
||||
<Variable Name="Include_pip" Value="1" bal:Overridable="yes" />
|
||||
<?if $(var.Platform)~="ARM64" ?>
|
||||
<Variable Name="Include_launcher" Value="0" bal:Overridable="yes" />
|
||||
|
@ -122,8 +117,8 @@
|
|||
<PackageGroupRef Id="test" />
|
||||
<PackageGroupRef Id="doc" />
|
||||
<PackageGroupRef Id="tools" />
|
||||
<?if $(var.Platform)!="ARM64" ?>
|
||||
<PackageGroupRef Id="tcltk" />
|
||||
<?if $(var.Platform)!="ARM64" ?>
|
||||
<PackageGroupRef Id="launcher" />
|
||||
<?endif ?>
|
||||
<PackageGroupRef Id="pip" />
|
||||
|
|
Loading…
Reference in New Issue