Skip to content

Commit c57cba7

Browse files
authored
Add support to produce WebAssembly runtime assets (#41777)
* Add support to produce WebAssembly runtime assets * Add support to build in OSX and address PR feedback * Change AND -> and in Directory.Build.props change region * PR Feedback: run build in rolling CI builds as well * Add TODO comment for WebAssembly OSGroup
1 parent 567241a commit c57cba7

19 files changed

+161
-83
lines changed

.azure-ci.yml

+3
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ resources:
5555
- container: ubuntu_1604_arm_cross_container
5656
image: microsoft/dotnet-buildtools-prereqs:ubuntu-16.04-cross-ef0ac75-20175511035548
5757

58+
- container: ubuntu_1604
59+
image: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-bd0fe7c-20190923200211
60+
5861
variables:
5962
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notIn(variables['Build.Reason'], 'PullRequest')) }}:
6063
- group: DotNet-Blob-Feed

Directory.Build.props

+15-7
Original file line numberDiff line numberDiff line change
@@ -57,15 +57,20 @@
5757
<OSGroup Condition="'$(OSGroup)' == ''">$(DefaultOSGroup)</OSGroup>
5858
<ConfigurationGroup Condition="'$(ConfigurationGroup)' == ''">Debug</ConfigurationGroup>
5959
<HostArch>$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture.ToString().ToLowerInvariant)</HostArch>
60-
<ArchGroup Condition="'$(ArchGroup)' == '' AND '$(HostArch)' == 'arm'">arm</ArchGroup>
61-
<ArchGroup Condition="'$(ArchGroup)' == '' AND '$(HostArch)' == 'arm64'">arm64</ArchGroup>
60+
<ArchGroup Condition="'$(ArchGroup)' == '' and '$(HostArch)' == 'arm'">arm</ArchGroup>
61+
<ArchGroup Condition="'$(ArchGroup)' == '' and '$(HostArch)' == 'arm64'">arm64</ArchGroup>
62+
<ArchGroup Condition="'$(ArchGroup)' == '' and '$(OSGroup)' == 'WebAssembly'">wasm</ArchGroup>
6263
<ArchGroup Condition="'$(ArchGroup)' == ''">x64</ArchGroup>
6364

65+
<!-- RuntimeOS is calculated based on the build system OS, however if building for WebAssembly we need to let
66+
the build system to use webassembly as the RuntimeOS for produced package RIDs. -->
67+
<RuntimeOS Condition="'$(OSGroup)' == 'WebAssembly'">$(OSGroup.ToLowerInvariant())</RuntimeOS>
68+
6469
<!-- Initialize BuildConfiguration from the individual properties if it wasn't already explicitly set -->
6570
<BuildConfiguration Condition="'$(BuildConfiguration)' == ''">$(TargetGroup)-$(OSGroup)-$(ConfigurationGroup)-$(ArchGroup)</BuildConfiguration>
6671

6772
<!-- if PKGPROJ doesn't set BuildConfigurations, make sure it only builds for TargetGroup=package or BuildAllConfigurations -->
68-
<BuildConfigurations Condition="'$(MSBuildProjectExtension)' == '.pkgproj' AND '$(BuildConfigurations)' == ''">package</BuildConfigurations>
73+
<BuildConfigurations Condition="'$(MSBuildProjectExtension)' == '.pkgproj' and '$(BuildConfigurations)' == ''">package</BuildConfigurations>
6974
</PropertyGroup>
7075

7176
<!-- Informs build tools to apply .NET Framework metadata if not a test project -->
@@ -130,13 +135,16 @@
130135
<ToolRuntimeRID Condition="'$(BuildingInsideVisualStudio)' == 'true'">$(_runtimeOS)-x64</ToolRuntimeRID>
131136
<ToolRuntimeRID Condition="'$(ToolRuntimeID)' == ''">$(_runtimeOS)-$(HostArch)</ToolRuntimeRID>
132137
<!-- We build linux-musl-arm on a ubuntu container, so we can't use the toolset build for alpine runtime. We need to use portable linux RID for our toolset in order to be able to use it. -->
133-
<ToolRuntimeRID Condition="'$(_runtimeOS)' == 'linux-musl' AND $(ArchGroup.StartsWith('arm')) AND !$(HostArch.StartsWith('arm'))">linux-x64</ToolRuntimeRID>
138+
<ToolRuntimeRID Condition="'$(_runtimeOS)' == 'linux-musl' and $(ArchGroup.StartsWith('arm')) and !$(HostArch.StartsWith('arm'))">linux-x64</ToolRuntimeRID>
134139

