Skip to content

Commit

Permalink
[wasm/wasi] Add new wasm-props.json to the runtime pack
Browse files Browse the repository at this point in the history
For browser this is `emcc-props.json` renamed. And for wasi, it's a new
file.
  • Loading branch information
radical committed Dec 13, 2023
1 parent e1b4985 commit 99a5c04
Show file tree
Hide file tree
Showing 6 changed files with 47 additions and 48 deletions.
3 changes: 2 additions & 1 deletion eng/liveBuilds.targets
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@
$(LibrariesNativeArtifactsPath)src\*.js;
$(LibrariesNativeArtifactsPath)src\emcc-default.rsp;
$(LibrariesNativeArtifactsPath)src\emcc-link.rsp;
$(LibrariesNativeArtifactsPath)src\emcc-props.json;"
$(LibrariesNativeArtifactsPath)src\wasm-props.json;"
NativeSubDirectory="src"
IsNative="true" />
<LibrariesRuntimeFiles Condition="'$(TargetOS)' == 'browser'"
Expand All @@ -246,6 +246,7 @@
<LibrariesRuntimeFiles Include="
$(LibrariesNativeArtifactsPath)src\wasi-default.rsp;
$(LibrariesNativeArtifactsPath)src\wasi-link.rsp;
$(LibrariesNativeArtifactsPath)src\wasm-props.json;
$(LibrariesNativeArtifactsPath)src\*.c"
NativeSubDirectory="src"
IsNative="true" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@
<PlatformManifestFileEntry Include="wasm-config.h" IsNative="true" />
<PlatformManifestFileEntry Include="emcc-default.rsp" IsNative="true" />
<PlatformManifestFileEntry Include="emcc-link.rsp" IsNative="true" />
<PlatformManifestFileEntry Include="emcc-props.json" IsNative="true" />
<PlatformManifestFileEntry Include="wasm-props.json" IsNative="true" />
<PlatformManifestFileEntry Include="wasi-default.rsp" IsNative="true" />
<PlatformManifestFileEntry Include="wasi-link.rsp" IsNative="true" />
<PlatformManifestFileEntry Include="ILLink.Substitutions.WasmIntrinsics.xml" IsNative="true" />
Expand Down
11 changes: 4 additions & 7 deletions src/mono/wasi/wasi.proj
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@

<Target Name="GenerateWasiPropsAndRspFiles">

<!-- Generate wasi-props.json -->
<!-- Generate wasm-props.json -->
<ItemGroup>
<!-- TODOWASI
<_WasiLinkFlags Include="-Wl, - - allow-undefined"/>
Expand Down Expand Up @@ -146,21 +146,18 @@
</ItemGroup>

<PropertyGroup>
<_WasmOptConfigurationFlags>@(WasmOptConfigurationFlags, '%3B ') </_WasmOptConfigurationFlags>
<_WasiPropsJson>
<![CDATA[
{
"items": {
"WasmOptConfigurationFlags": [
{ "identity": "WasmOptConfigurationFlags", "value": "$(_WasmOptConfigurationFlags)" }
]
"WasmOptConfigurationFlags": [@(WasmOptConfigurationFlags -> '%22%(Identity)%22', ',')],
}
}
]]>
</_WasiPropsJson>
</PropertyGroup>

<WriteLinesToFile File="$(NativeBinDir)src\emcc-props.json"
<WriteLinesToFile File="$(NativeBinDir)src\wasm-props.json"
Lines="$(_WasiPropsJson)"
Overwrite="true"
WriteOnlyWhenDifferent="true" />
Expand Down Expand Up @@ -266,7 +263,7 @@
<ItemGroup>
<IcuDataFiles Include="$(NativeBinDir)*.dat" />
<WasmSrcFiles Include="$(NativeBinDir)src\*.c;" />
<WasmSrcFiles Include="$(_WasiDefaultsRspPath);$(_WasiCompileRspPath);$(_WasiLinkRspPath)" />
<WasmSrcFiles Include="$(_WasiDefaultsRspPath);$(_WasiCompileRspPath);$(_WasiLinkRspPath);$(NativeBinDir)src\wasm-props.json" />
<WasmHeaderFiles Include="$(NativeBinDir)include\wasm\*.h" />
</ItemGroup>

