Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
35 changes: 18 additions & 17 deletions eng/Subsets.props
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@
<DefaultCoreClrSubsets Condition="'$(TargetRid)' == 'linux-armel'">clr.native+clr.corelib+clr.tools+clr.nativecorelib+clr.packages+clr.nativeaotlibs+clr.crossarchtools</DefaultCoreClrSubsets>
<DefaultCoreClrSubsets Condition="'$(TargetsAndroid)' == 'true'">clr.native+clr.corelib+clr.tools+clr.nativecorelib+clr.packages+clr.nativeaotlibs+clr.crossarchtools</DefaultCoreClrSubsets>
<DefaultCoreClrSubsets Condition="'$(TargetsAppleMobile)' == 'true'">clr.native+clr.corelib+clr.tools+clr.nativecorelib+clr.packages+clr.nativeaotlibs+clr.crossarchtools</DefaultCoreClrSubsets>
<DefaultCoreClrSubsets Condition="'$(TargetsBrowser)' == 'true'">mono.emsdk+clr.native+clr.corelib+clr.tools+clr.packages+clr.crossarchtools</DefaultCoreClrSubsets>
<DefaultCoreClrSubsets Condition="'$(TargetsBrowser)' == 'true'">mono.emsdk+clr.native+clr.corelib+clr.tools+clr.packages+clr.crossarchtools+host.native</DefaultCoreClrSubsets>
<!-- Even on platforms that do not support the CoreCLR runtime, we still want to build ilasm/ildasm. -->
<DefaultCoreClrSubsets Condition="'$(RuntimeFlavor)' != 'CoreCLR'">clr.iltools+clr.packages</DefaultCoreClrSubsets>

Expand Down Expand Up @@ -590,22 +590,6 @@
<ProjectToBuild Include="$(MonoProjectRoot)\wasm\workloads.proj" Category="mono" />
</ItemGroup>

<!-- Host sets -->
<ItemGroup Condition="$(_subset.Contains('+host.native+'))">
<CorehostProjectToBuild Include="$(SharedNativeRoot)corehost\corehost.proj" />
<ProjectToBuild Include="@(CorehostProjectToBuild)" AdditionalProperties="$(TargetCxxLibraryProperties)" Category="host" />
</ItemGroup>

<ItemGroup Condition="$(_subset.Contains('+host.tools+'))">
<ManagedProjectToBuild Include="$(InstallerProjectRoot)managed\**\*.csproj" />
<ProjectToBuild Include="@(ManagedProjectToBuild)" BuildInParallel="true" Category="host" />
</ItemGroup>

<ItemGroup Condition="$(_subset.Contains('+host.pkg+'))">
<PkgprojProjectToBuild Include="$(InstallerProjectRoot)pkg\projects\host-packages.proj" />
<ProjectToBuild Include="@(PkgprojProjectToBuild)" Category="host" />
</ItemGroup>

<!-- Libraries sets -->
<ItemGroup Condition="$(_subset.Contains('+libs.native+'))">
<ProjectToBuild Include="$(SharedNativeRoot)libs\build-native.proj" Category="libs" />
Expand All @@ -632,6 +616,23 @@
<ProjectToBuild Include="$(WasiProjectRoot)wasi.proj" Category="mono" />
</ItemGroup>

<!-- Host sets -->
<ItemGroup Condition="$(_subset.Contains('+host.native+'))">
<CorehostProjectToBuild Include="$(SharedNativeRoot)corehost\corehost.proj" />
<ProjectToBuild Include="@(CorehostProjectToBuild)" AdditionalProperties="$(TargetCxxLibraryProperties)" Category="host" />
</ItemGroup>

<ItemGroup Condition="$(_subset.Contains('+host.tools+'))">
<ManagedProjectToBuild Include="$(InstallerProjectRoot)managed\**\*.csproj" />
<ProjectToBuild Include="@(ManagedProjectToBuild)" BuildInParallel="true" Category="host" />
</ItemGroup>