135-
<!-- There are no WebAssembly tools, so treat them as Windows -->
136-
<ToolRuntimeRID Condition="'$(RuntimeOS)' == 'WebAssembly'">win-x64</ToolRuntimeRID>
140+
<!-- There are no WebAssembly tools, so use the default ones -->
141+
<_buildingInOSX>$([MSBuild]::IsOSPlatform('OSX'))</_buildingInOSX>
142+
<ToolRuntimeRID Condition="'$(RuntimeOS)' == 'webassembly' and '$(OS)' == 'Windows_NT'">win-x64</ToolRuntimeRID>
143+
<ToolRuntimeRID Condition="'$(RuntimeOS)' == 'webassembly' and '$(OS)' != 'Windows_NT' and $(_buildingInOSX)">osx-x64</ToolRuntimeRID>
144+
<ToolRuntimeRID Condition="'$(RuntimeOS)' == 'webassembly' and '$(OS)' != 'Windows_NT' and !$(_buildingInOSX)">linux-x64</ToolRuntimeRID>
137145

138146
<!-- support cross-targeting by choosing a RID to restore when running on a different machine that what we're build for -->
139-
<_portableOS Condition="'$(OSGroup)' == 'Unix' AND '$(_runtimeOSFamily)' != 'osx' AND '$(_runtimeOSFamily)' != 'FreeBSD' AND '$(_runtimeOS)' != 'linux-musl'">linux</_portableOS>
147+
<_portableOS Condition="'$(OSGroup)' == 'Unix' and '$(_runtimeOSFamily)' != 'osx' and '$(_runtimeOSFamily)' != 'FreeBSD' AND '$(_runtimeOS)' != 'linux-musl'">linux</_portableOS>
140148

141149
<_packageRID />
142150
<_packageRID Condition="'$(PortableBuild)' == 'true'">$(_portableOS)-$(ArchGroup)</_packageRID>

eng/configurations/osgroups.props

+4-2
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,10 @@
3535
<PackageTargetRuntime>netbsd</PackageTargetRuntime>
3636
</OSGroups>
3737
<OSGroups Include="WebAssembly">
38-
<Imports>Unix</Imports>
39-
<TargetsUnix>true</TargetsUnix>
38+
<!-- TODO: we need to change this to import Unix instead whenever
39+
we want to start using managed implementation for WebAssembly -->
40+
<Imports>Linux</Imports>
41+
<TargetsLinux>true</TargetsLinux>
4042
<TargetsWebAssembly>true</TargetsWebAssembly>
4143
</OSGroups>
4244
<OSGroups Include="AnyOS" />

eng/pipelines/linux.yml

+46-24
Original file line numberDiff line numberDiff line change
@@ -134,35 +134,57 @@ stages:
134134
- linuxArm64Queues: \(Ubuntu.1604.Arm64.Open\)Ubuntu.1604.Arm64.Docker.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-helix-arm64v8-a45aeeb-20190620160300
135135