Expand Down
32 changes: 0 additions & 32 deletions src/mono/wasm/build/BrowserWasmApp.targets
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,6 @@
<UsingTask TaskName="Microsoft.WebAssembly.Build.Tasks.WasmAppBuilder" AssemblyFile="$(WasmAppBuilderTasksAssemblyPath)" />

<PropertyGroup>
<PrepareInputsForWasmBuildDependsOn>
$(PrepareInputsForWasmBuildDependsOn);
_ReadEmccProps
</PrepareInputsForWasmBuildDependsOn>

<PrepareForWasmBuildNativeDependsOn>
_CheckToolchainIsExpectedVersion;
_PrepareForBrowserWasmBuildNative;
Expand Down Expand Up @@ -547,33 +542,6 @@
<Error Condition="'$(RuntimeEmccVersionRaw)' != '$(ActualEmccVersionRaw)'" Text="$(_VersionMismatchMessage)" />
</Target>

<UsingTask TaskName="ReadEmccProps" AssemblyFile="$(MonoTargetsTasksAssemblyPath)"
TaskFactory="JsonToItemsTaskFactory.JsonToItemsTaskFactory">
<ParameterGroup>
<EmccProperties ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="false" Output="true" />
<WasmOptConfigurationFlags ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="false" Output="true" />
<EmccDefaultExportedFunctions ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="false" Output="true" />
<EmccDefaultExportedRuntimeMethods ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="false" Output="true" />
</ParameterGroup>
</UsingTask>

<Target Name="_ReadEmccProps" Condition="'$(_IsToolchainMissing)' != 'true'">
<ReadEmccProps JsonFilePath="$(_WasmRuntimePackSrcDir)emcc-props.json">
<Output TaskParameter="EmccProperties" ItemName="_EmccPropItems" />
<Output TaskParameter="WasmOptConfigurationFlags" ItemName="_WasmOptConfigurationFlagsItems" />
<Output TaskParameter="EmccDefaultExportedFunctions" ItemName="EmccExportedFunction" />
<Output TaskParameter="EmccDefaultExportedRuntimeMethods" ItemName="EmccExportedRuntimeMethod" />
</ReadEmccProps>

<CreateProperty Value="%(_EmccPropItems.Value)">
<Output TaskParameter="Value" PropertyName="%(_EmccPropItems.Identity)" />
</CreateProperty>

<CreateProperty Value="%(_WasmOptConfigurationFlagsItems.Value)">
<Output TaskParameter="Value" PropertyName="%(_WasmOptConfigurationFlagsItems.Identity)" />
</CreateProperty>
</Target>

<Target Name="_CompleteWasmBuildNative" AfterTargets="WasmLinkDotNet">
<ItemGroup>
<WasmNativeAsset Include="$(_WasmIntermediateOutputPath)dotnet.native.wasm" />
Expand Down
36 changes: 36 additions & 0 deletions src/mono/wasm/build/WasmApp.Common.targets
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,31 @@
</ItemGroup>
</Target>

<UsingTask TaskName="ReadWasmProps" AssemblyFile="$(MonoTargetsTasksAssemblyPath)"
TaskFactory="JsonToItemsTaskFactory.JsonToItemsTaskFactory">
<ParameterGroup>
<EmccProperties ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="false" Output="true" />
<WasmOptConfigurationFlags ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="false" Output="true" />
<EmccDefaultExportedFunctions ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="false" Output="true" />
<EmccDefaultExportedRuntimeMethods ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="false" Output="true" />
</ParameterGroup>
</UsingTask>

<Target Name="_ReadWasmProps" Condition="'$(_IsToolchainMissing)' != 'true'">
<ReadWasmProps JsonFilePath="$(_WasmRuntimePackSrcDir)wasm-props.json">
<Output TaskParameter="EmccProperties" ItemName="_EmccPropItems" />
<Output TaskParameter="EmccDefaultExportedFunctions" ItemName="EmccExportedFunction" />
<Output TaskParameter="EmccDefaultExportedRuntimeMethods" ItemName="EmccExportedRuntimeMethod" />

