Skip to content
Closed
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
e064ec6
Remove embedded scripts, fix build on Linux.
ilonatommy Aug 14, 2024
7bc1637
Merge branch 'main' into fix-105439-changing-runtime-only - fix froze…
ilonatommy Aug 14, 2024
60bfafc
Windows - almost fixed, missing native build access to EMSDK_PATH.
ilonatommy Aug 16, 2024
07ce65d
Fix `$(EMSDK_PATH)` is missing is missing some paths.
ilonatommy Aug 16, 2024
5636d09
Fix wasi.
ilonatommy Aug 16, 2024
ea2d900
Merge branch 'main' into fix-105439-changing-runtime-only
ilonatommy Aug 16, 2024
4a3e122
Cleanup - move the pre-env script logic to emscripten provisioning.
ilonatommy Aug 16, 2024
bf2c1bb
Move remaining emsdk-provision bits to provision target.
ilonatommy Aug 19, 2024
97a5513
Fix: it's an Item, not a property.
ilonatommy Aug 19, 2024
c9852a5
More cleanup on Linux.
ilonatommy Aug 19, 2024
5f96265
Fix rebuild.
ilonatommy Aug 19, 2024
0335335
Fix "NODE_JS is set to empty value in D:\a\_work\1\s\src\mono\browser…
ilonatommy Aug 19, 2024
89148e8
Fix "BINARYEN_ROOT is set to empty value in \src\mono\browser\emsdk\e…
ilonatommy Aug 19, 2024
bd9179b
Workaround - set `EMSKD_PATH` for native build separately.
ilonatommy Aug 19, 2024
7da3a6c
Cleanup.
ilonatommy Aug 19, 2024
1a94c15
Fix "Specified Emscripten sdk at $(EMSDK_PATH) is missing some paths:…
ilonatommy Aug 19, 2024
d8b8a7c
Fix: path to python "is not recognized as an internal or external com…
ilonatommy Aug 19, 2024
6246fed
Missing change for the fix in the previous commit.
ilonatommy Aug 19, 2024
6fd5e6f
Fix wbt: add missing env vars
ilonatommy Aug 20, 2024
fbb71be
Missing "bin" part of node path.
ilonatommy Aug 21, 2024
caf5379
Lib tests have "bin" in the end of node path but wbt do not, satisfy …
ilonatommy Aug 21, 2024
2a34403
Wrong condition, c&p error.
ilonatommy Aug 21, 2024
fbd9744
Fix WBT: "binaryen executable not found (%HostBinaryenDir%\bin\wasm-o…
ilonatommy Aug 21, 2024
8ed999c
"EndsWith" did not detect the need to append "bin" correctly.
ilonatommy Aug 21, 2024
383e5cd
Revert redundant changes to user-app targets.
ilonatommy Aug 22, 2024
2dd0adb
Missing change revert
ilonatommy Aug 22, 2024
65e574e
Feedback.
ilonatommy Aug 22, 2024
7d70eb6
Merge branch 'main' into fix-105439-changing-runtime-only
ilonatommy Aug 23, 2024
1b7befc
Import after `SetupPackagePaths` finishes.
ilonatommy Aug 23, 2024
5830355
Fix
ilonatommy Aug 23, 2024
fb1738b
Remove redundant comments.
ilonatommy Aug 27, 2024
5f8908b
`WasmApp.InTree.props` are loaded too late. Move the props back to de…
ilonatommy Aug 27, 2024
8c9a3f0
Fix missing slash in the end of the path.
ilonatommy Aug 27, 2024
b14d7a9
Remove whitespace change.
ilonatommy Aug 28, 2024
755c343
Merge branch 'main' into fix-105439-changing-runtime-only
ilonatommy Aug 28, 2024
6daf79e
Make sure properties to build nuget paths on helix are not empty.
ilonatommy Sep 3, 2024
08f86f3
Debugging commit, see where are packages.
ilonatommy Sep 3, 2024
4744846
More debugging.
ilonatommy Sep 3, 2024
574548b
Fallback for helix.
ilonatommy Sep 5, 2024
f9acf9f
Cleanup needed when we have the fallback.
ilonatommy Sep 5, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion eng/native/gen-buildsys.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ if not "%__ConfigureOnly%" == "1" (
)