136136
# Legs without helix testing
137-
# Only run this leg in PRs.
138-
- ${{ if and(eq(parameters.fullMatrix, 'false'), and(ne(parameters.testScope, 'outerloop'), ne(parameters.testScope, 'all'))) }}:
137+
# Don't run these legs in outerloop builds
138+
- ${{ if and(ne(parameters.testScope, 'outerloop'), ne(parameters.testScope, 'all')) }}:
139139
- job: LinuxNoTest
140140
displayName: Build
141141
strategy:
142142
matrix:
143-
arm_Debug:
144-
_BuildConfig: Debug
145-
_architecture: arm
146-
_framework: netcoreapp
147-
_buildExtraArguments: /p:RuntimeOS=ubuntu.16.04 -warnAsError false
148-
_buildScriptPrefix: 'ROOTFS_DIR=/crossrootfs/arm '
149-
_dockerContainer: ubuntu_1604_arm_cross_container
150-
151-
musl_arm64_Debug:
152-
_BuildConfig: Debug
153-
_architecture: arm64
154-
_framework: netcoreapp
155-
_dockerContainer: alpine_37_arm64_container
156-
_buildScriptPrefix: 'ROOTFS_DIR=/crossrootfs/arm64 '
157-
_buildExtraArguments: -warnAsError false /p:BuildNativeCompiler=--clang5.0 /p:RuntimeOS=linux-musl
158-
159-
arm64_Debug:
160-
_BuildConfig: Debug
161-
_architecture: arm64
143+
wasm_Release:
144+
_BuildConfig: Release
145+
_architecture: wasm
162146
_framework: netcoreapp
163-
_dockerContainer: ubuntu_1604_arm64_cross_container
164-
_buildScriptPrefix: 'ROOTFS_DIR=/crossrootfs/arm64 '
165-
_buildExtraArguments: --warnAsError false
147+
_dockerContainer: ubuntu_1604
148+
_emsdkPath: $(Build.BinariesDirectory)/emsdk
149+
_buildScriptPrefix: 'EMSDK_PATH=$(_emsdkPath) '
150+
_buildExtraArguments: -os WebAssembly -warnAsError false
151+
_installEmscripten: true
152+
153+
# Only run these legs in PRs.
154+
${{ if eq(parameters.fullMatrix, 'false') }}:
155+
arm_Debug:
156+
_BuildConfig: Debug
157+
_architecture: arm
158+
_framework: netcoreapp
159+
_buildExtraArguments: /p:RuntimeOS=ubuntu.16.04 -warnAsError false
160+
_buildScriptPrefix: 'ROOTFS_DIR=/crossrootfs/arm '
161+
_dockerContainer: ubuntu_1604_arm_cross_container
162+
163+
musl_arm64_Debug:
164+
_BuildConfig: Debug
165+
_architecture: arm64
166+
_framework: netcoreapp
167+
_dockerContainer: alpine_37_arm64_container
168+
_buildScriptPrefix: 'ROOTFS_DIR=/crossrootfs/arm64 '
169+
_buildExtraArguments: -warnAsError false /p:BuildNativeCompiler=--clang5.0 /p:RuntimeOS=linux-musl
170+
171+
arm64_Debug:
172+
_BuildConfig: Debug
173+
_architecture: arm64
174+
_framework: netcoreapp
175+
_dockerContainer: ubuntu_1604_arm64_cross_container
176+
_buildScriptPrefix: 'ROOTFS_DIR=/crossrootfs/arm64 '
177+
_buildExtraArguments: --warnAsError false
178+
179+
preBuildSteps:
180+
- script: |
181+
EMSCRIPTEN_VERSION=1.38.47
182+
git clone https://github.com/emscripten-core/emsdk.git $(_emsdkPath)
183+
cd $(_emsdkPath)
184+
./emsdk install ${EMSCRIPTEN_VERSION}-upstream
185+
./emsdk activate --embedded ${EMSCRIPTEN_VERSION}-upstream
186+
displayName: Install Emscripten
187+
condition: and(succeeded(), eq(variables['_installEmscripten'], 'true'))
166188
167189
pool:
168190
name: Hosted Ubuntu 1604

eng/restore/runtime/runtime.depproj

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
33
<RuntimeIdentifier>$(PackageRID)</RuntimeIdentifier>
4+
<!-- We're using ToolRuntimeRID as a placeholder for the real corelib/runtime components until we have an actual set of runtime bits to consume for webassembly. -->
5+
<RuntimeIdentifier Condition="'$(RuntimeOS)' == 'webassembly'">$(ToolRuntimeRID)</RuntimeIdentifier>
46
<NoWarn>$(NoWarn);NU1603;NU1605</NoWarn>
57
<SwapNativeForIL Condition="'$(SwapNativeForIL)' == '' AND ('$(ConfigurationGroup)' == 'Debug' OR '$(Coverage)' == 'true')">true</SwapNativeForIL>
68
</PropertyGroup>