<ItemGroup Condition="$(_subset.Contains('+host.pkg+'))">
<PkgprojProjectToBuild Include="$(InstallerProjectRoot)pkg\projects\host-packages.proj" />
<ProjectToBuild Include="@(PkgprojProjectToBuild)" Category="host" />
</ItemGroup>

<!-- Libraries test sets -->
<ItemGroup Condition="$(_subset.Contains('+libs.pretest+'))">
<ProjectToBuild Include="$(LibrariesProjectRoot)pretest.proj" Category="libs" />
</ItemGroup>
Expand Down
30 changes: 21 additions & 9 deletions eng/liveBuilds.targets
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,14 @@
<MonoArtifactsPath Condition="'$(MonoArtifactsPath)' == ''">$([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'artifacts', 'bin', 'mono', '$(TargetOS).$(TargetArchitecture).$(MonoConfiguration)'))</MonoArtifactsPath>
<LibrariesArtifactsPath Condition="'$(LibrariesArtifactsPath)' == ''">$([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'artifacts'))</LibrariesArtifactsPath>
<LibrariesAllConfigurationsArtifactsPath Condition="'$(LibrariesAllConfigurationsArtifactsPath)' == ''">$([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'artifacts'))</LibrariesAllConfigurationsArtifactsPath>
<HostArtifactsPath Condition="'$(HostArtifactsPath)' == ''">$([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'artifacts', 'bin', '$(TargetOS)-$(TargetArchitecture).$(HostConfiguration)'))</HostArtifactsPath>
</PropertyGroup>

<!-- Set up artifact subpaths. -->
<PropertyGroup>
<CoreCLRSharedFrameworkDir>$([MSBuild]::NormalizeDirectory('$(CoreCLRArtifactsPath)', 'sharedFramework'))</CoreCLRSharedFrameworkDir>
<LibrariesSharedFrameworkDir>$([MSBuild]::NormalizeDirectory('$(LibrariesNativeArtifactsPath)','sharedFramework'))</LibrariesSharedFrameworkDir>
<HostSharedFrameworkDir>$([MSBuild]::NormalizeDirectory('$(HostArtifactsPath)','sharedFramework'))</HostSharedFrameworkDir>
<CoreCLRCoreHostDir>$([MSBuild]::NormalizeDirectory('$(CoreCLRArtifactsPath)', 'corehost'))</CoreCLRCoreHostDir>
<CoreCLRILCompilerDir>$([MSBuild]::NormalizeDirectory('$(CoreCLRArtifactsPath)', 'ilc-published'))</CoreCLRILCompilerDir>
<CoreCLRCrossILCompilerDir>$([MSBuild]::NormalizeDirectory('$(CoreCLRArtifactsPath)', '$(BuildArchitecture)', 'ilc'))</CoreCLRCrossILCompilerDir>
Expand Down Expand Up @@ -88,6 +91,8 @@
value is different after CoreCLRArtifactsPath is normalized.
-->
<CoreCLRSharedFrameworkDir>$([MSBuild]::NormalizeDirectory('$(CoreCLRArtifactsPath)','sharedFramework'))</CoreCLRSharedFrameworkDir>
<LibrariesSharedFrameworkDir>$([MSBuild]::NormalizeDirectory('$(LibrariesNativeArtifactsPath)','sharedFramework'))</LibrariesSharedFrameworkDir>
<HostSharedFrameworkDir>$([MSBuild]::NormalizeDirectory('$(HostArtifactsPath)','sharedFramework'))</HostSharedFrameworkDir>
<CoreCLRSharedFrameworkPdbDir>$([MSBuild]::NormalizeDirectory('$(CoreCLRSharedFrameworkDir)','PDB'))</CoreCLRSharedFrameworkPdbDir>
<CoreCLRCrossTargetComponentDir
Condition="'$(CoreCLRCrossTargetComponentDirName)' != ''">$([MSBuild]::NormalizeDirectory('$(CoreCLRArtifactsPath)','$(CoreCLRCrossTargetComponentDirName)','sharedFramework'))</CoreCLRCrossTargetComponentDir>
Expand Down Expand Up @@ -218,15 +223,22 @@

