|
18 | 18 | </_WasmBuildNativeCoreDependsOn>
|
19 | 19 |
|
20 | 20 | <WasmBuildNativeOnlyDependsOn>
|
| 21 | + _InitializeCommonProperties; |
21 | 22 | _PrepareForWasmBuildNativeOnly;
|
22 | 23 | _WasmBuildNativeCore;
|
23 | 24 | </WasmBuildNativeOnlyDependsOn>
|
|
38 | 39 | <Target Name="WasmBuildNativeOnly" DependsOnTargets="$(WasmBuildNativeOnlyDependsOn)" Condition="'$(WasmBuildNative)' == 'true'" />
|
39 | 40 |
|
40 | 41 | <Target Name="_PrepareForWasmBuildNativeOnly">
|
| 42 | + <MakeDir Directories="$(_WasmIntermediateOutputPath)" /> |
| 43 | + |
41 | 44 | <ItemGroup>
|
42 | 45 | <_WasmAssembliesInternal Remove="@(_WasmAssembliesInternal)" />
|
43 | 46 | <_WasmAssembliesInternal Include="@(WasmAssembliesToBundle->Distinct())" />
|
44 | 47 | </ItemGroup>
|
45 | 48 | </Target>
|
46 | 49 |
|
47 |
| - |
48 | 50 | <Target Name="_SetupEmscripten">
|
49 | 51 | <PropertyGroup>
|
50 | 52 | <_EMSDKMissingPaths Condition="'$(_EMSDKMissingPaths)' == '' and ('$(EmscriptenSdkToolsPath)' == '' or !Exists('$(EmscriptenSdkToolsPath)'))">%24(EmscriptenSdkToolsPath)=$(EmscriptenSdkToolsPath) </_EMSDKMissingPaths>
|
|
115 | 117 |
|
116 | 118 | <PropertyGroup>
|
117 | 119 | <WasmBuildNative Condition="'$(RunAOTCompilation)' == 'true'">true</WasmBuildNative>
|
118 |
| - <WasmBuildNative Condition="'$(WasmBuildNative)' == '' and '$(PublishTrimmed)' != 'true'">false</WasmBuildNative> |
119 |
| - <WasmBuildNative Condition="'$(WasmBuildNative)' == '' and '$(Configuration)' == 'Release'">true</WasmBuildNative> |
| 120 | + <WasmBuildNative Condition="'$(WasmBuildNative)' == '' and @(NativeFileReference->Count()) > 0" >true</WasmBuildNative> |
| 121 | + <WasmBuildNative Condition="'$(WasmBuildNative)' == '' and '$(PublishTrimmed)' != 'true'" >false</WasmBuildNative> |
| 122 | + <WasmBuildNative Condition="'$(WasmBuildNative)' == '' and '$(Configuration)' == 'Release'" >true</WasmBuildNative> |
120 | 123 | <WasmBuildNative Condition="'$(WasmBuildNative)' == ''">false</WasmBuildNative>
|
121 | 124 | </PropertyGroup>
|
122 | 125 |
|
|
152 | 155 | <_EmccOptimizationFlagDefault Condition="'$(_EmccOptimizationFlagDefault)' == ''">-Oz</_EmccOptimizationFlagDefault>
|
153 | 156 |
|
154 | 157 | <EmccCompileOptimizationFlag Condition="'$(EmccCompileOptimizationFlag)' == ''">$(_EmccOptimizationFlagDefault)</EmccCompileOptimizationFlag>
|
155 |
| - <EmccLinkOptimizationFlag Condition="'$(EmccLinkOptimizationFlag)' == ''" >-O0 -s ASSERTIONS=$(_EmccAssertionLevelDefault)</EmccLinkOptimizationFlag> |
| 158 | + <EmccLinkOptimizationFlag Condition="'$(EmccLinkOptimizationFlag)' == ''" >$(EmccCompileOptimizationFlag)</EmccLinkOptimizationFlag> |
| 159 | + |
| 160 | + <_EmccCompileRsp>$(_WasmIntermediateOutputPath)emcc-compile.rsp</_EmccCompileRsp> |
| 161 | + <_EmccCompileOutputMessageImportance Condition="'$(EmccVerbose)' == 'true'">Normal</_EmccCompileOutputMessageImportance> |
| 162 | + <_EmccCompileOutputMessageImportance Condition="'$(EmccVerbose)' != 'true'">Low</_EmccCompileOutputMessageImportance> |
156 | 163 | </PropertyGroup>
|
157 | 164 |
|
158 | 165 | <ItemGroup>
|
|
161 | 168 | <_EmccCommonFlags Include="-s DISABLE_EXCEPTION_CATCHING=0" />
|
162 | 169 | <_EmccCommonFlags Include="-g" Condition="'$(WasmNativeStrip)' == 'false'" />
|
163 | 170 | <_EmccCommonFlags Include="-v" Condition="'$(EmccVerbose)' != 'false'" />
|
| 171 | + |
| 172 | + <_EmccIncludePaths Include="$(_WasmIntermediateOutputPath.TrimEnd('\/'))" /> |
| 173 | + <_EmccIncludePaths Include="$(_WasmRuntimePackIncludeDir)mono-2.0" /> |
| 174 | + <_EmccIncludePaths Include="$(_WasmRuntimePackIncludeDir)wasm" /> |
| 175 | + |
| 176 | + <!-- Adding optimization flag at the top, so it gets precedence --> |
| 177 | + <_EmccCFlags Include="$(EmccCompileOptimizationFlag)" /> |
| 178 | + <_EmccCFlags Include="@(_EmccCommonFlags)" /> |
| 179 | + |
| 180 | + <_EmccCFlags Include="-DENABLE_AOT=1" Condition="'$(RunAOTCompilation)' == 'true'" /> |
| 181 | + <_EmccCFlags Include="-DDRIVER_GEN=1" Condition="'$(RunAOTCompilation)' == 'true'" /> |
| 182 | + <_EmccCFlags Include="-DINVARIANT_GLOBALIZATION=1" Condition="'$(InvariantGlobalization)' == 'true'" /> |
| 183 | + <_EmccCFlags Include="-DLINK_ICALLS=1" Condition="'$(WasmLinkIcalls)' == 'true'" /> |
| 184 | + <_EmccCFlags Include="-DCORE_BINDINGS" /> |
| 185 | + <_EmccCFlags Include="-DGEN_PINVOKE=1" /> |
| 186 | + <_EmccCFlags Include="-emit-llvm" /> |
| 187 | + |
| 188 | + <_EmccCFlags Include=""-I%(_EmccIncludePaths.Identity)"" /> |
| 189 | + <_EmccCFlags Include="-g" Condition="'$(WasmNativeDebugSymbols)' == 'true'" /> |
| 190 | + |
| 191 | + <_EmccCFlags Include="$(EmccExtraCFlags)" /> |
| 192 | + |
| 193 | + <_WasmRuntimePackSrcFile Include="$(_WasmRuntimePackSrcDir)*.c" /> |
| 194 | + <_WasmRuntimePackSrcFile ObjectFile="$(_WasmIntermediateOutputPath)%(FileName).o" /> |
| 195 | + |
| 196 | + <_DotnetJSSrcFile Include="$(_WasmRuntimePackSrcDir)\*.js" /> |
| 197 | + <_WasmNativeFileForLinking Include="@(NativeFileReference)" /> |
164 | 198 | </ItemGroup>
|
165 | 199 |
|
166 |
| - <ItemGroup> |
167 |
| - <_DotnetJSSrcFile Include="$(_WasmRuntimePackSrcDir)\*.js" /> |
168 |
| - </ItemGroup> |
| 200 | + <Error Text="Could not find NativeFileReference %(NativeFileReference.Identity)" Condition="'%(NativeFileReference.Identity)' != '' and !Exists(%(NativeFileReference.Identity))" /> |
169 | 201 | </Target>
|
170 | 202 |
|
171 | 203 | <Target Name="_GeneratePInvokeTable">
|
172 | 204 | <ItemGroup>
|
| 205 | + <_WasmPInvokeModules Include="%(_WasmNativeFileForLinking.FileName)" Condition="'%(_WasmNativeFileForLinking.ScanForPInvokes)' != 'false'" /> |
| 206 | + |
173 | 207 | <_WasmPInvokeModules Include="libSystem.Native" />
|
174 | 208 | <_WasmPInvokeModules Include="libSystem.IO.Compression.Native" />
|
175 | 209 | <_WasmPInvokeModules Include="libSystem.Globalization.Native" />
|
|
194 | 228 |
|
195 | 229 | <Target Name="_WasmCompileNativeFiles">
|
196 | 230 | <ItemGroup>
|
197 |
| - <_EmccIncludePaths Include="$(_WasmIntermediateOutputPath.TrimEnd('\/'))" /> |
198 |
| - <_EmccIncludePaths Include="$(_WasmRuntimePackIncludeDir)mono-2.0" /> |
199 |
| - <_EmccIncludePaths Include="$(_WasmRuntimePackIncludeDir)wasm" /> |
200 |
| - |
201 |
| - <!-- Adding optimization flag at the top, so it gets precedence --> |
202 |
| - <_EmccCFlags Include="$(EmccCompileOptimizationFlag)" /> |
203 |
| - <_EmccCFlags Include="@(_EmccCommonFlags)" /> |
204 |
| - |
205 |
| - <_EmccCFlags Include="-DENABLE_AOT=1" Condition="'$(RunAOTCompilation)' == 'true'" /> |
206 |
| - <_EmccCFlags Include="-DDRIVER_GEN=1" Condition="'$(RunAOTCompilation)' == 'true'" /> |
207 |
| - <_EmccCFlags Include="-DINVARIANT_GLOBALIZATION=1" Condition="'$(InvariantGlobalization)' == 'true'" /> |
208 |
| - <_EmccCFlags Include="-DLINK_ICALLS=1" Condition="'$(WasmLinkIcalls)' == 'true'" /> |
209 |
| - <_EmccCFlags Include="-DCORE_BINDINGS" /> |
210 |
| - <_EmccCFlags Include="-DGEN_PINVOKE=1" /> |
211 |
| - <_EmccCFlags Include="-emit-llvm" /> |
212 |
| - |
213 |
| - <_EmccCFlags Include=""-I%(_EmccIncludePaths.Identity)"" /> |
214 |
| - <_EmccCFlags Include="-g" Condition="'$(WasmNativeDebugSymbols)' == 'true'" /> |
215 |
| - <_EmccCFlags Include="-s EXPORTED_FUNCTIONS='[@(_ExportedFunctions->'"%(Identity)"', ',')]'" Condition="@(_ExportedFunctions->Count()) > 0" /> |
216 |
| - |
217 |
| - <_EmccCFlags Include="$(EmccExtraCFlags)" /> |
218 |
| - |
219 |
| - <_WasmRuntimePackSrcFile Remove="@(_WasmRuntimePackSrcFile)" /> |
220 |
| - <_WasmRuntimePackSrcFile Include="$(_WasmRuntimePackSrcDir)\*.c" /> |
221 |
| - <_WasmRuntimePackSrcFile ObjectFile="$(_WasmIntermediateOutputPath)%(FileName).o" /> |
| 231 | + <_WasmSourceFileToCompile Remove="@(_WasmSourceFileToCompile)" /> |
222 | 232 | <_WasmSourceFileToCompile Include="@(_WasmRuntimePackSrcFile)" />
|
223 | 233 | </ItemGroup>
|
224 | 234 |
|
225 | 235 | <PropertyGroup>
|
226 | 236 | <_EmBuilder Condition="$([MSBuild]::IsOSPlatform('WINDOWS'))">embuilder.bat</_EmBuilder>
|
227 | 237 | <_EmBuilder Condition="!$([MSBuild]::IsOSPlatform('WINDOWS'))">embuilder.py</_EmBuilder>
|
228 |
| - <_EmccCompileRsp>$(_WasmIntermediateOutputPath)emcc-compile.rsp</_EmccCompileRsp> |
229 | 238 | </PropertyGroup>
|
230 | 239 |
|
231 | 240 | <WriteLinesToFile Lines="@(_EmccCFlags)" File="$(_EmccCompileRsp)" Overwrite="true" WriteOnlyWhenDifferent="true" />
|
|
234 | 243 | <Exec Command="$(_EmBuilder) build MINIMAL" EnvironmentVariables="@(EmscriptenEnvVars)" StandardOutputImportance="Low" StandardErrorImportance="Low" />
|
235 | 244 |
|
236 | 245 | <Message Text="Compiling native assets with emcc. This may take a while ..." Importance="High" />
|
237 |
| - <EmccCompile SourceFiles="@(_WasmSourceFileToCompile)" Arguments='"@$(_EmccDefaultFlagsRsp)" "@$(_EmccCompileRsp)"' EnvironmentVariables="@(EmscriptenEnvVars)" /> |
| 246 | + <EmccCompile |
| 247 | + SourceFiles="@(_WasmSourceFileToCompile)" |
| 248 | + Arguments='"@$(_EmccDefaultFlagsRsp)" "@$(_EmccCompileRsp)"' |
| 249 | + EnvironmentVariables="@(EmscriptenEnvVars)" |
| 250 | + OutputMessageImportance="$(_EmccCompileOutputMessageImportance)" /> |
| 251 | + |
| 252 | + <ItemGroup> |
| 253 | + <WasmNativeAsset Include="%(_WasmSourceFileToCompile.ObjectFile)" /> |
| 254 | + </ItemGroup> |
238 | 255 | </Target>
|
239 | 256 |
|
240 | 257 | <ItemGroup Condition="'$(Configuration)' == 'Debug' and '@(_MonoComponent->Count())' == 0">
|
|
259 | 276 | <EmccCompile
|
260 | 277 | Condition="@(_BitCodeFile->Count()) > 0"
|
261 | 278 | SourceFiles="@(_BitCodeFile)"
|
262 |
| - Arguments=""@$(_EmccDefaultFlagsRsp)" @(_EmccLDFlags->'%(Identity)', ' ')" |
263 |
| - EnvironmentVariables="@(EmscriptenEnvVars)" /> |
| 279 | + Arguments=""@$(_EmccDefaultFlagsRsp)" @(_EmccLDFlags, ' ')" |
| 280 | + EnvironmentVariables="@(EmscriptenEnvVars)" |
| 281 | + OutputMessageImportance="$(_EmccCompileOutputMessageImportance)" /> |
264 | 282 |
|
265 | 283 | <ItemGroup>
|
266 | 284 | <!-- order seems to matter -->
|
|
271 | 289 | Include="$(MicrosoftNetCoreAppRuntimePackRidNativeDir)\*.a"
|
272 | 290 | Exclude="@(_MonoRuntimeComponentDontLink->'$(MicrosoftNetCoreAppRuntimePackRidNativeDir)\%(Identity)')" />
|
273 | 291 |
|
| 292 | + <_WasmExtraJSFile Include="@(Content)" Condition="'%(Content.Extension)' == '.js'" /> |
| 293 | + |
274 | 294 | <_EmccLinkStepArgs Include="@(_EmccLDFlags)" />
|
275 | 295 | <_EmccLinkStepArgs Include="--js-library "%(_DotnetJSSrcFile.Identity)"" />
|
276 | 296 | <_EmccLinkStepArgs Include="--js-library "%(_WasmExtraJSFile.Identity)"" Condition="'%(_WasmExtraJSFile.Kind)' == 'js-library'" />
|
@@ -483,6 +503,5 @@ EMSCRIPTEN_KEEPALIVE void mono_wasm_load_profiler_aot (const char *desc) { mono_
|
483 | 503 | <ParameterGroup>
|
484 | 504 | <EmccProperties ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="false" Output="true" />
|
485 | 505 | </ParameterGroup>
|
486 |
| - </UsingTask> |
487 |
| - |
| 506 | + </UsingTask> |
488 | 507 | </Project>
|
0 commit comments