src/Microsoft.XmlSerializer.Generator/tests/Microsoft.XmlSerializer.Generator.Tests.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<DefineConstants>$(DefineConstants);XMLSERIALIZERGENERATORTESTS</DefineConstants>
44
<Configurations>netcoreapp-Debug;netcoreapp-Release</Configurations>
55
<CoverageSupported>false</CoverageSupported>
6-
<SkipTestsOnPlatform Condition="'$(ArchGroup)' == 'arm' OR '$(ArchGroup)' == 'arm64' OR '$(ArchGroup)' == 'armel'">true</SkipTestsOnPlatform>
6+
<SkipTestsOnPlatform Condition="'$(ArchGroup)' == 'arm' or '$(ArchGroup)' == 'arm64' or '$(ArchGroup)' == 'armel' or '$(ArchGroup)' == 'wasm'">true</SkipTestsOnPlatform>
77
</PropertyGroup>
88
<PropertyGroup>
99
<!-- Reuse the same runtimeconfig used by MSBuild. -->

src/Native/Unix/CMakeLists.txt

+12-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ add_compile_options(-Wno-empty-translation-unit)
1818
add_compile_options(-Wno-cast-align)
1919
add_compile_options(-Wno-typedef-redefinition)
2020
add_compile_options(-Wno-c11-extensions)
21-
add_compile_options(-fPIC)
2221
add_compile_options(-I${CMAKE_CURRENT_SOURCE_DIR}/Common)
2322
add_compile_options(-I${CMAKE_CURRENT_BINARY_DIR}/Common)
2423
add_compile_options(-g)
@@ -29,9 +28,19 @@ endif()
2928
add_compile_options(-Werror)
3029

3130
if(CMAKE_SYSTEM_NAME STREQUAL Emscripten)
31+
# Build a static library so no -fPIC
3232
set(CLR_CMAKE_PLATFORM_WASM 1)
3333
add_definitions(-D_WASM_)
34+
# The emscripten build has additional warnings so -Werror breaks
35+
add_compile_options(-Wno-unused-parameter)
36+
add_compile_options(-Wno-unused-function)
37+
add_compile_options(-Wno-alloca)
38+
add_compile_options(-Wno-implicit-int-float-conversion)
39+
else()
40+
add_compile_options(-fPIC)
41+
set(GEN_SHARED_LIB 1)
3442
endif(CMAKE_SYSTEM_NAME STREQUAL Emscripten)
43+
3544
if (CMAKE_SYSTEM_PROCESSOR STREQUAL x86_64 OR CMAKE_SYSTEM_PROCESSOR STREQUAL amd64)
3645
add_definitions(-DBIT64=1)
3746
add_definitions(-D_AMD64_)
@@ -95,7 +104,8 @@ else ()
95104
message(FATAL_ERROR "Unknown build type. Set CMAKE_BUILD_TYPE to DEBUG or RELEASE.")
96105
endif ()
97106

98-
if (APPLE)
107+
if(CMAKE_SYSTEM_NAME STREQUAL Emscripten)
108+
elseif (APPLE)
99109
add_definitions(-D__APPLE_USE_RFC_3542)
100110

101111
# We cannot enable "stack-protector-strong" on OS X due to a bug in clang compiler (current version 7.0.2)

src/Native/Unix/Common/pal_config.h.in

+1
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
#cmakedefine01 HAVE_SYS_SYSCTL_H
6868
#cmakedefine01 HAVE_NET_IFMEDIA_H
6969
#cmakedefine01 HAVE_LINUX_RTNETLINK_H
70+
#cmakedefine01 HAVE_LINUX_CAN_H
7071
#cmakedefine01 HAVE_GETDOMAINNAME_SIZET
7172
#cmakedefine01 HAVE_INOTIFY
7273
#cmakedefine01 HAVE_CLOCK_MONOTONIC

src/Native/Unix/System.Native/CMakeLists.txt

+18-18
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,25 @@ if (CMAKE_SYSTEM_NAME STREQUAL Linux)
3131
endif ()
3232
endif ()
3333