<LibrariesRuntimeFiles Condition="'$(TargetOS)' == 'browser' and '$(RuntimeFlavor)' == 'CoreCLR'"
Include="
$(CoreCLRCoreHostDir)package.json;
$(CoreCLRCoreHostDir)dotnet.native.js;
$(CoreCLRCoreHostDir)dotnet.native.wasm;
$(CoreCLRSharedFrameworkDir)dotnet.d.ts;
$(CoreCLRSharedFrameworkDir)dotnet.js;
$(CoreCLRSharedFrameworkDir)dotnet.js.map;
$(CoreCLRSharedFrameworkDir)dotnet.runtime.js;
$(CoreCLRSharedFrameworkDir)dotnet.runtime.js.map;
$(CoreCLRSharedFrameworkDir)*.dat;"
$(CoreCLRSharedFrameworkDir)libclrinterpreter.a;
$(CoreCLRSharedFrameworkDir)libcoreclr_static.a;
$(CoreCLRSharedFrameworkDir)libcoreclrminipal.a;
$(CoreCLRSharedFrameworkDir)libcoreclrpal.a;
$(CoreCLRSharedFrameworkDir)libgcinfo_unix_wasm.a;
$(CoreCLRSharedFrameworkDir)libnativeresourcestring.a;
$(LibrariesSharedFrameworkDir)package.json;
$(LibrariesSharedFrameworkDir)dotnet.d.ts;
$(LibrariesSharedFrameworkDir)*.map;
$(LibrariesSharedFrameworkDir)*.js;
$(LibrariesSharedFrameworkDir)*.a;
$(LibrariesSharedFrameworkDir)*.dat;
$(HostSharedFrameworkDir)libBrowserHost.a;
$(HostSharedFrameworkDir)dotnet.native.js;
$(HostSharedFrameworkDir)dotnet.native.wasm;
"
IsNative="true" />

<LibrariesRuntimeFiles Condition="'$(TargetOS)' == 'browser' and '$(RuntimeFlavor)' == 'Mono'"
Expand Down
4 changes: 4 additions & 0 deletions eng/native.props
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@
<NativeCMakeArg Condition="'$(_TzdDir)' != ''" Include="-cmakeargs &quot;-DCMAKE_TZD_DIR=$(_TzdDir)&quot;" />
<NativeCMakeArg Include="-cmakeargs &quot;-DCMAKE_PRODUCT_VERSION=$(ProductVersion)&quot;" />
<NativeCMakeArg Include="-cmakeargs &quot;-DCMAKE_CONTINUOUS_INTEGRATION_BUILD=$(ContinuousIntegrationBuild)&quot;" />
<NativeCMakeArg Include="-cmakeargs &quot;-DCMAKE_NET_CORE_APP_CURRENT_VERSION=$(NetCoreAppCurrentVersion)&quot;" />
<NativeCMakeArg Include="-cmakeargs &quot;-DCMAKE_BUILD_LIBRARIES_CONFIGURATION=$(LibrariesConfiguration)&quot;" />
<NativeCMakeArg Include="-cmakeargs &quot;-DCMAKE_BUILD_RUNTIME_CONFIGURATION=$(RuntimeConfiguration)&quot;" />
<NativeCMakeArg Condition="'$(TargetsBrowser)' == 'true' and '$(RuntimeFlavor)' == 'CoreCLR'" Include="-cmakeargs &quot;-DBUILD_LIBS_NATIVE_BROWSER=1&quot;" />
</ItemGroup>