if /i "%__UseEmcmake%" == "1" (
call "!EMSDK_PATH!/emsdk_env.cmd" > nul 2>&1 && emcmake "%CMakePath%" %__ExtraCmakeParams% --no-warn-unused-cli -G "%__CmakeGenerator%" -B %__IntermediatesDir% -S %__SourceDir%
call "!EMSDK_PATH!/pre_emsdk_env.cmd" > nul 2>&1 && call "!EMSDK_PATH!/emsdk_env.cmd" > nul 2>&1 && emcmake "%CMakePath%" %__ExtraCmakeParams% --no-warn-unused-cli -G "%__CmakeGenerator%" -B %__IntermediatesDir% -S %__SourceDir%
) else (
"%CMakePath%" %__ExtraCmakeParams% --no-warn-unused-cli -G "%__CmakeGenerator%" -B %__IntermediatesDir% -S %__SourceDir%
)
Expand Down
8 changes: 4 additions & 4 deletions src/mono/browser/browser.proj
Original file line number Diff line number Diff line change
Expand Up @@ -415,13 +415,13 @@
<CMakeBuildRuntimeConfigureCmd Condition="'$(WasmEnableJsInteropByValue)' == 'true'">$(CMakeBuildRuntimeConfigureCmd) -DENABLE_JS_INTEROP_BY_VALUE=1</CMakeBuildRuntimeConfigureCmd>
<CMakeBuildRuntimeConfigureCmd>$(CMakeBuildRuntimeConfigureCmd) $(CMakeConfigurationEmsdkPath)</CMakeBuildRuntimeConfigureCmd>

<CMakeBuildRuntimeConfigureCmd Condition="'$(OS)' == 'Windows_NT'">call &quot;$(RepositoryEngineeringDir)native\init-vs-env.cmd&quot; &amp;&amp; call &quot;$([MSBuild]::NormalizePath('$(EMSDK_PATH)', 'emsdk_env.cmd'))&quot; &amp;&amp; $(CMakeBuildRuntimeConfigureCmd)</CMakeBuildRuntimeConfigureCmd>
<CMakeBuildRuntimeConfigureCmd Condition="'$(OS)' != 'Windows_NT'">bash -c 'source $(EMSDK_PATH)/emsdk_env.sh 2>&amp;1 &amp;&amp; $(CMakeBuildRuntimeConfigureCmd)'</CMakeBuildRuntimeConfigureCmd>
<CMakeBuildRuntimeConfigureCmd Condition="'$(OS)' == 'Windows_NT'">call &quot;$(RepositoryEngineeringDir)native\init-vs-env.cmd&quot; &amp;&amp; call &quot;$([MSBuild]::NormalizePath('$(EMSDK_PATH)', 'pre_emsdk_env.cmd'))&quot; &amp;&amp; call &quot;$([MSBuild]::NormalizePath('$(EMSDK_PATH)', 'emsdk_env.cmd'))&quot; &amp;&amp; $(CMakeBuildRuntimeConfigureCmd)</CMakeBuildRuntimeConfigureCmd>
<CMakeBuildRuntimeConfigureCmd Condition="'$(OS)' != 'Windows_NT'">bash -c 'source $(EMSDK_PATH)/pre_emsdk_env.sh &amp;&amp; source $(EMSDK_PATH)/emsdk_env.sh 2>&amp;1 &amp;&amp; $(CMakeBuildRuntimeConfigureCmd)'</CMakeBuildRuntimeConfigureCmd>