34-
add_library(System.Native
35-
SHARED
36-
${NATIVE_SOURCES}
37-
${VERSION_FILE_PATH}
38-
)
34+
if (GEN_SHARED_LIB)
35+
add_library(System.Native
36+
SHARED
37+
${NATIVE_SOURCES}
38+
${VERSION_FILE_PATH}
39+
)
40+
if (CMAKE_SYSTEM_NAME STREQUAL Linux AND NOT CLR_CMAKE_PLATFORM_ANDROID)
41+
target_link_libraries(System.Native rt)
42+
endif ()
3943

44+
if (CMAKE_SYSTEM_NAME STREQUAL FreeBSD)
45+
target_link_libraries(System.Native pthread)
46+
if (HAVE_INOTIFY)
47+
find_library(INOTIFY_LIBRARY inotify HINTS /usr/local/lib)
48+
target_link_libraries(System.Native ${INOTIFY_LIBRARY})
49+
endif ()
50+
endif ()
51+
install_library_and_symbols (System.Native)
52+
endif ()
4053

4154
add_library(System.Native-Static
4255
STATIC
@@ -48,17 +61,4 @@ add_library(System.Native-Static
4861
set_target_properties(System.Native-Static PROPERTIES PREFIX "")
4962
set_target_properties(System.Native-Static PROPERTIES OUTPUT_NAME System.Native CLEAN_DIRECT_OUTPUT 1)
5063

51-
if (CMAKE_SYSTEM_NAME STREQUAL Linux AND NOT CLR_CMAKE_PLATFORM_ANDROID)
52-
target_link_libraries(System.Native rt)
53-
endif ()
54-
55-
if (CMAKE_SYSTEM_NAME STREQUAL FreeBSD)
56-
target_link_libraries(System.Native pthread)
57-
if (HAVE_INOTIFY)
58-
find_library(INOTIFY_LIBRARY inotify HINTS /usr/local/lib)
59-
target_link_libraries(System.Native ${INOTIFY_LIBRARY})
60-
endif()
61-
endif ()
62-
63-
install_library_and_symbols (System.Native)
6464
install (TARGETS System.Native-Static DESTINATION .)

src/Native/Unix/System.Native/pal_networking.c

+3-4
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
#include <ifaddrs.h>
5656
#endif
5757
#endif
58-
#ifdef AF_CAN
58+
#if HAVE_LINUX_CAN_H
5959
#include <linux/can.h>
6060
#endif
6161
#if HAVE_KQUEUE
@@ -2001,7 +2001,7 @@ static bool TryConvertProtocolTypePalToPlatform(int32_t palAddressFamily, int32_
20012001
*platformProtocolType = palProtocolType;
20022002
return true;
20032003
#endif
2004-
#ifdef AF_CAN
2004+
#if HAVE_LINUX_CAN_H
20052005
case AddressFamily_AF_CAN:
20062006
switch (palProtocolType)
20072007
{
@@ -2492,8 +2492,7 @@ static int32_t WaitForSocketEventsInner(int32_t port, SocketEvent* buffer, int32
24922492
}
24932493

24942494
#else
2495-
#warning epoll/kqueue not detected; building with stub socket events support
2496-
static const size_t SocketEventBufferElementSize = sizeof(struct pollfd);
2495+
static const size_t SocketEventBufferElementSize = 0;
24972496

24982497
static SocketEvents GetSocketEvents(int16_t filter, uint16_t flags)
24992498
{

src/Native/Unix/System.Native/pal_process.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ static int compare_groups(const void * a, const void * b)
154154

155155
static int SetGroups(uint32_t* userGroups, int32_t userGroupsLength, uint32_t* processGroups)
156156
{
157-
#ifdef __linux__
157+
#if defined(__linux__) || defined(_WASM_)
158158
size_t platformGroupsLength = Int32ToSizeT(userGroupsLength);
159159
#else // BSD
160160
int platformGroupsLength = userGroupsLength;

src/Native/Unix/configure.cmake

+4
Original file line numberDiff line numberDiff line change
@@ -655,6 +655,10 @@ check_include_files(
655655
linux/rtnetlink.h
656656
HAVE_LINUX_RTNETLINK_H)
657657

658+
check_include_files(
659+
linux/can.h
660+
HAVE_LINUX_CAN_H)
661+
658662
check_symbol_exists(
659663
getpeereid
660664
unistd.h

src/Native/Unix/gen-buildsys-clang.sh

+10-1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ else
4444
buildtype="$5"
4545
fi
4646

47+
cmake_cmd=cmake
4748
cmake_extra_defines="-DCMAKE_BUILD_TYPE=$buildtype"
4849
if [[ -n "$CROSSCOMPILE" ]]; then
4950
if ! [[ -n "$ROOTFS_DIR" ]]; then
@@ -60,6 +61,13 @@ fi
6061
if [ "$build_arch" == "armel" ]; then
6162
cmake_extra_defines="$cmake_extra_defines -DARM_SOFTFP=1"
6263
fi
64+
if [ "$build_arch" == "wasm" ]; then
65+
if [ "$EMSCRIPTEN_ROOT" == "" ]; then
66+
EMSCRIPTEN_ROOT="$EMSDK_PATH/upstream/emscripten"
67+
fi
68+
cmake_cmd="emcmake cmake"
69+
cmake_extra_defines="$cmake_extra_defines -DCMAKE_TOOLCHAIN_FILE=$EMSCRIPTEN_ROOT/cmake/Modules/Platform/Emscripten.cmake -DEMSCRIPTEN_GENERATE_BITCODE_STATIC_LIBRARIES=1"
70+
fi
6371

6472
__UnprocessedCMakeArgs=""
6573
if [ -z "$6" ]; then
@@ -68,6 +76,7 @@ else
6876
__UnprocessedCMakeArgs="$6"
6977
fi
7078

71-
cmake $cmake_extra_defines \
79+
echo "Invoking \"$cmake_cmd $cmake_extra_defines $__UnprocessedCMakeArgs $1\""
80+
$cmake_cmd $cmake_extra_defines \
7281
$__UnprocessedCMakeArgs \
7382
$1

src/Native/Windows/gen-buildsys-win.bat

+8
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,14 @@ popd
3636
:DoGen
3737

3838
if "%3" == "wasm" (
39+
if "%EMSDK_PATH%" == "" (
40+
echo "Error: Should set EMSDK_PATH environment variable pointing to emsdk root."
41+
exit /B 1
42+
)
43+
44+
if "%EMSCRIPTEN_ROOT%" == "" (
45+
set EMSCRIPTEN_ROOT="%EMSDK_PATH/upstream/emscripten%"
46+
)
3947
emcmake cmake "-DEMSCRIPTEN_GENERATE_BITCODE_STATIC_LIBRARIES=1" "-DCMAKE_TOOLCHAIN_FILE=%EMSCRIPTEN%/cmake/Modules/Platform/Emscripten.cmake" "-DCMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE%" -G "NMake Makefiles" %__sourceDir%
4048
) else (
4149
"%CMakePath%" %__SDKVersion% "-DCMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE%" "-DCMAKE_INSTALL_PREFIX=%__CMakeBinDir%" -G "Visual Studio %__VSString%" -B. -H%1 %__ExtraCmakeParams%

src/Native/build-native.cmd

-4
Original file line numberDiff line numberDiff line change
@@ -160,10 +160,6 @@ IF ERRORLEVEL 1 (
160160
goto :Failure
161161
)
162162

163-
:: Copy results to native_aot since packaging expects a copy there too
164-
mkdir "%__artifactsDir%\bin\native\%__outConfig%-aot"
165-
copy "%__artifactsDir%\bin\native\%__outConfig%\*" "%__artifactsDir%\bin\native\%__outConfig%-aot"
166-
167163
exit /B 0
168164

169165
:Failure

src/Native/build-native.proj

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
then we should consider calling Environment.ProcessorCount
2121
-->
2222
<_ProcessorCountArg> --numproc $(MSBuildNodeCount)</_ProcessorCountArg>
23-
<_StripSymbolsArg Condition="'$(BuildNativeStripSymbols)' == 'true'"> stripsymbols</_StripSymbolsArg>
23+
<_StripSymbolsArg Condition="'$(BuildNativeStripSymbols)' == 'true' and '$(OSGroup)' != 'WebAssembly'"> stripsymbols</_StripSymbolsArg>
2424
<_PortableBuildArg Condition="'$(PortableBuild)' == 'true'"> -portable</_PortableBuildArg>
2525

2626
<!--

0 commit comments

Comments
 (0)