Files
SpacetimeDB/crates/bindings-csharp/Runtime/build/SpacetimeDB.Runtime.targets

77 lines
4.8 KiB
XML

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Condition="'$(EXPERIMENTAL_WASM_AOT)' == '1'">
<NativeLibrary Include="$(MSBuildThisFileDirectory)..\bindings.c" />
<UnmanagedEntryPointsAssembly Include="SpacetimeDB.Runtime" />
<WasmImport Include="$(SpacetimeNamespace)!table_id_from_name" />
<WasmImport Include="$(SpacetimeNamespace)!index_id_from_name" />
<WasmImport Include="$(SpacetimeNamespace)!datastore_table_row_count" />
<WasmImport Include="$(SpacetimeNamespace)!datastore_table_scan_bsatn" />
<WasmImport Include="$(SpacetimeNamespace)!datastore_index_scan_range_bsatn" />
<WasmImport Include="$(SpacetimeNamespace)!datastore_btree_scan_bsatn" />
<WasmImport Include="$(SpacetimeNamespace)!row_iter_bsatn_advance" />
<WasmImport Include="$(SpacetimeNamespace)!row_iter_bsatn_close" />
<WasmImport Include="$(SpacetimeNamespace)!datastore_insert_bsatn" />
<WasmImport Include="$(SpacetimeNamespace)!datastore_delete_by_index_scan_range_bsatn" />
<WasmImport Include="$(SpacetimeNamespace)!datastore_delete_by_btree_scan_bsatn" />
<WasmImport Include="$(SpacetimeNamespace)!datastore_delete_all_by_eq_bsatn" />
<WasmImport Include="$(SpacetimeNamespace)!bytes_source_read" />
<WasmImport Include="$(SpacetimeNamespace)!bytes_sink_write" />
<WasmImport Include="$(SpacetimeNamespace)!console_log" />
<WasmImport Include="$(SpacetimeNamespace)!console_timer_start" />
<WasmImport Include="$(SpacetimeNamespace)!console_timer_end" />
<WasmImport Include="$(SpacetimeNamespace)!volatile_nonatomic_schedule_immediate" />
<PackageReference Include="Microsoft.DotNet.ILCompiler.LLVM" Version="8.0.0-*" />
<PackageReference Include="runtime.win-x64.Microsoft.DotNet.ILCompiler.LLVM" Version="8.0.0-*" />
<PackageReference Include="Microsoft.NET.ILLink.Tasks" Version="8.0.0-*" Condition="'$(ILLinkTargetsPath)' == ''" />
<CustomLinkerArg Include="-DEXPERIMENTAL_WASM_AOT" />
</ItemGroup>
<ItemGroup Condition="'$(EXPERIMENTAL_WASM_AOT)' != '1'">
<NativeFileReference Include="$(MSBuildThisFileDirectory)..\bindings.c" />
<_WasmNativeFileForLinking Include="@(NativeFileReference)" />
</ItemGroup>
<!-- Auto-download WASI SDK on the first run. -->
<!-- Adapted from https://github.com/dotnet/dotnet-wasi-sdk/blob/2dbb00c779180873d3ed985e59e431f56404d8da/src/Wasi.Sdk/build/Wasi.Sdk.targets#L245-L262 -->
<!-- Executes before the errors in https://github.com/dotnet/runtime/blob/57fd56a99d4c97ac2f95fe84640f2a3f653f4dd7/src/mono/wasi/build/WasiApp.Native.targets#L41-L50. -->
<!-- TODO: remove when https://github.com/dotnet/runtime/issues/82788 is resolved. -->
<Target Name="ObtainWasiSdk" BeforeTargets="_SetupWasiSdk;CheckWasmSdks">
<PropertyGroup>
<WasiSdkVersion>24</WasiSdkVersion>
<WasiSdkDownloadTempFile>$([System.IO.Path]::Combine($(IntermediateOutputPath), "wasi-sdk.$(WasiSdkVersion).tar.gz"))</WasiSdkDownloadTempFile>
<WasiSdkArch Condition="$([System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture) == X64">x86_64</WasiSdkArch>
<WasiSdkArch Condition="$([System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture) == Arm64">arm64</WasiSdkArch>
<WasiSdkOS Condition="$([MSBuild]::IsOSPlatform('Windows'))">windows</WasiSdkOS>
<WasiSdkOS Condition="$([MSBuild]::IsOSPlatform('Linux'))">linux</WasiSdkOS>
<WasiSdkOS Condition="$([MSBuild]::IsOSPlatform('OSX'))">macos</WasiSdkOS>
<WasiSdkUrl>https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-$(WasiSdkVersion)/wasi-sdk-$(WasiSdkVersion).0-$(WasiSdkArch)-$(WasiSdkOS).tar.gz</WasiSdkUrl>
<WasiSdkRoot>$([System.IO.Path]::Combine($([System.Environment]::GetFolderPath(SpecialFolder.UserProfile)), '.wasi-sdk', "wasi-sdk-$(WasiSdkVersion)"))</WasiSdkRoot>
<WASI_SDK_PATH>$(WasiSdkRoot)</WASI_SDK_PATH>
<WasiSysRoot>$([System.IO.Path]::Combine($(WasiSdkRoot), 'share', 'wasi-sysroot'))</WasiSysRoot>
<WasiClang>$([System.IO.Path]::Combine($(WasiSdkRoot), 'bin', 'clang'))</WasiClang>
<WasiClang Condition="$([MSBuild]::IsOSPlatform('Windows'))">$(WasiClang).exe</WasiClang>
</PropertyGroup>
<DownloadFile
SourceUrl="$(WasiSdkUrl)"
DestinationFolder="$(IntermediateOutputPath)"
DestinationFileName="$([System.IO.Path]::GetFileName('$(WasiSdkDownloadTempFile)'))"
Condition="!Exists('$(WasiClang)')" />
<Message Importance="high" Text="Extracting $(WasiSdkDownloadTempFile) to $(WasiSdkRoot)..." Condition="!Exists('$(WasiClang)')" />
<MakeDir Directories="$(WasiSdkRoot)" />
<!-- Windows 10+ has tar built in, so this should work cross-platform -->
<Exec Command="tar -xf &quot;$(WasiSdkDownloadTempFile)&quot; -C &quot;$(WasiSdkRoot)&quot; --strip-components=1" Condition="!Exists('$(WasiClang)')" />
</Target>
</Project>