https://github.com/python/cpython/commit/e6f8e0a035f4cbeffb331d90c295ab5894852c39
commit: e6f8e0a035f4cbeffb331d90c295ab5894852c39
branch: main
author: Adam Turner <9087854+aa-tur...@users.noreply.github.com>
committer: AA-Turner <9087854+aa-tur...@users.noreply.github.com>
date: 2025-05-06T00:58:47+01:00
summary:

GH-132983: Build ``_zstd`` on Windows (#133366)

files:
A Modules/_zstd/clinic/zstddict.c.h
A Modules/_zstd/zstddict.c
A PCbuild/_zstd.vcxproj
A PCbuild/_zstd.vcxproj.filters
D Modules/_zstd/clinic/zdict.c.h
D Modules/_zstd/zdict.c
M Misc/externals.spdx.json
M Modules/Setup
M Modules/Setup.stdlib.in
M PCbuild/get_externals.bat
M PCbuild/pcbuild.proj
M PCbuild/pcbuild.sln
M PCbuild/python.props
M PCbuild/readme.txt
M PCbuild/regen.targets
M Tools/msi/freethreaded/freethreaded_files.wxs
M Tools/msi/lib/lib_files.wxs
M configure
M configure.ac

diff --git a/Misc/externals.spdx.json b/Misc/externals.spdx.json
index 13be10ca039286..69f3beec82ed34 100644
--- a/Misc/externals.spdx.json
+++ b/Misc/externals.spdx.json
@@ -190,6 +190,27 @@
       "name": "zlib-ng",
       "primaryPackagePurpose": "SOURCE",
       "versionInfo": "2.2.4"
+    },
+    {
+      "SPDXID": "SPDXRef-PACKAGE-zstd",
+      "checksums": [
+        {
+          "algorithm": "SHA256",
+          "checksumValue": 
"f24b52470d12f466e9fa4fcc94e6c530625ada51d7b36de7fdc6ed7e6f499c8e"
+        }
+      ],
+      "downloadLocation": 
"https://github.com/python/cpython-source-deps/archive/refs/tags/zstd-1.5.7.tar.gz";,
+      "externalRefs": [
+        {
+          "referenceCategory": "SECURITY",
+          "referenceLocator": 
"cpe:2.3:a:facebook:zstandard:1.5.7:*:*:*:*:*:*:*",
+          "referenceType": "cpe23Type"
+        }
+      ],
+      "licenseConcluded": "NOASSERTION",
+      "name": "zstd",
+      "primaryPackagePurpose": "SOURCE",
+      "versionInfo": "1.5.7"
     }
   ],
   "spdxVersion": "SPDX-2.3"
diff --git a/Modules/Setup b/Modules/Setup
index 81f364abd479cb..a066982df1ae86 100644
--- a/Modules/Setup
+++ b/Modules/Setup
@@ -200,8 +200,8 @@ PYTHONPATH=$(COREPYTHONPATH)
 #_dbm _dbmmodule.c -lgdbm_compat -DUSE_GDBM_COMPAT
 #_gdbm _gdbmmodule.c -lgdbm
 #_lzma _lzmamodule.c -llzma
-#_zstd _zstd/_zstdmodule.c -lzstd -I$(srcdir)/Modules/_zstd
 #_uuid _uuidmodule.c -luuid
+#_zstd _zstd/_zstdmodule.c -lzstd -I$(srcdir)/Modules/_zstd
 #zlib  zlibmodule.c -lz
 
 # The readline module also supports libeditline (-leditline).
diff --git a/Modules/Setup.stdlib.in b/Modules/Setup.stdlib.in
index 8b676ca69b081b..3a38a60a152e8c 100644
--- a/Modules/Setup.stdlib.in
+++ b/Modules/Setup.stdlib.in
@@ -69,7 +69,7 @@
 @MODULE_BINASCII_TRUE@binascii binascii.c
 @MODULE__BZ2_TRUE@_bz2 _bz2module.c
 @MODULE__LZMA_TRUE@_lzma _lzmamodule.c