</Project>
1 change: 1 addition & 0 deletions eng/native/configurepaths.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ get_filename_component(CLR_REPO_ROOT_DIR ${CMAKE_CURRENT_LIST_DIR}/../.. ABSOLUT
set(CLR_ENG_NATIVE_DIR ${CMAKE_CURRENT_LIST_DIR})
get_filename_component(CLR_SRC_NATIVE_DIR ${CMAKE_CURRENT_LIST_DIR}/../../src/native ABSOLUTE)
set (CLR_ARTIFACTS_OBJ_DIR "${CLR_REPO_ROOT_DIR}/artifacts/obj")
set (CLR_ARTIFACTS_BIN_DIR "${CLR_REPO_ROOT_DIR}/artifacts/bin")
set (CLR_SOURCELINK_FILE_PATH "${CLR_ARTIFACTS_OBJ_DIR}/native.sourcelink.json")
set(VERSION_HEADER_PATH "${CLR_ARTIFACTS_OBJ_DIR}/_version.h")
set(VERSION_FILE_PATH "${CLR_ARTIFACTS_OBJ_DIR}/_version.c")
Expand Down
17 changes: 7 additions & 10 deletions src/coreclr/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -72,16 +72,6 @@ if(NOT CLR_CROSS_COMPONENTS_BUILD AND NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT C
set(CLR_SINGLE_FILE_HOST_ONLY 1)
add_subdirectory(${CLR_SRC_NATIVE_DIR}/corehost/apphost/static Corehost.Static)
add_dependencies(runtime singlefilehost)
else()
if(CLR_CMAKE_TARGET_BROWSER)
# WASM-TODO set GEN_PINVOKE to 1 once we generate them. static entrypoint.c prevents C linker from trimming, when IL trimming trims PInvokes
set(GEN_PINVOKE 0)
# WASM-TODO should we start using System.Native.Browser and System.Runtime.InteropServices.JavaScript.Native also for Mono ?
set(BUILD_LIBS_NATIVE_BROWSER 1)
set(STATIC_LIB_DESTINATION ${CMAKE_BINARY_DIR}/libs-native)
add_subdirectory(${CLR_SRC_NATIVE_DIR}/corehost corehost)
add_dependencies(runtime browserhost)
endif()
endif()

#-------------------------
Expand All @@ -96,6 +86,13 @@ endif()
#-------------------------------
if(NOT CLR_CROSS_COMPONENTS_BUILD)
set(STATIC_LIBS_ONLY 1)
if(CLR_CMAKE_TARGET_BROWSER)
# WASM-TODO set GEN_PINVOKE to 1 once we generate them. static entrypoint.c prevents C linker from trimming, when IL trimming trims PInvokes
set(GEN_PINVOKE 0)
set(BUILD_LIBS_NATIVE_BROWSER 1)
set(STATIC_LIB_DESTINATION ${CMAKE_BINARY_DIR}/libs-native)
set(CORERUN_LIBS_ONLY 1)
endif()
add_subdirectory(${CLR_SRC_NATIVE_DIR}/libs libs-native)
endif()

Expand Down
51 changes: 32 additions & 19 deletions src/native/corehost/browserhost/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,6 @@ target_link_libraries(BrowserHost-Static PRIVATE
hostmisc
)

install(TARGETS BrowserHost-Static DESTINATION corehost COMPONENT runtime)
install(TARGETS BrowserHost-Static DESTINATION ${STATIC_LIB_DESTINATION} COMPONENT libs)
install(TARGETS BrowserHost-Static DESTINATION sharedFramework COMPONENT runtime)

# the executable
Expand All @@ -53,30 +51,44 @@ add_executable(browserhost ${BROWSERHOST_SOURCES})
set_target_properties(browserhost PROPERTIES OUTPUT_NAME dotnet.native)
set(CMAKE_EXECUTABLE_SUFFIX ".js")



set(SHARED_LIB_DESTINATION
${CLR_ARTIFACTS_BIN_DIR}/native/net${CMAKE_NET_CORE_APP_CURRENT_VERSION}-browser-${CMAKE_BUILD_LIBRARIES_CONFIGURATION}-wasm/sharedFramework)
set(SHARED_CLR_DESTINATION
${CLR_ARTIFACTS_BIN_DIR}/coreclr/browser.wasm.${CMAKE_BUILD_RUNTIME_CONFIGURATION}/sharedFramework)

# these dependencies assume that you built `libs.native+clr.runtime` subsets first
LIST(APPEND NATIVE_LIBS
hostmisc
clrinterpreter
coreclr_static
System.Native.Browser-Static
System.Runtime.InteropServices.JavaScript.Native-Static
System.Native-Static
System.Globalization.Native-Static
System.IO.Compression.Native-Static
nativeresourcestring
gcinfo
${SHARED_CLR_DESTINATION}/libcoreclr_static.a
${SHARED_CLR_DESTINATION}/libclrinterpreter.a
${SHARED_CLR_DESTINATION}/libnativeresourcestring.a
${SHARED_CLR_DESTINATION}/libgcinfo_unix_wasm.a
${SHARED_CLR_DESTINATION}/libcoreclrminipal.a
${SHARED_CLR_DESTINATION}/libcoreclrpal.a
${SHARED_CLR_DESTINATION}/libminipal.a
${SHARED_LIB_DESTINATION}/libSystem.Native.Browser.a
${SHARED_LIB_DESTINATION}/libSystem.Runtime.InteropServices.JavaScript.Native.a
${SHARED_LIB_DESTINATION}/libSystem.Native.a
${SHARED_LIB_DESTINATION}/libSystem.Globalization.Native.a
${CMAKE_ICU_DIR}/lib/libicuuc.a
${CMAKE_ICU_DIR}/lib/libicui18n.a
${CMAKE_ICU_DIR}/lib/libicudata.a
${SHARED_LIB_DESTINATION}/libSystem.IO.Compression.Native.a
${SHARED_LIB_DESTINATION}/libz.a
# WASM-TODO respect $(InvariantTimezone)
# System.Native.TimeZoneData.Invariant
System.Native.TimeZoneData
# libSystem.Native.TimeZoneData.Invariant.a
${SHARED_LIB_DESTINATION}/libSystem.Native.TimeZoneData.a
)

set(JS_SYSTEM_NATIVE_BROWSER
"${STATIC_LIB_DESTINATION}/libSystem.Native.Browser.js")
"${SHARED_LIB_DESTINATION}/libSystem.Native.Browser.js")
set(JS_SYSTEM_BROWSER_UTILS
"${STATIC_LIB_DESTINATION}/libSystem.Browser.Utils.js")
"${SHARED_LIB_DESTINATION}/libSystem.Browser.Utils.js")
set(JS_SYSTEM_RUNTIME_INTEROPSERVICES_JAVASCRIPT_NATIVE
"${STATIC_LIB_DESTINATION}/libSystem.Runtime.InteropServices.JavaScript.Native.js")
"${SHARED_LIB_DESTINATION}/libSystem.Runtime.InteropServices.JavaScript.Native.js")
set(JS_BROWSER_HOST
"${STATIC_LIB_DESTINATION}/libBrowserHost.js")
"${SHARED_LIB_DESTINATION}/libBrowserHost.js")
set(JS_SYSTEM_NATIVE_BROWSER_EXPOST
"${CMAKE_CURRENT_SOURCE_DIR}/../../libs/System.Native.Browser/libSystem.Native.Browser.extpost.js")

