Welcome to mirror list, hosted at ThFree Co, Russian Federation.

wasm.proj « wasm « mono « src - github.com/dotnet/runtime.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: dedeef8d609523ae60135e5978102681d58401d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<Project Sdk="Microsoft.Build.NoTargets">

  <PropertyGroup>
    <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
  </PropertyGroup>

  <PropertyGroup>
    <!-- FIXME: clean up the duplication with libraries Directory.Build.props -->
    <PackageRID>browser-wasm</PackageRID>
    <NativeBinDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'native', '$(NetCoreAppCurrent)-$(TargetOS)-$(Configuration)-$(TargetArchitecture)'))</NativeBinDir>
    <MicrosoftNetCoreAppRuntimePackDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'microsoft.netcore.app.runtime.$(PackageRID)', '$(Configuration)'))</MicrosoftNetCoreAppRuntimePackDir>
    <MicrosoftNetCoreAppRuntimePackRidDir>$([MSBuild]::NormalizeDirectory('$(MicrosoftNetCoreAppRuntimePackDir)', 'runtimes', '$(PackageRID)'))</MicrosoftNetCoreAppRuntimePackRidDir>
    <MicrosoftNetCoreAppRuntimePackNativeDir>$([MSBuild]::NormalizeDirectory('$(MicrosoftNetCoreAppRuntimePackRidDir)', 'native'))</MicrosoftNetCoreAppRuntimePackNativeDir>
    <WasmEnableES6 Condition="'$(WasmEnableES6)' == ''">false</WasmEnableES6>
    <FilterSystemTimeZones Condition="'$(FilterSystemTimeZones)' == ''">false</FilterSystemTimeZones>
  </PropertyGroup>

  <Target Name="CheckEnv">
    <Error Condition="'$(TargetArchitecture)' != 'wasm'" Text="Expected TargetArchitecture==wasm, got '$(TargetArchitecture)'"/>
    <Error Condition="'$(TargetOS)' != 'Browser'" Text="Expected TargetOS==Browser, got '$(TargetOS)'"/>
    <Error Condition="'$(EMSDK_PATH)' == ''" Text="The EMSDK_PATH environment variable should be set pointing to the emscripten SDK root dir."/>
  </Target>

  <ItemGroup>
    <PackageReference Include="$(MicrosoftNETCoreRuntimeICUTransportPackage)" PrivateAssets="all" Version="$(MicrosoftNETCoreRuntimeICUTransportVersion)" GeneratePathProperty="true" />
    <PackageReference Include="System.Runtime.TimeZoneData" PrivateAssets="all" Version="$(SystemRuntimeTimeZoneDataVersion)" GeneratePathProperty="true" />
  </ItemGroup>

  <UsingTask TaskName="PInvokeTableGenerator" AssemblyFile="$(WasmAppBuilderTasksAssemblyPath)"/>
  <Target Name="BuildPInvokeTable" DependsOnTargets="CheckEnv;ResolveLibrariesFromLocalBuild">
    <PropertyGroup>
      <WasmPInvokeTablePath>$(ArtifactsObjDir)wasm\pinvoke-table.h</WasmPInvokeTablePath>
    </PropertyGroup>

    <ItemGroup>
      <WasmPInvokeModule Include="libSystem.Native" />
      <WasmPInvokeModule Include="libSystem.IO.Compression.Native" />
      <WasmPInvokeModule Include="libSystem.Globalization.Native" />
      <WasmPInvokeAssembly Include="@(LibrariesRuntimeFiles)" Condition="'%(Extension)' == '.dll' and '%(IsNative)' != 'true'" />
    </ItemGroup>

    <!-- Retrieve CoreLib's targetpath via GetTargetPath as it isn't binplaced yet. -->
    <MSBuild Projects="$(CoreLibProject)"
             Targets="GetTargetPath">
      <Output TaskParameter="TargetOutputs" ItemName="WasmPInvokeAssembly" />
    </MSBuild>

    <MakeDir Directories="$(ArtifactsObjDir)wasm" />
    <PInvokeTableGenerator Modules="@(WasmPInvokeModule)"
                           Assemblies="@(WasmPInvokeAssembly)"
                           OutputPath="$(WasmPInvokeTablePath)" />
  </Target>

  <UsingTask TaskName="GenerateWasmBundle"
    AssemblyFile="$(WasmBuildTasksAssemblyPath)"/>
  <Target Name="BundleTimeZones">
    <PropertyGroup>
      <TimeZonesDataPath>$(NativeBinDir)dotnet.timezones.blat</TimeZonesDataPath>
    </PropertyGroup>
    <GenerateWasmBundle
      InputDirectory="$([MSBuild]::NormalizePath('$(PkgSystem_Runtime_TimeZoneData)', 'contentFiles', 'any', 'any', 'data'))"
      OutputFileName="$(TimeZonesDataPath)" />
  </Target>

  <!-- This is a documented target that is invoked by developers in their innerloop work. -->
  <Target Name="BuildWasmRuntimes"
          AfterTargets="Build"
          DependsOnTargets="BuildPInvokeTable;BundleTimeZones">

    <PropertyGroup>
      <_IcuLibdir>$(PkgMicrosoft_NETCore_Runtime_ICU_Transport)/runtimes/browser-wasm/native/lib</_IcuLibdir>
    </PropertyGroup>

    <Exec Command="make -C $(MonoProjectRoot)wasm all SHELL=/bin/bash BINDIR=$(ArtifactsBinDir) MONO_BIN_DIR=$(MonoArtifactsPath) OBJDIR=$(ArtifactsObjDir) NATIVE_BIN_DIR=$(NativeBinDir) CONFIG=$(Configuration) PINVOKE_TABLE=$(WasmPInvokeTablePath) ICU_LIBDIR=$(_IcuLibdir) ENABLE_ES6=$(WasmEnableES6)"
          IgnoreStandardErrorWarningFormat="true" />

    <ItemGroup>
      <IcuDataFiles Include="$(NativeBinDir)*.dat" />
      <WasmSrcFiles Include="$(NativeBinDir)src\*.c;
                             $(NativeBinDir)src\*.js;
                             $(NativeBinDir)src\emcc-flags.txt;
                             $(NativeBinDir)src\emcc-version.txt" />
      <WasmHeaderFiles Include="$(NativeBinDir)include\wasm\*.h" />
    </ItemGroup>

    <Copy SourceFiles="$(NativeBinDir)dotnet.js;
                       $(NativeBinDir)dotnet.wasm;
                       $(NativeBinDir)dotnet.timezones.blat;
                       $(NativeBinDir)libicuuc.a;
                       $(NativeBinDir)libicui18n.a"
          DestinationFolder="$(MicrosoftNetCoreAppRuntimePackNativeDir)"
          SkipUnchangedFiles="true" />

    <Copy SourceFiles="@(IcuDataFiles)"
          DestinationFolder="$(MicrosoftNetCoreAppRuntimePackNativeDir)"
          SkipUnchangedFiles="true" />

    <Copy SourceFiles="@(WasmSrcFiles)"
          DestinationFolder="$(MicrosoftNetCoreAppRuntimePackNativeDir)src"
          SkipUnchangedFiles="true" />

    <Copy SourceFiles="@(WasmHeaderFiles)"
          DestinationFolder="$(MicrosoftNetCoreAppRuntimePackNativeDir)include\wasm"
          SkipUnchangedFiles="true" />
  </Target>

</Project>