Skip to content

Commit d16f455

Browse files
authored
GH-131521: Uses correct build flags for zlib-ng on Windows (GH-131526)
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.
1 parent 1d6a2e6 commit d16f455

File tree

1 file changed

+40
-13
lines changed

1 file changed

+40
-13
lines changed

PCbuild/zlib-ng.vcxproj

+40-13
Original file line numberDiff line numberDiff line change
@@ -90,14 +90,15 @@
9090
<ItemDefinitionGroup>
9191
<ClCompile>
9292
<AdditionalOptions>%(AdditionalOptions) /utf-8 /w34242</AdditionalOptions>
93+
<AdditionalOptions Condition="$(SupportPGO) and $(Configuration) == 'PGUpdate' and $(PlatformToolset) == 'ClangCL'">%(AdditionalOptions) -fno-profile-instr-use</AdditionalOptions>
9394
<DisableSpecificWarnings>4206;4054;4324</DisableSpecificWarnings>
9495
<LanguageStandard_C>stdc11</LanguageStandard_C>
9596
<PrecompiledHeader>NotUsing</PrecompiledHeader>
9697
<AdditionalIncludeDirectories>$(zlibNgDir);$(PySourceDir)PC;$(GeneratedZlibNgDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
9798
<PreprocessorDefinitions>%(PreprocessorDefinitions);ZLIB_COMPAT;WITH_GZFILEOP;NO_FSEEKO;HAVE_BUILTIN_ASSUME_ALIGNED;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;</PreprocessorDefinitions>
9899
<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>
99100
<PreprocessorDefinitions Condition="$(Configuration) == 'Debug'">%(PreprocessorDefinitions);ZLIB_DEBUG</PreprocessorDefinitions>
100-
<EnableEnhancedInstructionSet Condition="$(Platform) == 'Win32' or $(Platform) == 'x64'">AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
101+
<PreprocessorDefinitions Condition="$(PlatformToolset) == 'ClangCL'">%(PreprocessorDefinitions);HAVE_BUILTIN_CTZ</PreprocessorDefinitions>
101102
</ClCompile>
102103
</ItemDefinitionGroup>
103104
<ItemGroup>
@@ -141,18 +142,44 @@
141142
<ClCompile Include="$(zlibNgDir)\arch\x86\chunkset_sse2.c" />
142143
<ClCompile Include="$(zlibNgDir)\arch\x86\compare256_sse2.c" />
143144
<ClCompile Include="$(zlibNgDir)\arch\x86\slide_hash_sse2.c" />
144-
<ClCompile Include="$(zlibNgDir)\arch\x86\adler32_ssse3.c" />
145-
<ClCompile Include="$(zlibNgDir)\arch\x86\chunkset_ssse3.c" />
146-
<ClCompile Include="$(zlibNgDir)\arch\x86\adler32_sse42.c" />
147-
<ClCompile Include="$(zlibNgDir)\arch\x86\crc32_pclmulqdq.c" />
148-
<ClCompile Include="$(zlibNgDir)\arch\x86\slide_hash_avx2.c" />
149-
<ClCompile Include="$(zlibNgDir)\arch\x86\chunkset_avx2.c" />
150-
<ClCompile Include="$(zlibNgDir)\arch\x86\compare256_avx2.c" />
151-
<ClCompile Include="$(zlibNgDir)\arch\x86\adler32_avx2.c" />
152-
<ClCompile Include="$(zlibNgDir)\arch\x86\adler32_avx512.c" />
153-
<ClCompile Include="$(zlibNgDir)\arch\x86\chunkset_avx512.c" />
154-
<ClCompile Include="$(zlibNgDir)\arch\x86\adler32_avx512_vnni.c" />
155-
<ClCompile Include="$(zlibNgDir)\arch\x86\crc32_vpclmulqdq.c" />
145+
<ClCompile Include="$(zlibNgDir)\arch\x86\adler32_ssse3.c">
146+
<AdditionalOptions Condition="$(PlatformToolset) == 'ClangCL'">%(AdditionalOptions) -mssse3</AdditionalOptions>
147+
</ClCompile>
148+
<ClCompile Include="$(zlibNgDir)\arch\x86\chunkset_ssse3.c">
149+
<AdditionalOptions Condition="$(PlatformToolset) == 'ClangCL'">%(AdditionalOptions) -mssse3</AdditionalOptions>
150+
</ClCompile>
151+
<ClCompile Include="$(zlibNgDir)\arch\x86\adler32_sse42.c">
152+
<AdditionalOptions Condition="$(PlatformToolset) == 'ClangCL'">%(AdditionalOptions) -msse4.2</AdditionalOptions>
153+
</ClCompile>
154+
<ClCompile Include="$(zlibNgDir)\arch\x86\crc32_pclmulqdq.c">
155+
<AdditionalOptions Condition="$(PlatformToolset) == 'ClangCL'">%(AdditionalOptions) -mssse3 -mpclmul</AdditionalOptions>
156+
</ClCompile>
157+
<ClCompile Include="$(zlibNgDir)\arch\x86\slide_hash_avx2.c">
158+
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
159+
</ClCompile>
160+
<ClCompile Include="$(zlibNgDir)\arch\x86\chunkset_avx2.c">
161+
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
162+
</ClCompile>
163+
<ClCompile Include="$(zlibNgDir)\arch\x86\compare256_avx2.c">
164+
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
165+
</ClCompile>
166+
<ClCompile Include="$(zlibNgDir)\arch\x86\adler32_avx2.c">
167+
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
168+
</ClCompile>
169+
<ClCompile Include="$(zlibNgDir)\arch\x86\adler32_avx512.c">
170+
<EnableEnhancedInstructionSet>AdvancedVectorExtensions512</EnableEnhancedInstructionSet>
171+
</ClCompile>
172+
<ClCompile Include="$(zlibNgDir)\arch\x86\chunkset_avx512.c">
173+
<EnableEnhancedInstructionSet>AdvancedVectorExtensions512</EnableEnhancedInstructionSet>
174+
</ClCompile>
175+
<ClCompile Include="$(zlibNgDir)\arch\x86\adler32_avx512_vnni.c">
176+
<EnableEnhancedInstructionSet>AdvancedVectorExtensions512</EnableEnhancedInstructionSet>
177+
<AdditionalOptions Condition="$(PlatformToolset) == 'ClangCL'">%(AdditionalOptions) -mavx512vnni</AdditionalOptions>
178+
</ClCompile>
179+
<ClCompile Include="$(zlibNgDir)\arch\x86\crc32_vpclmulqdq.c">
180+
<EnableEnhancedInstructionSet>AdvancedVectorExtensions512</EnableEnhancedInstructionSet>
181+
<AdditionalOptions Condition="$(PlatformToolset) == 'ClangCL'">%(AdditionalOptions) -mvpclmulqdq</AdditionalOptions>
182+
</ClCompile>
156183
</ItemGroup>
157184
<ItemGroup>
158185
<ClInclude Include="..\PC\zconf.h" />

0 commit comments

Comments
 (0)