<CMakeOptions Condition="'$(MonoVerboseBuild)' != ''">-v</CMakeOptions>
<CMakeBuildRuntimeCmd>cmake --build . --config $(Configuration) $(CmakeOptions)</CMakeBuildRuntimeCmd>
<CMakeBuildRuntimeCmd Condition="'$(OS)' == 'Windows_NT'">call &quot;$(RepositoryEngineeringDir)native\init-vs-env.cmd&quot; &amp;&amp; call &quot;$([MSBuild]::NormalizePath('$(EMSDK_PATH)', 'emsdk_env.cmd'))&quot; &amp;&amp; $(CMakeBuildRuntimeCmd)</CMakeBuildRuntimeCmd>
<CMakeBuildRuntimeCmd Condition="'$(OS)' != 'Windows_NT'">bash -c 'source $(EMSDK_PATH)/emsdk_env.sh 2>&amp;1 &amp;&amp; $(CMakeBuildRuntimeCmd)'</CMakeBuildRuntimeCmd>
<CMakeBuildRuntimeCmd Condition="'$(OS)' == 'Windows_NT'">call &quot;$(RepositoryEngineeringDir)native\init-vs-env.cmd&quot; &amp;&amp; call &quot;$([MSBuild]::NormalizePath('$(EMSDK_PATH)', 'emsdk_env.cmd'))&quot; &amp;&amp; call &quot;$([MSBuild]::NormalizePath('$(EMSDK_PATH)', 'emsdk_env.cmd'))&quot; &amp;&amp; $(CMakeBuildRuntimeCmd)</CMakeBuildRuntimeCmd>
<CMakeBuildRuntimeCmd Condition="'$(OS)' != 'Windows_NT'">bash -c 'source $(EMSDK_PATH)/pre_emsdk_env.sh &amp;&amp; source $(EMSDK_PATH)/emsdk_env.sh 2>&amp;1 &amp;&amp; $(CMakeBuildRuntimeCmd)'</CMakeBuildRuntimeCmd>
</PropertyGroup>
<ItemGroup>
<_CmakeEnvironmentVariable Include="ENABLE_JS_INTEROP_BY_VALUE=1" Condition="'$(WasmEnableJsInteropByValue)' != 'false'"/>
Expand Down
167 changes: 54 additions & 113 deletions src/mono/mono.proj
Original file line number Diff line number Diff line change
Expand Up @@ -173,93 +173,11 @@
<BrowserLocalPath>$([MSBuild]::NormalizeDirectory('$(MSBuildThisFileDirectory)', 'browser'))</BrowserLocalPath>
<EmsdkLocalPath>emsdk</EmsdkLocalPath>
<EmscriptenVersion>%(_VersionLines.Identity)</EmscriptenVersion>
<_EmsdkPaths Condition="'$(HostOS)' != 'windows'">
CURRENT_SCRIPT=
DIR="."

# use shell specific method to get the path
# to the current file being source'd.
#
# To add a shell, add another conditional below,
# then add tests to scripts/test_source_env.sh

if [ -n "%24{BASH_SOURCE-}" ]%3B then
CURRENT_SCRIPT="%24BASH_SOURCE"
elif [ -n "%24{ZSH_VERSION-}" ]%3B then
CURRENT_SCRIPT="%24{(%):-%x}"
elif [ -n "%24{KSH_VERSION-}" ]%3B then
CURRENT_SCRIPT=%24{.sh.file}
fi

