Add files need for wasm executable relinking/aot to the wasm runtime pack. (#43785)
authorZoltan Varga <vargaz@gmail.com>
Mon, 9 Nov 2020 15:39:01 +0000 (10:39 -0500)
committerGitHub <noreply@github.com>
Mon, 9 Nov 2020 15:39:01 +0000 (16:39 +0100)
Co-authored-by: Alexander Köplinger <alex.koeplinger@outlook.com>
eng/liveBuilds.targets
src/mono/wasm/Makefile
src/mono/wasm/wasm.proj

index f561eb7..0979417 100644 (file)
         $(LibrariesNativeArtifactsPath)dotnet.timezones.blat;
         $(LibrariesNativeArtifactsPath)*.dat;"
         IsNative="true" />
+      <LibrariesRuntimeFiles Condition="'$(TargetOS)' == 'Browser'"
+                             Include="
+        $(LibrariesNativeArtifactsPath)src\*.c;
+        $(LibrariesNativeArtifactsPath)src\*.js;"
+        NativeSubDirectory="src"
+        IsNative="true" />
+      <LibrariesRuntimeFiles Condition="'$(TargetOS)' == 'Browser'"
+                             Include="
+        $(LibrariesNativeArtifactsPath)include\wasm\*.h;"
+        NativeSubDirectory="include\wasm"
+        IsNative="true" />
     </ItemGroup>
 
     <Error Condition="'@(LibrariesRefAssemblies)' == ''" Text="The 'libs' subset must be built before building this project." />
index 71404b0..5e74d25 100644 (file)
@@ -19,7 +19,7 @@ ICU_LIBDIR?=
 SYSTEM_NATIVE_LIBDIR?=$(TOP)/src/libraries/Native/Unix/System.Native
 ENABLE_ES6?=false
 
-all: build-native icu-data
+all: build-native icu-files source-files header-files
 
 #
 # EMSCRIPTEN SETUP
@@ -82,6 +82,12 @@ define InterpBuildTemplate
 $(NATIVE_BIN_DIR):
        mkdir -p $$@
 
+$(NATIVE_BIN_DIR)/src:
+       mkdir -p $$@
+
+$(NATIVE_BIN_DIR)/include/wasm:
+       mkdir -p $$@
+
 $(BUILDS_OBJ_DIR):
        mkdir -p $$@
 
@@ -119,8 +125,14 @@ clean:
 # Helper targets
 .PHONY: runtime
 
-icu-data:
-       cp $(ICU_LIBDIR)/*.dat $(NATIVE_BIN_DIR)
+icu-files: $(wildcard $(ICU_LIBDIR)/*.dat) $(ICU_LIBDIR)/libicuuc.a $(ICU_LIBDIR)/libicui18n.a | $(NATIVE_BIN_DIR)
+       cp $^ $(NATIVE_BIN_DIR)
+
+source-files: runtime/driver.c runtime/pinvoke.c runtime/corebindings.c runtime/binding_support.js runtime/dotnet_support.js runtime/library_mono.js $(SYSTEM_NATIVE_LIBDIR)/pal_random.js | $(NATIVE_BIN_DIR)/src
+       cp $^ $(NATIVE_BIN_DIR)/src
+
+header-files: runtime/pinvoke.h $(BUILDS_OBJ_DIR)/pinvoke-table.h | $(NATIVE_BIN_DIR)/include/wasm
+       cp $^ $(NATIVE_BIN_DIR)/include/wasm
 
 build:
        EMSDK_PATH=$(EMSDK_PATH) $(TOP)/build.sh mono+libs.pretest -os Browser -c $(CONFIG) /p:ContinueOnError=false /p:StopOnFirstFailure=true
index a88c77a..d21b20c 100644 (file)
           AfterTargets="Build"
           DependsOnTargets="BuildPInvokeTable;BundleTimeZones">
 
-    <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=$(PkgMicrosoft_NETCore_Runtime_ICU_Transport)/runtimes/browser-wasm/native/lib ENABLE_ES6=$(WasmEnableES6)"
+    <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;" />
+      <WasmHeaderFiles Include="$(NativeBinDir)include\wasm\*.h" />
+    </ItemGroup>
+
     <Copy SourceFiles="$(NativeBinDir)dotnet.js;
                        $(NativeBinDir)dotnet.wasm;
-                       $(NativeBinDir)dotnet.timezones.blat"
+                       $(NativeBinDir)dotnet.timezones.blat;
+                       $(NativeBinDir)libicuuc.a;
+                       $(NativeBinDir)libicui18n.a"
           DestinationFolder="$(MicrosoftNetCoreAppRuntimePackNativeDir)"
           SkipUnchangedFiles="true" />
 
-    <ItemGroup>
-      <IcuDataFiles Include="$(NativeBinDir)*.dat"/>
-    </ItemGroup>
     <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>