-@MODULE__ZSTD_TRUE@_zstd _zstd/_zstdmodule.c _zstd/zdict.c _zstd/compressor.c 
_zstd/decompressor.c
+@MODULE__ZSTD_TRUE@_zstd _zstd/_zstdmodule.c _zstd/zstddict.c 
_zstd/compressor.c _zstd/decompressor.c
 @MODULE_ZLIB_TRUE@zlib zlibmodule.c
 
 # dbm/gdbm
diff --git a/Modules/_zstd/clinic/zdict.c.h b/Modules/_zstd/clinic/zstddict.c.h
similarity index 100%
rename from Modules/_zstd/clinic/zdict.c.h
rename to Modules/_zstd/clinic/zstddict.c.h
diff --git a/Modules/_zstd/zdict.c b/Modules/_zstd/zstddict.c
similarity index 99%
rename from Modules/_zstd/zdict.c
rename to Modules/_zstd/zstddict.c
index 28ab964a6caa87..a19224c4a6403b 100644
--- a/Modules/_zstd/zdict.c
+++ b/Modules/_zstd/zstddict.c
@@ -136,7 +136,7 @@ _zstd_ZstdDict___init___impl(ZstdDict *self, PyObject 
*dict_content,
 }
 
 #define clinic_state() (get_zstd_state(type))