<!-- shared by browser/wasi -->
<Output TaskParameter="WasmOptConfigurationFlags" ItemName="_DefaulWasmOptConfigurationFlags" />
</ReadWasmProps>

<CreateProperty Value="%(_EmccPropItems.Value)" Condition="%(_EmccPropItems.Identity) != ''">
<Output TaskParameter="Value" PropertyName="%(_EmccPropItems.Identity)" />
</CreateProperty>
</Target>

<Target Name="WasmGenerateAppBundle" DependsOnTargets="$(WasmGenerateAppBundleDependsOn)" Condition="'$(WasmGenerateAppBundle)' == 'true'" />

<Target Name="_WasmGenerateRuntimeConfig"
Expand Down Expand Up @@ -450,6 +475,17 @@
</ItemGroup>
</Target>

<Target Name="_WasmCommonPrepareForWasmBuildNative" Condition="'$(WasmBuildNative)' == 'true'">
<ItemGroup>
<WasmOptConfigurationFlags Include="--enable-simd" Condition="'$(WasmEnableSIMD)' == 'true'" />
<WasmOptConfigurationFlags Include="--enable-exception-handling" Condition="'$(WasmExceptionHandling)' == 'true'" />
<WasmOptConfigurationFlags Include="--strip-dwarf" Condition="'$(WasmNativeStrip)' == 'true'" />

<!-- WasmOptConfigurationFlags property is set by reading from wasm-props.json -->
<WasmOptConfigurationFlags Include="@(_DefaulWasmOptConfigurationFlags)" />
</ItemGroup>
</Target>

<Target Name="PrepareForWasmBuildNative" DependsOnTargets="$(PrepareForWasmBuildNativeDependsOn)" Condition="'$(WasmBuildNative)' == 'true'" />

<Target Name="_SetWasmBuildNativeDefaults">
Expand Down
11 changes: 4 additions & 7 deletions src/mono/wasm/wasm.proj
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@

<Target Name="GenerateEmccPropsAndRspFiles">

<!-- Generate emcc-props.json -->
<!-- Generate wasm-props.json -->

<RunWithEmSdkEnv Command="$(EmccCmd) --version"
ConsoleToMsBuild="true"
Expand Down Expand Up @@ -312,7 +312,6 @@
</ItemGroup>

<PropertyGroup>
<_WasmOptConfigurationFlags>@(WasmOptConfigurationFlags, '%3B ') </_WasmOptConfigurationFlags>
<_EmccPropsJson>
<![CDATA[
{
Expand All @@ -322,9 +321,7 @@
{ "identity": "RuntimeEmccVersionRaw", "value": "$(_EmccVersionRaw)" },
{ "identity": "RuntimeEmccVersionHash", "value": "$(_EmccVersionHash)" }
],
"WasmOptConfigurationFlags": [
{ "identity": "WasmOptConfigurationFlags", "value": "$(_WasmOptConfigurationFlags)" }
],
"WasmOptConfigurationFlags": [@(WasmOptConfigurationFlags -> '%22%(Identity)%22', ',')],
"EmccDefaultExportedFunctions": [@(EmccExportedFunction -> '%22%(Identity)%22', ',')],
"EmccDefaultExportedRuntimeMethods": [@(EmccExportedRuntimeMethod -> '%22%(Identity)%22', ',')]
}
Expand All @@ -333,7 +330,7 @@
</_EmccPropsJson>
</PropertyGroup>

<WriteLinesToFile File="$(NativeBinDir)src\emcc-props.json"
<WriteLinesToFile File="$(NativeBinDir)src\wasm-props.json"
Lines="$(_EmccPropsJson)"
Overwrite="true"
WriteOnlyWhenDifferent="true" />
Expand Down Expand Up @@ -471,7 +468,7 @@
$(_EmccDefaultsRspPath);
$(_EmccCompileRspPath);
$(_EmccLinkRspPath);
$(NativeBinDir)src\emcc-props.json" />
$(NativeBinDir)src\wasm-props.json" />
<WasmSrcFilesEs6 Include="$(NativeBinDir)src\es6\*.js;" />
<WasmHeaderFiles Include="$(NativeBinDir)include\wasm\*.h" />
</ItemGroup>
Expand Down

0 comments on commit 99a5c04

Please sign in to comment.