if [ -n "%24{CURRENT_SCRIPT-}" ]%3B then
DIR=%24(dirname "%24CURRENT_SCRIPT")
if [ -h "%24CURRENT_SCRIPT" ]%3B then
# Now work out actual DIR since this is part of a symlink.
# Since we can't be sure that readlink or realpath
# are available, use tools more likely to be installed.
# (This will still fail if sed is not available.)
SYMDIR=%24(dirname "%24(ls -l "%24CURRENT_SCRIPT" | sed -n "s/.*-&gt; //p")")
if [ -z "%24SYMDIR" ]%3B then
SYMDIR="."
fi
FULLDIR="%24DIR/%24SYMDIR"
DIR=%24(cd "%24FULLDIR" &gt; /dev/null 2&gt;&amp;1%3B /bin/pwd)
unset SYMDIR
unset FULLDIR
fi
fi
unset CURRENT_SCRIPT

if [ ! -f "%24DIR/emscripten/emcmake.py" ]%3B then
echo "Error: unable to determine 'emsdk' directory. Perhaps you are using a shell or" 1&gt;&amp;2
echo " environment that this script does not support." 1&gt;&amp;2
echo 1&gt;&amp;2
echo "A possible solution is to source this script while in the 'emsdk' directory." 1&gt;&amp;2
echo 1&gt;&amp;2
unset DIR
return
fi

export EMSDK_PATH=%24{DIR}/
unset DIR

export DOTNET_EMSCRIPTEN_LLVM_ROOT=%24{EMSDK_PATH}bin/
export DOTNET_EMSCRIPTEN_NODE_JS=%24{EMSDK_PATH}node/bin/node
export DOTNET_EMSCRIPTEN_BINARYEN_ROOT=%24{EMSDK_PATH}

</_EmsdkPaths>
<_EmsdkPaths Condition="'$(HostOS)' == 'windows'">
@echo off

set CURRENT_SCRIPT=%~dp0
set EMSDK_PATH=%CURRENT_SCRIPT:~0,-1%\

set EMSDK_PYTHON=%EMSDK_PATH%python\python.exe
set DOTNET_EMSCRIPTEN_LLVM_ROOT=%EMSDK_PATH%bin\
set DOTNET_EMSCRIPTEN_NODE_JS=%EMSDK_PATH%node\bin\node
set DOTNET_EMSCRIPTEN_NODE_PATH=%EMSDK_PATH%node\bin\
set DOTNET_EMSCRIPTEN_BINARYEN_ROOT=%EMSDK_PATH%

</_EmsdkPaths>
<_EmscriptenPaths>
import os

emsdk_path = os.path.dirname(os.path.dirname(os.path.realpath(os.getenv('EM_CONFIG')).replace('\\', '/')))

LLVM_ROOT = emsdk_path + '/bin'
NODE_JS = emsdk_path + '/node/bin/node'
BINARYEN_ROOT = emsdk_path

FROZEN_CACHE = bool(os.getenv('EM_FROZEN_CACHE', 'True'))

COMPILER_ENGINE = NODE_JS
JS_ENGINES = [NODE_JS]
</_EmscriptenPaths>
<PythonCmd Condition="'$(HostOS)' == 'windows'and '$(TargetsBrowser)' == 'true'">setlocal EnableDelayedExpansion &amp;&amp; call &quot;$([MSBuild]::NormalizePath('$(EMSDK_PATH)', 'emsdk_env$(ScriptExt)'))&quot; &amp;&amp; !EMSDK_PYTHON!</PythonCmd>
<PythonCmd Condition="'$(HostOS)' == 'windows'and '$(TargetsBrowser)' == 'true'">setlocal EnableDelayedExpansion &amp;&amp; call &quot;$([MSBuild]::NormalizePath('$(EMSDK_PATH)', 'pre_emsdk_env$(ScriptExt)'))&quot; &amp;&amp; call &quot;$([MSBuild]::NormalizePath('$(EMSDK_PATH)', 'emsdk_env$(ScriptExt)'))&quot; &amp;&amp; !EMSDK_PYTHON!</PythonCmd>
</PropertyGroup>

<RemoveDir Directories="$(EMSDK_PATH)" />

<ItemGroup>
<EmsdkFiles Condition="'%(PackageReference.Identity)' != 'runtime.$(_portableHostOS)-$(BuildArchitecture).Microsoft.NETCore.Runtime.Wasm.Node.Transport' and '%(PackageReference.Identity)' != 'Microsoft.NET.Runtime.Emscripten.$(EmsdkVersion).Python.win-$(BuildArchitecture)'"
Include="$(NuGetPackageRoot)\$([System.String]::Copy(%(PackageReference.Identity)).ToLowerInvariant())\%(PackageReference.Version)\tools\**" />
Expand All @@ -272,34 +190,13 @@ JS_ENGINES = [NODE_JS]
<Copy SourceFiles="@(EmsdkFiles)" DestinationFolder="$(EMSDK_PATH)/%(RecursiveDir)">
<Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
</Copy>
<Copy SourceFiles="@(NodeFiles)" DestinationFolder="$(EMSDK_PATH)node/%(RecursiveDir)">
<Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
</Copy>
<Copy Condition="'$(HostOS)' == 'windows'" SourceFiles="@(PythonFiles)" DestinationFolder="$(EMSDK_PATH)python/%(RecursiveDir)">
<Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
</Copy>
<ReadLinesFromFile File="$(EMSDK_PATH)emsdk_env$(ScriptExt)">
<Output TaskParameter="Lines" PropertyName="_EmsdkEnvFileText" />
</ReadLinesFromFile>
<WriteLinesToFile File="$(EMSDK_PATH)emsdk_env$(ScriptExt)"
Overwrite="true"
Lines="$(_EmsdkPaths);$(_EmsdkEnvFileText)" />
<WriteLinesToFile File="$(EMSDK_PATH)emscripten/.emscripten"
Overwrite="true"
Lines="$(_EmscriptenPaths)" />
<!-- Fixup files that were symlinks originally (on Linux/Mac, Windows has an equivalent already) -->
<ItemGroup>
<NodeModulesBinFiles Include="$(EMSDK_PATH)node\bin\npm.js" />
</ItemGroup>
<WriteLinesToFile
Condition="$([MSBuild]::IsOSPlatform(Linux)) or $([MSBuild]::IsOSPlatform(OSX))"
Lines="#!/usr/bin/env node;require('../lib/node_modules/%(Filename)/lib/cli.js')(process)"
File="%(NodeModulesBinFiles.RootDir)%(NodeModulesBinFiles.Directory)%(NodeModulesBinFiles.Filename)"
Overwrite="true" />

<PropertyGroup>
<ShouldProvisionEmscripten>false</ShouldProvisionEmscripten>
</PropertyGroup>
</PropertyGroup>
</Target>

<!-- Sets up WASI SDK if you don't have the WASI_SDK_PATH env variable set -->
Expand Down Expand Up @@ -351,8 +248,8 @@ JS_ENGINES = [NODE_JS]
See https://github.com/llvm/llvm-project/pull/98373
See https://github.com/dotnet/runtime/issues/104773
-->
<Exec Command="wasm-opt --version" IgnoreExitCode="true"
IgnoreStandardErrorWarningFormat="true"
<Exec Command="wasm-opt --version" IgnoreExitCode="true"
IgnoreStandardErrorWarningFormat="true"
StandardErrorImportance="low"
StandardOutputImportance="Low" >
<Output TaskParameter="ExitCode" PropertyName="_WasmOptExitCode"/>
Expand Down Expand Up @@ -726,14 +623,50 @@ JS_ENGINES = [NODE_JS]
<PropertyGroup>
<_MonoCFLAGSOption>-DCMAKE_C_FLAGS="@(_MonoCPPFLAGS, ' ') @(_MonoCFLAGS, ' ')"</_MonoCFLAGSOption>
<_MonoCXXFLAGSOption>-DCMAKE_CXX_FLAGS="@(_MonoCPPFLAGS, ' ') @(_MonoCXXFLAGS, ' ')"</_MonoCXXFLAGSOption>
<EMSDK_PATH>$([MSBuild]::EnsureTrailingSlash('$(EMSDK_PATH)').Replace('\', '/'))</EMSDK_PATH>
<NuGetPackageRoot >$([MSBuild]::EnsureTrailingSlash('$(NuGetPackageRoot)').Replace('\', '/'))</NuGetPackageRoot>
<DOTNET_EMSCRIPTEN_LLVM_ROOT>$(EMSDK_PATH)bin</DOTNET_EMSCRIPTEN_LLVM_ROOT>
<DOTNET_EMSCRIPTEN_NODE_PATH>$(NuGetPackageRoot)runtime.$(_portableHostOS)-$(BuildArchitecture).microsoft.netcore.runtime.wasm.node.transport/$(NodePackageVersion)/tools/$(_portableHostOS)-$(BuildArchitecture)/bin</DOTNET_EMSCRIPTEN_NODE_PATH>
<DOTNET_EMSCRIPTEN_NODE_JS>$(DOTNET_EMSCRIPTEN_NODE_PATH)/node</DOTNET_EMSCRIPTEN_NODE_JS>
<DOTNET_EMSCRIPTEN_CACHE>$(EM_FROZEN_CACHE)</DOTNET_EMSCRIPTEN_CACHE>
<DOTNET_EMSCRIPTEN_CACHE Condition="'$(DOTNET_EMSCRIPTEN_CACHE)' == '' or ('$(DOTNET_EMSCRIPTEN_CACHE)' != 'true' and '$(DOTNET_EMSCRIPTEN_CACHE)' != 'false')">true</DOTNET_EMSCRIPTEN_CACHE>
<EMSDK_PYTHON Condition="'$(TargetsBrowser)' == 'true' and '$(HostOS)' == 'windows'">$(NuGetPackageRoot)Microsoft.NET.Runtime.Emscripten.$(EmsdkVersion).Python.win-$(BuildArchitecture)/$(EmsdkPackageVersion)/tools/python.exe</EMSDK_PYTHON>
<_PreEmsdkEnvScriptPath>$(EMSDK_PATH)pre_emsdk_env$(ScriptExt)</_PreEmsdkEnvScriptPath>
<_ScriptExecutor Condition="'$(HostOS)' != 'windows'">.</_ScriptExecutor>
<_ScriptExecutor Condition="'$(HostOS)' == 'windows'">call</_ScriptExecutor>
</PropertyGroup>
<ItemGroup>
<_MonoCMakeArgs Include="$(_MonoCFLAGSOption)"/>
<_MonoCMakeArgs Include="$(_MonoCXXFLAGSOption)"/>
</ItemGroup>

<ItemGroup Condition="'$(HostOS)' != 'windows'">
<_PreEmsdkEnvScriptLines Include="#!/bin/bash" />
<_PreEmsdkEnvScriptLines Include="export EMSDK_PATH=$(EMSDK_PATH)" />
<_PreEmsdkEnvScriptLines Include="export DOTNET_EMSCRIPTEN_LLVM_ROOT=$(DOTNET_EMSCRIPTEN_LLVM_ROOT)" />
<_PreEmsdkEnvScriptLines Include="export DOTNET_EMSCRIPTEN_NODE_JS=$(DOTNET_EMSCRIPTEN_NODE_JS)" />
<_PreEmsdkEnvScriptLines Include="export DOTNET_EMSCRIPTEN_BINARYEN_ROOT=$(EMSDK_PATH)" />
<_PreEmsdkEnvScriptLines Include="export FROZEN_CACHE=$(DOTNET_EMSCRIPTEN_CACHE)" />
</ItemGroup>

<ItemGroup Condition="'$(HostOS)' == 'windows'">
<_PreEmsdkEnvScriptLines Include="@echo off" />
<_PreEmsdkEnvScriptLines Include="set EMSDK_PATH=$(EMSDK_PATH)" />
<_PreEmsdkEnvScriptLines Include="set EMSDK_PYTHON=$(EMSDK_PYTHON)" />
<_PreEmsdkEnvScriptLines Include="set DOTNET_EMSCRIPTEN_LLVM_ROOT=$(DOTNET_EMSCRIPTEN_LLVM_ROOT)" />
<_PreEmsdkEnvScriptLines Include="set DOTNET_EMSCRIPTEN_NODE_JS=$(DOTNET_EMSCRIPTEN_NODE_JS)" />
<_PreEmsdkEnvScriptLines Include="set EM_NODE_JS=$(DOTNET_EMSCRIPTEN_NODE_JS)" />
<!-- ToDo: clean it up -->
<_PreEmsdkEnvScriptLines Include="set EM_LLVM_ROOT=$([MSBuild]::EnsureTrailingSlash('$(DOTNET_EMSCRIPTEN_LLVM_ROOT)').Replace('/', '\'))" />
<_PreEmsdkEnvScriptLines Include="set DOTNET_EMSCRIPTEN_NODE_PATH=$(DOTNET_EMSCRIPTEN_NODE_PATH)" />
<_PreEmsdkEnvScriptLines Include="set DOTNET_EMSCRIPTEN_BINARYEN_ROOT=$(EMSDK_PATH)" />
<_PreEmsdkEnvScriptLines Include="set EM_BINARYEN_ROOT=$(EMSDK_PATH)" />
<_PreEmsdkEnvScriptLines Include="set FROZEN_CACHE=$(DOTNET_EMSCRIPTEN_CACHE)" />
</ItemGroup>
<!-- ToDo: extract the common ones and use with OS-dependent command: export or set -->
<WriteLinesToFile File="$(_PreEmsdkEnvScriptPath)" Lines="@(_PreEmsdkEnvScriptLines)" Overwrite="true" />

<PropertyGroup>
<EMSDK_PATH>$([MSBuild]::EnsureTrailingSlash('$(EMSDK_PATH)').Replace('\', '/'))</EMSDK_PATH>
<_EmsdkEnvScriptPath>$([MSBuild]::NormalizePath('$(EMSDK_PATH)', 'emsdk_env$(ScriptExt)'))</_EmsdkEnvScriptPath>

<_MonoCMakeConfigureCommand>cmake @(_MonoCMakeArgs, ' ') $(MonoCMakeExtraArgs) &quot;$(MonoProjectRoot.TrimEnd('\/'))&quot;</_MonoCMakeConfigureCommand>
Expand All @@ -742,11 +675,11 @@ JS_ENGINES = [NODE_JS]
<_MonoCMakeConfigureCommand Condition="'$(TargetsWasi)' == 'true'">$(_MonoCMakeConfigureCommand) -DWASI_SDK_PREFIX=$(WASI_SDK_PATH) -DCMAKE_SYSROOT=$(WASI_SDK_PATH)share/wasi-sysroot -DCMAKE_TOOLCHAIN_FILE=$(WASI_SDK_PATH)/share/cmake/wasi-sdk-p2.cmake -DCMAKE_CXX_FLAGS="--sysroot=$(WASI_SDK_PATH)share/wasi-sysroot"</_MonoCMakeConfigureCommand>

<_MonoCMakeConfigureCommand Condition="'$(TargetsBrowser)' != 'true' and '$(TargetsWasi)' != 'true' and '$(HostOS)' == 'windows'">call &quot;$(RepositoryEngineeringDir)native\init-vs-env.cmd&quot; $(_CompilerTargetArch) &amp;&amp; cd /D &quot;$(MonoObjDir)&quot; &amp;&amp; @(_MonoBuildEnv, ' ') $(_MonoCMakeConfigureCommand)</_MonoCMakeConfigureCommand>
<_MonoCMakeConfigureCommand Condition="'$(TargetsBrowser)' == 'true' and '$(HostOS)' != 'windows'">bash -c 'source $(_EmsdkEnvScriptPath) 2>&amp;1 &amp;&amp; emcmake $(_MonoCMakeConfigureCommand)'</_MonoCMakeConfigureCommand>
<_MonoCMakeConfigureCommand Condition="'$(TargetsBrowser)' == 'true' and '$(HostOS)' == 'windows'">call &quot;$(RepositoryEngineeringDir)native\init-vs-env.cmd&quot; &amp;&amp; call &quot;$(_EmsdkEnvScriptPath)&quot; &amp;&amp; emcmake $(_MonoCMakeConfigureCommand)</_MonoCMakeConfigureCommand>
<_MonoCMakeConfigureCommand Condition="'$(TargetsBrowser)' == 'true' and '$(HostOS)' != 'windows'">bash -c 'source $(_PreEmsdkEnvScriptPath) &amp;&amp; source $(_EmsdkEnvScriptPath) 2>&amp;1 &amp;&amp; emcmake $(_MonoCMakeConfigureCommand)'</_MonoCMakeConfigureCommand>
<_MonoCMakeConfigureCommand Condition="'$(TargetsBrowser)' == 'true' and '$(HostOS)' == 'windows'">call &quot;$(_PreEmsdkEnvScriptPath)&quot; &amp;&amp; call &quot;$(RepositoryEngineeringDir)native\init-vs-env.cmd&quot; &amp;&amp; call &quot;$(_EmsdkEnvScriptPath)&quot; &amp;&amp; emcmake $(_MonoCMakeConfigureCommand)</_MonoCMakeConfigureCommand>
<_MonoCMakeConfigureCommand Condition="'$(TargetsWasi)' == 'true' and '$(HostOS)' == 'windows'">call &quot;$(RepositoryEngineeringDir)native\init-vs-env.cmd&quot; &amp;&amp; cmake $(_MonoCMakeConfigureCommand)</_MonoCMakeConfigureCommand>

<_MonoCMakeBuildCommand>cmake --build . --target install --config $(Configuration)</_MonoCMakeBuildCommand>
<_MonoCMakeBuildCommand>$(_ScriptExecutor) &quot;$(_PreEmsdkEnvScriptPath)&quot; &amp;&amp; cmake --build . --target install --config $(Configuration)</_MonoCMakeBuildCommand>
<_MonoCMakeBuildCommand Condition="'$(MonoVerboseBuild)' == 'true'">$(_MonoCMakeBuildCommand) --verbose</_MonoCMakeBuildCommand>
<_MonoCMakeBuildCommand Condition="'$(_MonoUseNinja)' != 'true'">$(_MonoCMakeBuildCommand) --parallel $([System.Environment]::ProcessorCount)</_MonoCMakeBuildCommand>
<_MonoCMakeBuildCommand Condition="'$(TargetsBrowser)' != 'true' and '$(TargetsWasi)' != 'true' and '$(HostOS)' != 'windows'">@(_MonoBuildEnv, ' ') $(_MonoCMakeBuildCommand)</_MonoCMakeBuildCommand>
Expand All @@ -770,6 +703,14 @@ JS_ENGINES = [NODE_JS]
File="$(MonoObjDir)cmake_cmd_line.txt"
Lines="$(_MonoCMakeConfigureCommand)"
Overwrite="true" />
<ItemGroup>
<NodeModulesBinFiles Include="$(DOTNET_EMSCRIPTEN_NODE_PATH)/npm.js" />
</ItemGroup>
<WriteLinesToFile
Condition="$([MSBuild]::IsOSPlatform(Linux)) or $([MSBuild]::IsOSPlatform(OSX))"
Lines="#!/usr/bin/env node;require('../lib/node_modules/%(Filename)/lib/cli.js')(process)"
File="%(NodeModulesBinFiles.RootDir)%(NodeModulesBinFiles.Directory)%(NodeModulesBinFiles.Filename)"
Overwrite="true" />

<!-- build -->
<Message Condition="'$(BuildMonoAOTCrossCompilerOnly)' != 'true'" Text="Running '$(_MonoCMakeBuildCommand)' in '$(MonoObjDir)'" Importance="High"/>
Expand Down Expand Up @@ -991,7 +932,7 @@ JS_ENGINES = [NODE_JS]
<_MonoAotCMakeConfigureCommand Condition="'$(_MonoSkipInitCompiler)' != 'true' and '$(HostOS)' != 'windows'">sh -c 'build_arch=&quot;$(_CompilerTargetArch)&quot; ROOTFS_DIR=&quot;$(MonoCrossDir)&quot; compiler=&quot;$(MonoCCompiler)&quot; . &quot;$(RepositoryEngineeringCommonDir)native/init-compiler.sh&quot; &amp;&amp; @(_MonoAotBuildEnv, ' ') $(_MonoAotCMakeConfigureCommand)'</_MonoAotCMakeConfigureCommand>
<_MonoAotCMakeConfigureCommand Condition="'$(_MonoSkipInitCompiler)' == 'true' and '$(HostOS)' != 'windows'">$(_MonoAOTCCOption) $(_MonoAOTCXXOption) @(_MonoAotBuildEnv, ' ') $(_MonoAotCMakeConfigureCommand)</_MonoAotCMakeConfigureCommand>
<_MonoAotCMakeConfigureCommand Condition="'$(HostOS)' == 'windows'">call &quot;$(RepositoryEngineeringDir)native\init-vs-env.cmd&quot; $(_CompilerTargetArch) &amp;&amp; cd /D &quot;$(MonoObjCrossDir)&quot; &amp;&amp; @(_MonoAotBuildEnv, ' ') $(_MonoAotCMakeConfigureCommand)</_MonoAotCMakeConfigureCommand>
<_MonoAotCMakeBuildCommand>cmake --build . --target install --config $(Configuration)</_MonoAotCMakeBuildCommand>
<_MonoAotCMakeBuildCommand>$(_ScriptExecutor) &quot;$(_PreEmsdkEnvScriptPath)&quot; &amp;&amp; cmake --build . --target install --config $(Configuration)</_MonoAotCMakeBuildCommand>
<_MonoAotCMakeBuildCommand Condition="'$(MonoVerboseBuild)' == 'true'">$(_MonoAotCMakeBuildCommand) --verbose</_MonoAotCMakeBuildCommand>
<_MonoAotCMakeBuildCommand Condition="'$(_MonoUseNinja)' != 'true'">$(_MonoAotCMakeBuildCommand) --parallel $([System.Environment]::ProcessorCount)</_MonoAotCMakeBuildCommand>
<_MonoAotCMakeBuildCommand Condition="'$(HostOS)' != 'windows'">@(_MonoAotBuildEnv, ' ') $(_MonoAotCMakeBuildCommand)</_MonoAotCMakeBuildCommand>
Expand Down
Loading