-#include "clinic/zdict.c.h"
+#include "clinic/zstddict.c.h"
 #undef clinic_state
 
 PyDoc_STRVAR(ZstdDict_dictid_doc,
diff --git a/PCbuild/_zstd.vcxproj b/PCbuild/_zstd.vcxproj
new file mode 100644
index 00000000000000..b53f93a6af8d11
--- /dev/null
+++ b/PCbuild/_zstd.vcxproj
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|ARM">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|ARM64">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="PGInstrument|ARM">
+      <Configuration>PGInstrument</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="PGInstrument|ARM64">
+      <Configuration>PGInstrument</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="PGInstrument|Win32">
+      <Configuration>PGInstrument</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="PGInstrument|x64">
+      <Configuration>PGInstrument</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="PGUpdate|ARM">
+      <Configuration>PGUpdate</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="PGUpdate|ARM64">
+      <Configuration>PGUpdate</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="PGUpdate|Win32">
+      <Configuration>PGUpdate</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="PGUpdate|x64">
+      <Configuration>PGUpdate</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM">
+      <Configuration>Release</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{07029b86-f3e9-443e-86fb-78aa6d47fed1}</ProjectGuid>
+    <RootNamespace>_zstd</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="python.props" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>NotSet</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <PropertyGroup>
+    <TargetExt>$(PyStdlibPydExt)</TargetExt>
+  </PropertyGroup>
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" 
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" 
Label="LocalAppDataPlatform" />
+    <Import Project="pyproject.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+  </PropertyGroup>
+  <ItemDefinitionGroup>
+    <ClCompile>
+      
<PreprocessorDefinitions>WIN32;ZSTD_MULTITHREAD=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      
<AdditionalIncludeDirectories>$(zstdDir)lib\;$(zstdDir)lib\common;$(zstdDir)lib\compress;$(zstdDir)lib\decompress;$(zstdDir)lib\dictBuilder;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\Modules\_zstd\_zstdmodule.c" />
+    <ClCompile Include="..\Modules\_zstd\compressor.c" />
+    <ClCompile Include="..\Modules\_zstd\decompressor.c" />
+    <ClCompile Include="..\Modules\_zstd\zstddict.c" />
+    <ClCompile Include="$(zstdDir)lib\common\debug.c" />
+    <ClCompile Include="$(zstdDir)lib\common\entropy_common.c" />
+    <ClCompile Include="$(zstdDir)lib\common\error_private.c" />
+    <ClCompile Include="$(zstdDir)lib\common\fse_decompress.c" />
+    <ClCompile Include="$(zstdDir)lib\common\pool.c" />
+    <ClCompile Include="$(zstdDir)lib\common\threading.c" />
+    <ClCompile Include="$(zstdDir)lib\common\xxhash.c" />
+    <ClCompile Include="$(zstdDir)lib\common\zstd_common.c" />
+    <ClCompile Include="$(zstdDir)lib\compress\fse_compress.c" />
+    <ClCompile Include="$(zstdDir)lib\compress\hist.c" />
+    <ClCompile Include="$(zstdDir)lib\compress\huf_compress.c" />
+    <ClCompile Include="$(zstdDir)lib\compress\zstd_compress.c" />
+    <ClCompile Include="$(zstdDir)lib\compress\zstd_compress_literals.c" />
+    <ClCompile Include="$(zstdDir)lib\compress\zstd_compress_sequences.c" />
+    <ClCompile Include="$(zstdDir)lib\compress\zstd_compress_superblock.c" />
+    <ClCompile Include="$(zstdDir)lib\compress\zstd_double_fast.c" />
+    <ClCompile Include="$(zstdDir)lib\compress\zstd_fast.c" />
+    <ClCompile Include="$(zstdDir)lib\compress\zstd_lazy.c" />
+    <ClCompile Include="$(zstdDir)lib\compress\zstd_ldm.c" />
+    <ClCompile Include="$(zstdDir)lib\compress\zstd_opt.c" />
+    <ClCompile Include="$(zstdDir)lib\compress\zstd_preSplit.c" />
+    <ClCompile Include="$(zstdDir)lib\compress\zstdmt_compress.c" />
+    <ClCompile Include="$(zstdDir)lib\decompress\huf_decompress.c" />
+    <ClCompile Include="$(zstdDir)lib\decompress\zstd_ddict.c" />
+    <ClCompile Include="$(zstdDir)lib\decompress\zstd_decompress.c" />
+    <ClCompile Include="$(zstdDir)lib\decompress\zstd_decompress_block.c" />
+    <ClCompile Include="$(zstdDir)lib\dictBuilder\cover.c" />
+    <ClCompile Include="$(zstdDir)lib\dictBuilder\divsufsort.c" />
+    <ClCompile Include="$(zstdDir)lib\dictBuilder\fastcover.c" />
+    <ClCompile Include="$(zstdDir)lib\dictBuilder\zdict.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\Modules\_zstd\_zstdmodule.h" />
+    <ClInclude Include="..\Modules\_zstd\buffer.h" />
+    <ClInclude Include="$(zstdDir)lib\common\bitstream.h" />
+    <ClInclude Include="$(zstdDir)lib\common\error_private.h" />
+    <ClInclude Include="$(zstdDir)lib\common\fse.h" />
+    <ClInclude Include="$(zstdDir)lib\common\huf.h" />
+    <ClInclude Include="$(zstdDir)lib\common\mem.h" />
+    <ClInclude Include="$(zstdDir)lib\common\pool.h" />
+    <ClInclude Include="$(zstdDir)lib\common\threading.h" />
+    <ClInclude Include="$(zstdDir)lib\common\xxhash.h" />
+    <ClInclude Include="$(zstdDir)lib\common\zstd_internal.h" />
+    <ClInclude Include="$(zstdDir)lib\compress\zstd_compress.h" />
+    <ClInclude Include="$(zstdDir)lib\compress\zstd_compress_literals.h" />
+    <ClInclude Include="$(zstdDir)lib\compress\zstd_compress_sequences.h" />
+    <ClInclude Include="$(zstdDir)lib\compress\zstd_compress_superblock.h" />
+    <ClInclude Include="$(zstdDir)lib\compress\zstd_cwksp.h" />
+    <ClInclude Include="$(zstdDir)lib\compress\zstd_double_fast.h" />
+    <ClInclude Include="$(zstdDir)lib\compress\zstd_fast.h" />
+    <ClInclude Include="$(zstdDir)lib\compress\zstd_lazy.h" />
+    <ClInclude Include="$(zstdDir)lib\compress\zstd_ldm.h" />
+    <ClInclude Include="$(zstdDir)lib\compress\zstd_opt.h" />
+    <ClInclude Include="$(zstdDir)lib\compress\zstdmt_compress.h" />
+    <ClInclude Include="$(zstdDir)lib\decompress\zstd_ddict.h" />
+    <ClInclude Include="$(zstdDir)lib\zstd.h" />
+    <ClInclude Include="$(zstdDir)lib\zstd_errors.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\PC\python_nt.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="pythoncore.vcxproj">
+      <Project>{cf7ac3d1-e2df-41d2-bea6-1e2556cdea26}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
diff --git a/PCbuild/_zstd.vcxproj.filters b/PCbuild/_zstd.vcxproj.filters
new file mode 100644
index 00000000000000..d4d36063c85d09
--- /dev/null
+++ b/PCbuild/_zstd.vcxproj.filters
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
+  <ItemGroup>
+    <Filter Include="Source Files">
+      
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files">
+      
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Resource Files">
+      
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\zstd">
+      
<UniqueIdentifier>{971714e1-ff37-4240-87bf-a36f6afe764f}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\zstd">
+      
<UniqueIdentifier>{deb43fb6-fa77-4c93-a333-85785fe5f68d}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\Modules\_zstd\_zstdmodule.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\Modules\_zstd\compressor.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\Modules\_zstd\decompressor.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\Modules\_zstd\zstddict.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\common\debug.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\common\entropy_common.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\common\error_private.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\common\fse_decompress.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\common\pool.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\common\threading.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\common\xxhash.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\common\zstd_common.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\compress\fse_compress.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\compress\hist.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\compress\huf_compress.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\compress\zstd_compress.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\compress\zstd_compress_literals.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\compress\zstd_compress_sequences.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\compress\zstd_compress_superblock.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\compress\zstd_double_fast.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\compress\zstd_fast.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\compress\zstd_lazy.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\compress\zstd_ldm.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\compress\zstd_opt.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\compress\zstd_preSplit.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\compress\zstdmt_compress.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\decompress\huf_decompress.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\decompress\zstd_ddict.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\decompress\zstd_decompress.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\decompress\zstd_decompress_block.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\dictBuilder\cover.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\dictBuilder\divsufsort.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\dictBuilder\fastcover.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+    <ClCompile Include="$(zstdDir)lib\dictBuilder\zdict.c">
+      <Filter>Source Files\zstd</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\Modules\_zstd\_zstdmodule.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\Modules\_zstd\buffer.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="$(zstdDir)lib\zstd.h">
+      <Filter>Header Files\zstd</Filter>
+    </ClInclude>
+    <ClInclude Include="$(zstdDir)lib\zstd_errors.h">
+      <Filter>Header Files\zstd</Filter>
+    </ClInclude>
+    <ClInclude Include="$(zstdDir)lib\common\bitstream.h">
+      <Filter>Header Files\zstd</Filter>
+    </ClInclude>
+    <ClInclude Include="$(zstdDir)lib\common\error_private.h">
+      <Filter>Header Files\zstd</Filter>
+    </ClInclude>
+    <ClInclude Include="$(zstdDir)lib\common\fse.h">
+      <Filter>Header Files\zstd</Filter>
+    </ClInclude>
+    <ClInclude Include="$(zstdDir)lib\common\huf.h">
+      <Filter>Header Files\zstd</Filter>
+    </ClInclude>
+    <ClInclude Include="$(zstdDir)lib\common\mem.h">
+      <Filter>Header Files\zstd</Filter>
+    </ClInclude>
+    <ClInclude Include="$(zstdDir)lib\common\pool.h">
+      <Filter>Header Files\zstd</Filter>
+    </ClInclude>
+    <ClInclude Include="$(zstdDir)lib\common\threading.h">
+      <Filter>Header Files\zstd</Filter>
+    </ClInclude>
+    <ClInclude Include="$(zstdDir)lib\common\xxhash.h">
+      <Filter>Header Files\zstd</Filter>
+    </ClInclude>
+    <ClInclude Include="$(zstdDir)lib\common\zstd_internal.h">
+      <Filter>Header Files\zstd</Filter>
+    </ClInclude>
+    <ClInclude Include="$(zstdDir)lib\compress\zstd_compress.h">
+      <Filter>Header Files\zstd</Filter>
+    </ClInclude>
+    <ClInclude Include="$(zstdDir)lib\compress\zstd_compress_literals.h">
+      <Filter>Header Files\zstd</Filter>
+    </ClInclude>
+    <ClInclude Include="$(zstdDir)lib\compress\zstd_compress_sequences.h">
+      <Filter>Header Files\zstd</Filter>
+    </ClInclude>
+    <ClInclude Include="$(zstdDir)lib\compress\zstd_compress_superblock.h">
+      <Filter>Header Files\zstd</Filter>
+    </ClInclude>
+    <ClInclude Include="$(zstdDir)lib\compress\zstd_cwksp.h">
+      <Filter>Header Files\zstd</Filter>
+    </ClInclude>
+    <ClInclude Include="$(zstdDir)lib\compress\zstd_double_fast.h">
+      <Filter>Header Files\zstd</Filter>
+    </ClInclude>
+    <ClInclude Include="$(zstdDir)lib\compress\zstd_fast.h">
+      <Filter>Header Files\zstd</Filter>
+    </ClInclude>
+    <ClInclude Include="$(zstdDir)lib\compress\zstd_lazy.h">
+      <Filter>Header Files\zstd</Filter>
+    </ClInclude>
+    <ClInclude Include="$(zstdDir)lib\compress\zstd_ldm.h">
+      <Filter>Header Files\zstd</Filter>
+    </ClInclude>
+    <ClInclude Include="$(zstdDir)lib\compress\zstd_opt.h">
+      <Filter>Header Files\zstd</Filter>
+    </ClInclude>
+    <ClInclude Include="$(zstdDir)lib\compress\zstdmt_compress.h">
+      <Filter>Header Files\zstd</Filter>
+    </ClInclude>
+    <ClInclude Include="$(zstdDir)lib\decompress\zstd_ddict.h">
+      <Filter>Header Files\zstd</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\PC\python_nt.rc">
+      <Filter>Resource Files</Filter>
+    </ResourceCompile>
+  </ItemGroup>
+</Project>
diff --git a/PCbuild/get_externals.bat b/PCbuild/get_externals.bat
index 49ace616793d8e..e29054f5734d49 100644
--- a/PCbuild/get_externals.bat
+++ b/PCbuild/get_externals.bat
@@ -61,6 +61,7 @@ if NOT "%IncludeTkinterSrc%"=="false" set 
libraries=%libraries% tcl-core-8.6.15.
 if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tk-8.6.15.0
 set libraries=%libraries%                                       xz-5.2.5
 set libraries=%libraries%                                       zlib-ng-2.2.4
+set libraries=%libraries%                                       zstd-1.5.7
 
 for %%e in (%libraries%) do (
     if exist "%EXTERNALS_DIR%\%%e" (
diff --git a/PCbuild/pcbuild.proj b/PCbuild/pcbuild.proj
index da603eed1b332f..7a5327bf016cea 100644
--- a/PCbuild/pcbuild.proj
+++ b/PCbuild/pcbuild.proj
@@ -69,7 +69,7 @@
     <ExtensionModules 
Include="_asyncio;_decimal;_elementtree;_multiprocessing;_overlapped;pyexpat;_queue;_remote_debugging;select;unicodedata;winsound;_uuid;_wmi;_zoneinfo"
 />
     <ExtensionModules Include="_ctypes" Condition="$(IncludeCTypes)" />
     <!-- Extension modules that require external sources -->
-    <ExternalModules Include="_bz2;_lzma;_sqlite3" />
+    <ExternalModules Include="_bz2;_lzma;_sqlite3;_zstd" />
     <!-- venv launchers -->
     <Projects Include="venvlauncher.vcxproj;venvwlauncher.vcxproj" />
     <!-- _ssl will build _socket as well, which may cause conflicts in 
parallel builds -->
diff --git a/PCbuild/pcbuild.sln b/PCbuild/pcbuild.sln
index 45e46095c9942e..7296ea75301157 100644
--- a/PCbuild/pcbuild.sln
+++ b/PCbuild/pcbuild.sln
@@ -11,6 +11,7 @@ EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python", 
"python.vcxproj", "{B11D750F-CD1F-4A96-85CE-E69A5C5259F9}"
        ProjectSection(ProjectDependencies) = postProject
                {01FDF29A-40A1-46DF-84F5-85EBBD2A2410} = 
{01FDF29A-40A1-46DF-84F5-85EBBD2A2410}
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1} = 
{07029B86-F3E9-443E-86FB-78AA6D47FED1}
                {0E9791DB-593A-465F-98BC-681011311617} = 
{0E9791DB-593A-465F-98BC-681011311617}
                {0E9791DB-593A-465F-98BC-681011311618} = 
{0E9791DB-593A-465F-98BC-681011311618}
                {12728250-16EC-4DC6-94D7-E21DD88947F8} = 
{12728250-16EC-4DC6-94D7-E21DD88947F8}
@@ -165,6 +166,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = 
"zlib-ng", "zlib-ng.vcxproj"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_remote_debugging", 
"_remote_debugging.vcxproj", "{4D7C112F-3083-4D9E-9754-9341C14D9B39}"
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_zstd", "_zstd.vcxproj", 
"{07029B86-F3E9-443E-86FB-78AA6D47FED1}"
+EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
                Debug|ARM = Debug|ARM
@@ -1750,6 +1753,38 @@ Global
                {4D7C112F-3083-4D9E-9754-9341C14D9B39}.Release|Win32.Build.0 = 
Release|Win32
                {4D7C112F-3083-4D9E-9754-9341C14D9B39}.Release|x64.ActiveCfg = 
Release|x64
                {4D7C112F-3083-4D9E-9754-9341C14D9B39}.Release|x64.Build.0 = 
Release|x64
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.Debug|ARM.ActiveCfg = 
Debug|ARM
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.Debug|ARM.Build.0 = 
Debug|ARM
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.Debug|ARM64.ActiveCfg = 
Debug|ARM64
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.Debug|ARM64.Build.0 = 
Debug|ARM64
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.Debug|Win32.ActiveCfg = 
Debug|Win32
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.Debug|Win32.Build.0 = 
Debug|Win32
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.Debug|x64.ActiveCfg = 
Debug|x64
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.Debug|x64.Build.0 = 
Debug|x64
+               
{07029B86-F3E9-443E-86FB-78AA6D47FED1}.PGInstrument|ARM.ActiveCfg = 
PGInstrument|ARM
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.PGInstrument|ARM.Build.0 
= PGInstrument|ARM
+               
{07029B86-F3E9-443E-86FB-78AA6D47FED1}.PGInstrument|ARM64.ActiveCfg = 
PGInstrument|ARM64
+               
{07029B86-F3E9-443E-86FB-78AA6D47FED1}.PGInstrument|ARM64.Build.0 = 
PGInstrument|ARM64
+               
{07029B86-F3E9-443E-86FB-78AA6D47FED1}.PGInstrument|Win32.ActiveCfg = 
PGInstrument|Win32
+               
{07029B86-F3E9-443E-86FB-78AA6D47FED1}.PGInstrument|Win32.Build.0 = 
PGInstrument|Win32
+               
{07029B86-F3E9-443E-86FB-78AA6D47FED1}.PGInstrument|x64.ActiveCfg = 
PGInstrument|x64
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.PGInstrument|x64.Build.0 
= PGInstrument|x64
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.PGUpdate|ARM.ActiveCfg = 
PGUpdate|ARM
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.PGUpdate|ARM.Build.0 = 
PGUpdate|ARM
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.PGUpdate|ARM64.ActiveCfg 
= PGUpdate|ARM64
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.PGUpdate|ARM64.Build.0 = 
PGUpdate|ARM64
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.PGUpdate|Win32.ActiveCfg 
= PGUpdate|Win32
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.PGUpdate|Win32.Build.0 = 
PGUpdate|Win32
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.PGUpdate|x64.ActiveCfg = 
PGUpdate|x64
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.PGUpdate|x64.Build.0 = 
PGUpdate|x64
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.Release|ARM.ActiveCfg = 
Release|ARM
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.Release|ARM.Build.0 = 
Release|ARM
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.Release|ARM64.ActiveCfg 
= Release|ARM64
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.Release|ARM64.Build.0 = 
Release|ARM64
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.Release|Win32.ActiveCfg 
= Release|Win32
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.Release|Win32.Build.0 = 
Release|Win32
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.Release|x64.ActiveCfg = 
Release|x64
+               {07029B86-F3E9-443E-86FB-78AA6D47FED1}.Release|x64.Build.0 = 
Release|x64
        EndGlobalSection
        GlobalSection(SolutionProperties) = preSolution
                HideSolutionNode = FALSE
diff --git a/PCbuild/python.props b/PCbuild/python.props
index 7cb9ad8e65b56e..ddc7696d2762fe 100644
--- a/PCbuild/python.props
+++ b/PCbuild/python.props
@@ -87,6 +87,7 @@
     <nasmDir Condition="$(nasmDir) == 
''">$(ExternalsDir)\nasm-2.11.06\</nasmDir>
     <zlibDir Condition="$(zlibDir) == ''">$(ExternalsDir)\zlib-1.3.1\</zlibDir>
     <zlibNgDir Condition="$(zlibNgDir) == 
''">$(ExternalsDir)\zlib-ng-2.2.4\</zlibNgDir>
+    <zstdDir Condition="$(zstdDir) == ''">$(ExternalsDir)\zstd-1.5.7\</zstdDir>
   </PropertyGroup>
 
   <PropertyGroup>
diff --git a/PCbuild/readme.txt b/PCbuild/readme.txt
index 3bf215d907c52c..01e19aabdecdc7 100644
--- a/PCbuild/readme.txt
+++ b/PCbuild/readme.txt
@@ -262,6 +262,10 @@ zlib-ng
 
     Sources for zlib-ng are imported unmodified into our source
     repository at https://github.com/python/cpython-source-deps.
+_zstd
+    Python wrapper for version 1.5.7 of the Zstandard compression library
+    Homepage:
+        https://facebook.github.io/zstd/
 
 
 Getting External Sources
diff --git a/PCbuild/regen.targets b/PCbuild/regen.targets
index e7822a126c6304..3ad17737807235 100644
--- a/PCbuild/regen.targets
+++ b/PCbuild/regen.targets
@@ -157,7 +157,8 @@
     <_LicenseSources Include="$(PySourcePath)LICENSE;
                               $(PySourcePath)PC\crtlicense.txt;
                               $(bz2Dir)LICENSE;
-                              $(libffiDir)LICENSE;" />
+                              $(libffiDir)LICENSE;
+                              $(zstdDir)\LICENSE;" />
     <_LicenseSources Include="$(opensslOutDir)LICENSE.txt" 
Condition="Exists('$(opensslOutDir)LICENSE.txt')" />
     <_LicenseSources Include="$(opensslOutDir)LICENSE" 
Condition="!Exists('$(opensslOutDir)LICENSE.txt')" />
     <_LicenseSources Include="$(tcltkDir)tcllicense.terms;
diff --git a/Tools/msi/freethreaded/freethreaded_files.wxs 
b/Tools/msi/freethreaded/freethreaded_files.wxs
index b3ce28e7aedc84..86d9a8b83f6535 100644
--- a/Tools/msi/freethreaded/freethreaded_files.wxs
+++ b/Tools/msi/freethreaded/freethreaded_files.wxs
@@ -103,7 +103,7 @@
         </ComponentGroup>
     </Fragment>
 
-    <?define 
exts=pyexpat;select;unicodedata;winsound;_bz2;_elementtree;_socket;_ssl;_ctypes;_hashlib;_multiprocessing;_lzma;_decimal;_overlapped;_sqlite3;_asyncio;_queue;_uuid;_wmi;_zoneinfo;_testcapi;_ctypes_test;_testbuffer;_testimportmultiple;_testmultiphase;_testsinglephase;_testconsole;_testinternalcapi;_testclinic;_testclinic_limited;_tkinter
 ?>
+    <?define 
exts=pyexpat;select;unicodedata;winsound;_bz2;_elementtree;_socket;_ssl;_ctypes;_hashlib;_multiprocessing;_lzma;_decimal;_overlapped;_sqlite3;_asyncio;_queue;_uuid;_wmi;_zoneinfo;_zstd;_testcapi;_ctypes_test;_testbuffer;_testimportmultiple;_testmultiphase;_testsinglephase;_testconsole;_testinternalcapi;_testclinic;_testclinic_limited;_tkinter
 ?>
     <Fragment>
         <DirectoryRef Id="Lib_venv_scripts_nt__freethreaded" />
 
diff --git a/Tools/msi/lib/lib_files.wxs b/Tools/msi/lib/lib_files.wxs
index b8e16b5fe238a0..8439518bcbd804 100644
--- a/Tools/msi/lib/lib_files.wxs
+++ b/Tools/msi/lib/lib_files.wxs
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi";>
-    <?define 
exts=pyexpat;select;unicodedata;winsound;_bz2;_elementtree;_socket;_ssl;_ctypes;_hashlib;_multiprocessing;_lzma;_decimal;_overlapped;_sqlite3;_asyncio;_queue;_uuid;_wmi;_zoneinfo
 ?>
+    <?define 
exts=pyexpat;select;unicodedata;winsound;_bz2;_elementtree;_socket;_ssl;_ctypes;_hashlib;_multiprocessing;_lzma;_decimal;_overlapped;_sqlite3;_asyncio;_queue;_uuid;_wmi;_zoneinfo;_zstd
 ?>
     <Fragment>
         <DirectoryRef Id="Lib_venv_scripts_nt" />
 
diff --git a/configure b/configure
index a1069509406a34..383b8b53b57d92 100755
--- a/configure
+++ b/configure
@@ -29769,9 +29769,9 @@ SRCDIRS="\
   Modules/_testinternalcapi \
   Modules/_testlimitedcapi \
   Modules/_xxtestfuzz \
+  Modules/_zstd \
   Modules/cjkcodecs \
   Modules/expat \
-  Modules/_zstd \
   Objects \
   Objects/mimalloc \
   Objects/mimalloc/prim \
diff --git a/configure.ac b/configure.ac
index 4efd0328691d19..2c77f3ae9fee58 100644
--- a/configure.ac
+++ b/configure.ac
@@ -7119,9 +7119,9 @@ SRCDIRS="\
   Modules/_testinternalcapi \
   Modules/_testlimitedcapi \
   Modules/_xxtestfuzz \
+  Modules/_zstd \
   Modules/cjkcodecs \
   Modules/expat \
-  Modules/_zstd \
   Objects \
   Objects/mimalloc \
   Objects/mimalloc/prim \

_______________________________________________
Python-checkins mailing list -- python-checkins@python.org
To unsubscribe send an email to python-checkins-le...@python.org
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: arch...@mail-archive.com

Reply via email to