]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
GH-131521: Uses correct build flags for zlib-ng on Windows (GH-131526)
authorChris Eibl <138194463+chris-eibl@users.noreply.github.com>
Mon, 24 Mar 2025 16:21:57 +0000 (17:21 +0100)
committerGitHub <noreply@github.com>
Mon, 24 Mar 2025 16:21:57 +0000 (16:21 +0000)
Do not enable AdvancedVectorExtensions2 for all *.c files, so that the resulting binary can be executed on older CPUs, too. Also enable AdvancedVectorExtensions512 where necessary, and add the ClangCL flags required to enable vector extensions.

PCbuild/zlib-ng.vcxproj

index 12a87d890d92aea461db449cc969fc6127b78785..de1698ae718473a43da20965c4229bb0d71583e7 100644 (file)
@@ -90,6 +90,7 @@
   <ItemDefinitionGroup>
     <ClCompile>
       <AdditionalOptions>%(AdditionalOptions) /utf-8 /w34242</AdditionalOptions>
+      <AdditionalOptions Condition="$(SupportPGO) and $(Configuration) == 'PGUpdate' and $(PlatformToolset) == 'ClangCL'">%(AdditionalOptions) -fno-profile-instr-use</AdditionalOptions>
       <DisableSpecificWarnings>4206;4054;4324</DisableSpecificWarnings>
       <LanguageStandard_C>stdc11</LanguageStandard_C>
       <PrecompiledHeader>NotUsing</PrecompiledHeader>
@@ -97,7 +98,7 @@
       <PreprocessorDefinitions>%(PreprocessorDefinitions);ZLIB_COMPAT;WITH_GZFILEOP;NO_FSEEKO;HAVE_BUILTIN_ASSUME_ALIGNED;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;</PreprocessorDefinitions>
       <PreprocessorDefinitions Condition="$(Platform) == 'Win32' or $(Platform) == 'x64'">%(PreprocessorDefinitions);X86_FEATURES;X86_HAVE_XSAVE_INTRIN;X86_SSE2;X86_SSSE3;X86_SSE42;X86_PCLMULQDQ_CRC;X86_AVX2;X86_AVX512;X86_AVX512VNNI;X86_VPCLMULQDQ_CRC</PreprocessorDefinitions>
       <PreprocessorDefinitions Condition="$(Configuration) == 'Debug'">%(PreprocessorDefinitions);ZLIB_DEBUG</PreprocessorDefinitions>
-      <EnableEnhancedInstructionSet Condition="$(Platform) == 'Win32' or $(Platform) == 'x64'">AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
+      <PreprocessorDefinitions Condition="$(PlatformToolset) == 'ClangCL'">%(PreprocessorDefinitions);HAVE_BUILTIN_CTZ</PreprocessorDefinitions>
     </ClCompile>
   </ItemDefinitionGroup>
   <ItemGroup>
     <ClCompile Include="$(zlibNgDir)\arch\x86\chunkset_sse2.c" />
     <ClCompile Include="$(zlibNgDir)\arch\x86\compare256_sse2.c" />
     <ClCompile Include="$(zlibNgDir)\arch\x86\slide_hash_sse2.c" />
-    <ClCompile Include="$(zlibNgDir)\arch\x86\adler32_ssse3.c" />
-    <ClCompile Include="$(zlibNgDir)\arch\x86\chunkset_ssse3.c" />
-    <ClCompile Include="$(zlibNgDir)\arch\x86\adler32_sse42.c" />
-    <ClCompile Include="$(zlibNgDir)\arch\x86\crc32_pclmulqdq.c" />
-    <ClCompile Include="$(zlibNgDir)\arch\x86\slide_hash_avx2.c" />
-    <ClCompile Include="$(zlibNgDir)\arch\x86\chunkset_avx2.c" />
-    <ClCompile Include="$(zlibNgDir)\arch\x86\compare256_avx2.c" />
-    <ClCompile Include="$(zlibNgDir)\arch\x86\adler32_avx2.c" />
-    <ClCompile Include="$(zlibNgDir)\arch\x86\adler32_avx512.c" />
-    <ClCompile Include="$(zlibNgDir)\arch\x86\chunkset_avx512.c" />
-    <ClCompile Include="$(zlibNgDir)\arch\x86\adler32_avx512_vnni.c" />
-    <ClCompile Include="$(zlibNgDir)\arch\x86\crc32_vpclmulqdq.c" />
+    <ClCompile Include="$(zlibNgDir)\arch\x86\adler32_ssse3.c">
+      <AdditionalOptions Condition="$(PlatformToolset) == 'ClangCL'">%(AdditionalOptions) -mssse3</AdditionalOptions>
+    </ClCompile>
+    <ClCompile Include="$(zlibNgDir)\arch\x86\chunkset_ssse3.c">
+      <AdditionalOptions Condition="$(PlatformToolset) == 'ClangCL'">%(AdditionalOptions) -mssse3</AdditionalOptions>
+    </ClCompile>
+    <ClCompile Include="$(zlibNgDir)\arch\x86\adler32_sse42.c">
+      <AdditionalOptions Condition="$(PlatformToolset) == 'ClangCL'">%(AdditionalOptions) -msse4.2</AdditionalOptions>
+    </ClCompile>
+    <ClCompile Include="$(zlibNgDir)\arch\x86\crc32_pclmulqdq.c">
+      <AdditionalOptions Condition="$(PlatformToolset) == 'ClangCL'">%(AdditionalOptions) -mssse3 -mpclmul</AdditionalOptions>
+    </ClCompile>
+    <ClCompile Include="$(zlibNgDir)\arch\x86\slide_hash_avx2.c">
+      <EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
+    </ClCompile>
+    <ClCompile Include="$(zlibNgDir)\arch\x86\chunkset_avx2.c">
+      <EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
+    </ClCompile>
+    <ClCompile Include="$(zlibNgDir)\arch\x86\compare256_avx2.c">
+      <EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
+    </ClCompile>
+    <ClCompile Include="$(zlibNgDir)\arch\x86\adler32_avx2.c">
+      <EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
+    </ClCompile>
+    <ClCompile Include="$(zlibNgDir)\arch\x86\adler32_avx512.c">
+      <EnableEnhancedInstructionSet>AdvancedVectorExtensions512</EnableEnhancedInstructionSet>
+    </ClCompile>
+    <ClCompile Include="$(zlibNgDir)\arch\x86\chunkset_avx512.c">
+      <EnableEnhancedInstructionSet>AdvancedVectorExtensions512</EnableEnhancedInstructionSet>
+    </ClCompile>
+    <ClCompile Include="$(zlibNgDir)\arch\x86\adler32_avx512_vnni.c">
+      <EnableEnhancedInstructionSet>AdvancedVectorExtensions512</EnableEnhancedInstructionSet>
+      <AdditionalOptions Condition="$(PlatformToolset) == 'ClangCL'">%(AdditionalOptions) -mavx512vnni</AdditionalOptions>
+    </ClCompile>
+    <ClCompile Include="$(zlibNgDir)\arch\x86\crc32_vpclmulqdq.c">
+      <EnableEnhancedInstructionSet>AdvancedVectorExtensions512</EnableEnhancedInstructionSet>
+      <AdditionalOptions Condition="$(PlatformToolset) == 'ClangCL'">%(AdditionalOptions) -mvpclmulqdq</AdditionalOptions>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\PC\zconf.h" />