Expand Down Expand Up @@ -130,7 +142,8 @@ target_link_libraries(browserhost PRIVATE
)

install(TARGETS browserhost DESTINATION corehost COMPONENT runtime)
install(TARGETS browserhost DESTINATION sharedFramework COMPONENT runtime)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/dotnet.native.wasm DESTINATION corehost COMPONENT runtime)
install(FILES ${CLR_SRC_NATIVE_DIR}/package.json DESTINATION corehost COMPONENT runtime)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/dotnet.native.wasm DESTINATION sharedFramework COMPONENT runtime)

add_subdirectory(sample)
10 changes: 5 additions & 5 deletions src/native/corehost/browserhost/sample/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ set(SAMPLE_ASSETS
index.html
main.mjs
dotnet.boot.js
${STATIC_LIB_DESTINATION}/dotnet.js
${STATIC_LIB_DESTINATION}/dotnet.js.map
${STATIC_LIB_DESTINATION}/dotnet.d.ts
${STATIC_LIB_DESTINATION}/dotnet.runtime.js
${STATIC_LIB_DESTINATION}/dotnet.runtime.js.map
${SHARED_LIB_DESTINATION}/dotnet.js
${SHARED_LIB_DESTINATION}/dotnet.js.map
${SHARED_LIB_DESTINATION}/dotnet.d.ts
${SHARED_LIB_DESTINATION}/dotnet.runtime.js
${SHARED_LIB_DESTINATION}/dotnet.runtime.js.map

# Bring your own DLLs and update the dotnet.boot.js to match
# HelloWorld.dll
Expand Down
8 changes: 6 additions & 2 deletions src/native/libs/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -113,12 +113,16 @@ else ()
add_subdirectory(System.Globalization.Native)
endif ()

add_subdirectory(System.IO.Compression.Native)
if (NOT CORERUN_LIBS_ONLY)
add_subdirectory(System.IO.Compression.Native)
endif ()

# Only when Browser for CoreCLR
if (CLR_CMAKE_TARGET_BROWSER AND BUILD_LIBS_NATIVE_BROWSER)
add_subdirectory(System.Native.Browser)
add_subdirectory(System.Runtime.InteropServices.JavaScript.Native)
if (NOT CORERUN_LIBS_ONLY)
add_subdirectory(System.Runtime.InteropServices.JavaScript.Native)
endif ()
endif ()

if (CLR_CMAKE_TARGET_UNIX OR CLR_CMAKE_TARGET_BROWSER OR CLR_CMAKE_TARGET_WASI)
Expand Down
3 changes: 2 additions & 1 deletion src/native/libs/Common/JavaScript/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -124,4 +124,5 @@ add_custom_target(System.Native.Browser-NpmInstall
DEPENDS ${NPM_INSTALL_OUTPUTS}
)

install(FILES ${ROLLUP_OUTPUTS} DESTINATION sharedFramework COMPONENT runtime)
install(FILES ${ROLLUP_OUTPUTS} DESTINATION sharedFramework COMPONENT runtime)
install(FILES "${CLR_SRC_NATIVE_DIR}/package.json" DESTINATION sharedFramework COMPONENT runtime)
2 changes: 2 additions & 0 deletions src/native/libs/System.Native/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@ if (CLR_CMAKE_TARGET_ARCH_WASM AND DEFINED CMAKE_TZD_DIR)
configure_file(pal_datetime_time_zone_data-config.h.in inc/pal_datetime_time_zone_data-config.h)

add_library(System.Native.TimeZoneData STATIC pal_datetime_time_zone_data.c)
add_dependencies(System.Native-Static System.Native.TimeZoneData)
target_compile_options(System.Native.TimeZoneData PRIVATE -Wno-overlength-strings)
target_compile_definitions(System.Native.TimeZoneData PRIVATE TZ_DATA_ENABLED)
target_include_directories(System.Native.TimeZoneData PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/inc")
Expand All @@ -167,6 +168,7 @@ if (CLR_CMAKE_TARGET_ARCH_WASM AND DEFINED CMAKE_TZD_DIR)

# Also add a stub to support InvariantTimezone.
add_library(System.Native.TimeZoneData.Invariant STATIC pal_datetime_time_zone_data.c)
add_dependencies(System.Native-Static System.Native.TimeZoneData.Invariant)
install(TARGETS System.Native.TimeZoneData.Invariant DESTINATION ${STATIC_LIB_DESTINATION} COMPONENT libs)
install(TARGETS System.Native.TimeZoneData.Invariant DESTINATION sharedFramework COMPONENT runtime)
endif ()
Loading