Skip to content

Commit 4394639

Browse files
committed
Adding Brotli compression for Windows
The required native methods will be compiled into the mono-bdwgc and mono-sgen dlls. Changing the dll name for PInvokes targeting Brotli on Windows to __Internal so the calls will get picked up by the mono.dll.
1 parent 037331c commit 4394639

File tree

5 files changed

+421
-0
lines changed

5 files changed

+421
-0
lines changed

mcs/class/System.IO.Compression/corefx/Interop.Libraries.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ internal static partial class Interop
66
{
77
internal static partial class Libraries
88
{
9+
#if WIN_PLATFORM
10+
internal const string CompressionNative = "__Internal";
11+
#else
912
internal const string CompressionNative = "System.Native";
13+
#endif
1014
}
1115
}

msvc/clrcompression.targets

Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<ItemGroup Label="clrcompression">
4+
<ClCompile Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\common\dictionary.c">
5+
<CompileAs>CompileAsC</CompileAs>
6+
<AdditionalIncludeDirectories>$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
7+
<PreprocessorDefinitions>%(PreprocessorDefinitions);DLLEXPORT=__declspec(dllexport);BROTLI_SHARED_COMPILATION</PreprocessorDefinitions>
8+
</ClCompile>
9+
<ClCompile Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\dec\bit_reader.c">
10+
<CompileAs>CompileAsC</CompileAs>
11+
<AdditionalIncludeDirectories>$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
12+
<PreprocessorDefinitions>%(PreprocessorDefinitions);DLLEXPORT=__declspec(dllexport);BROTLI_SHARED_COMPILATION</PreprocessorDefinitions>
13+
</ClCompile>
14+
<ClCompile Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\dec\decode.c">
15+
<CompileAs>CompileAsC</CompileAs>
16+
<AdditionalIncludeDirectories>$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
17+
<PreprocessorDefinitions>%(PreprocessorDefinitions);DLLEXPORT=__declspec(dllexport);BROTLI_SHARED_COMPILATION</PreprocessorDefinitions>
18+
</ClCompile>
19+
<ClCompile Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\dec\huffman.c">
20+
<CompileAs>CompileAsC</CompileAs>
21+
<AdditionalIncludeDirectories>$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
22+
<PreprocessorDefinitions>%(PreprocessorDefinitions);DLLEXPORT=__declspec(dllexport);BROTLI_SHARED_COMPILATION</PreprocessorDefinitions>
23+
</ClCompile>
24+
<ClCompile Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\dec\state.c">
25+
<CompileAs>CompileAsC</CompileAs>
26+
<AdditionalIncludeDirectories>$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
27+
<PreprocessorDefinitions>%(PreprocessorDefinitions);DLLEXPORT=__declspec(dllexport);BROTLI_SHARED_COMPILATION</PreprocessorDefinitions>
28+
</ClCompile>
29+
<ClCompile Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\backward_references.c">
30+
<CompileAs>CompileAsC</CompileAs>
31+
<AdditionalIncludeDirectories>$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
32+
<PreprocessorDefinitions>%(PreprocessorDefinitions);DLLEXPORT=__declspec(dllexport);BROTLI_SHARED_COMPILATION</PreprocessorDefinitions>
33+
</ClCompile>
34+
<ClCompile Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\backward_references_hq.c">
35+
<CompileAs>CompileAsC</CompileAs>
36+
<AdditionalIncludeDirectories>$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
37+
<PreprocessorDefinitions>%(PreprocessorDefinitions);DLLEXPORT=__declspec(dllexport);BROTLI_SHARED_COMPILATION</PreprocessorDefinitions>
38+
</ClCompile>
39+
<ClCompile Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\bit_cost.c">
40+
<CompileAs>CompileAsC</CompileAs>
41+
<AdditionalIncludeDirectories>$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
42+
<PreprocessorDefinitions>%(PreprocessorDefinitions);DLLEXPORT=__declspec(dllexport);BROTLI_SHARED_COMPILATION</PreprocessorDefinitions>
43+
</ClCompile>
44+
<ClCompile Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\block_splitter.c">
45+
<CompileAs>CompileAsC</CompileAs>
46+
<AdditionalIncludeDirectories>$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
47+
<PreprocessorDefinitions>%(PreprocessorDefinitions);DLLEXPORT=__declspec(dllexport);BROTLI_SHARED_COMPILATION</PreprocessorDefinitions>
48+
</ClCompile>
49+
<ClCompile Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\brotli_bit_stream.c">
50+
<CompileAs>CompileAsC</CompileAs>
51+
<AdditionalIncludeDirectories>$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
52+
<PreprocessorDefinitions>%(PreprocessorDefinitions);DLLEXPORT=__declspec(dllexport);BROTLI_SHARED_COMPILATION</PreprocessorDefinitions>
53+
</ClCompile>
54+
<ClCompile Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\cluster.c">
55+
<CompileAs>CompileAsC</CompileAs>
56+
<AdditionalIncludeDirectories>$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
57+
<PreprocessorDefinitions>%(PreprocessorDefinitions);DLLEXPORT=__declspec(dllexport);BROTLI_SHARED_COMPILATION</PreprocessorDefinitions>
58+
</ClCompile>
59+
<ClCompile Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\compress_fragment.c">
60+
<CompileAs>CompileAsC</CompileAs>
61+
<AdditionalIncludeDirectories>$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
62+
<PreprocessorDefinitions>%(PreprocessorDefinitions);DLLEXPORT=__declspec(dllexport);BROTLI_SHARED_COMPILATION</PreprocessorDefinitions>
63+
</ClCompile>
64+
<ClCompile Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\compress_fragment_two_pass.c">
65+
<CompileAs>CompileAsC</CompileAs>
66+
<AdditionalIncludeDirectories>$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
67+
<PreprocessorDefinitions>%(PreprocessorDefinitions);DLLEXPORT=__declspec(dllexport);BROTLI_SHARED_COMPILATION</PreprocessorDefinitions>
68+
</ClCompile>
69+
<ClCompile Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\dictionary_hash.c">
70+
<CompileAs>CompileAsC</CompileAs>
71+
<AdditionalIncludeDirectories>$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
72+
<PreprocessorDefinitions>%(PreprocessorDefinitions);DLLEXPORT=__declspec(dllexport);BROTLI_SHARED_COMPILATION</PreprocessorDefinitions>
73+
</ClCompile>
74+
<ClCompile Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\encode.c">
75+
<CompileAs>CompileAsC</CompileAs>
76+
<AdditionalIncludeDirectories>$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
77+
<PreprocessorDefinitions>%(PreprocessorDefinitions);DLLEXPORT=__declspec(dllexport);BROTLI_SHARED_COMPILATION</PreprocessorDefinitions>
78+
</ClCompile>
79+
<ClCompile Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\entropy_encode.c">
80+
<CompileAs>CompileAsC</CompileAs>
81+
<AdditionalIncludeDirectories>$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
82+
<PreprocessorDefinitions>%(PreprocessorDefinitions);DLLEXPORT=__declspec(dllexport);BROTLI_SHARED_COMPILATION</PreprocessorDefinitions>
83+
</ClCompile>
84+
<ClCompile Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\histogram.c">
85+
<CompileAs>CompileAsC</CompileAs>
86+
<AdditionalIncludeDirectories>$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
87+
<PreprocessorDefinitions>%(PreprocessorDefinitions);DLLEXPORT=__declspec(dllexport);BROTLI_SHARED_COMPILATION</PreprocessorDefinitions>
88+
</ClCompile>
89+
<ClCompile Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\literal_cost.c">
90+
<CompileAs>CompileAsC</CompileAs>
91+
<AdditionalIncludeDirectories>$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
92+
<PreprocessorDefinitions>%(PreprocessorDefinitions);DLLEXPORT=__declspec(dllexport);BROTLI_SHARED_COMPILATION</PreprocessorDefinitions>
93+
</ClCompile>
94+
<ClCompile Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\memory.c">
95+
<CompileAs>CompileAsC</CompileAs>
96+
<AdditionalIncludeDirectories>$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
97+
<PreprocessorDefinitions>%(PreprocessorDefinitions);DLLEXPORT=__declspec(dllexport);BROTLI_SHARED_COMPILATION</PreprocessorDefinitions>
98+
</ClCompile>
99+
<ClCompile Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\metablock.c">
100+
<CompileAs>CompileAsC</CompileAs>
101+
<AdditionalIncludeDirectories>$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
102+
<PreprocessorDefinitions>%(PreprocessorDefinitions);DLLEXPORT=__declspec(dllexport);BROTLI_SHARED_COMPILATION</PreprocessorDefinitions>
103+
</ClCompile>
104+
<ClCompile Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\static_dict.c">
105+
<CompileAs>CompileAsC</CompileAs>
106+
<AdditionalIncludeDirectories>$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
107+
<PreprocessorDefinitions>%(PreprocessorDefinitions);DLLEXPORT=__declspec(dllexport);BROTLI_SHARED_COMPILATION</PreprocessorDefinitions>
108+
</ClCompile>
109+
<ClCompile Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\utf8_util.c">
110+
<CompileAs>CompileAsC</CompileAs>
111+
<AdditionalIncludeDirectories>$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
112+
<PreprocessorDefinitions>%(PreprocessorDefinitions);DLLEXPORT=__declspec(dllexport);BROTLI_SHARED_COMPILATION</PreprocessorDefinitions>
113+
</ClCompile>
114+
115+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\common\constants.h"/>
116+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\common\dictionary.h"/>
117+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\common\version.h"/>
118+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\dec\bit_reader.h"/>
119+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\dec\context.h"/>
120+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\dec\huffman.h"/>
121+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\dec\port.h"/>
122+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\dec\prefix.h"/>
123+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\dec\state.h"/>
124+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\dec\transform.h"/>
125+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\backward_references.h"/>
126+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\backward_references_hq.h"/>
127+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\backward_references_inc.h"/>
128+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\bit_cost.h"/>
129+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\bit_cost_inc.h"/>
130+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\block_encoder_inc.h"/>
131+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\block_splitter.h"/>
132+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\block_splitter_inc.h"/>
133+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\brotli_bit_stream.h"/>
134+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\cluster.h"/>
135+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\cluster_inc.h"/>
136+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\command.h"/>
137+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\compress_fragment.h"/>
138+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\compress_fragment_two_pass.h"/>
139+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\context.h"/>
140+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\dictionary_hash.h"/>
141+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\entropy_encode.h"/>
142+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\entropy_encode_static.h"/>
143+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\fast_log.h"/>
144+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\find_match_length.h"/>
145+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\hash.h"/>
146+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\hash_forgetful_chain_inc.h"/>
147+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\hash_longest_match64_inc.h"/>
148+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\hash_longest_match_inc.h"/>
149+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\hash_longest_match_quickly_inc.h"/>
150+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\hash_to_binary_tree_inc.h"/>
151+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\histogram.h"/>
152+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\histogram_inc.h"/>
153+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\literal_cost.h"/>
154+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\memory.h"/>
155+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\metablock.h"/>
156+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\metablock_inc.h"/>
157+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\port.h"/>
158+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\prefix.h"/>
159+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\quality.h"/>
160+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\ringbuffer.h"/>
161+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\static_dict.h"/>
162+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\static_dict_lut.h"/>
163+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\utf8_util.h"/>
164+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\enc\write_bits.h"/>
165+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include\brotli\decode.h"/>
166+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include\brotli\encode.h"/>
167+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include\brotli\port.h"/>
168+
<ClInclude Include="$(MonoSourceLocation)\external\corefx\src\Native\AnyOS\brotli\include\brotli\types.h"/>
169+
170+
</ItemGroup>
171+
</Project>

0 commit comments

Comments
 (0)