diff --git a/src/coreclr/CMakeLists.txt b/src/coreclr/CMakeLists.txt index e0b3dc71482d4f..b465aa0a54321e 100644 --- a/src/coreclr/CMakeLists.txt +++ b/src/coreclr/CMakeLists.txt @@ -36,7 +36,13 @@ endif() OPTION(CLR_CMAKE_ENABLE_CODE_COVERAGE "Enable code coverage" OFF) if (CLR_CMAKE_TARGET_ARCH_WASM) - add_compile_options(-fwasm-exceptions) + add_compile_options( + -fwasm-exceptions + -msimd128) + add_link_options( + -fwasm-exceptions + -msimd128 + ) endif() #---------------------------------------------------- diff --git a/src/coreclr/clrdefinitions.cmake b/src/coreclr/clrdefinitions.cmake index 1b1728ef707cd2..e5278d53388834 100644 --- a/src/coreclr/clrdefinitions.cmake +++ b/src/coreclr/clrdefinitions.cmake @@ -230,6 +230,14 @@ function(set_target_definitions_to_custom_os_and_arch) set_target_properties(${TARGETDETAILS_TARGET} PROPERTIES IGNORE_DEFAULT_TARGET_ARCH TRUE) set_target_properties(${TARGETDETAILS_TARGET} PROPERTIES IGNORE_DEFAULT_TARGET_OS TRUE) + if (TARGETDETAILS_OS STREQUAL "browser") + target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_UNIX) + target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_BROWSER) + endif() + if (TARGETDETAILS_OS STREQUAL "wasi") + target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_UNIX) + target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_WASI) + endif() if ((TARGETDETAILS_OS MATCHES "^unix")) target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_UNIX) if (TARGETDETAILS_ARCH STREQUAL "x64") @@ -269,6 +277,8 @@ function(set_target_definitions_to_custom_os_and_arch) target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_LOONGARCH64) elseif((TARGETDETAILS_ARCH STREQUAL "arm") OR (TARGETDETAILS_ARCH STREQUAL "armel")) target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_ARM) + elseif(TARGETDETAILS_ARCH STREQUAL "wasm") + target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_WASM) elseif((TARGETDETAILS_ARCH STREQUAL "riscv64")) target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_64BIT) target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_RISCV64) diff --git a/src/coreclr/gcinfo/CMakeLists.txt b/src/coreclr/gcinfo/CMakeLists.txt index 9ec2ae84eb0784..b809dac02f086a 100644 --- a/src/coreclr/gcinfo/CMakeLists.txt +++ b/src/coreclr/gcinfo/CMakeLists.txt @@ -89,3 +89,7 @@ endif (NOT CLR_CMAKE_TARGET_ARCH_RISCV64) if (CLR_CMAKE_TARGET_ARCH_I386 AND CLR_CMAKE_TARGET_UNIX) create_gcinfo_lib(TARGET gcinfo_unix_x86 OS unix ARCH x86) endif (CLR_CMAKE_TARGET_ARCH_I386 AND CLR_CMAKE_TARGET_UNIX) + +if (CLR_CMAKE_TARGET_ARCH_WASM) + create_gcinfo_lib(TARGET gcinfo_unix_wasm OS browser ARCH wasm) +endif (CLR_CMAKE_TARGET_ARCH_WASM) diff --git a/src/coreclr/hosts/corerun/CMakeLists.txt b/src/coreclr/hosts/corerun/CMakeLists.txt index 03dbb8dda51cc0..8aa49f56f0fc4d 100644 --- a/src/coreclr/hosts/corerun/CMakeLists.txt +++ b/src/coreclr/hosts/corerun/CMakeLists.txt @@ -51,7 +51,10 @@ else(CLR_CMAKE_HOST_WIN32) System.Native.TimeZoneData) # linker options for NodeJs, link in JavaScript helper, access to local filesystem if (CLR_CMAKE_TARGET_BROWSER) - target_compile_options(corerun PRIVATE -fwasm-exceptions) + target_compile_options(corerun PRIVATE + -fwasm-exceptions + -msimd128 + ) target_link_libraries(corerun PRIVATE System.Native.Browser-Static) set(JS_SYSTEM_NATIVE_BROWSER @@ -66,6 +69,7 @@ else(CLR_CMAKE_HOST_WIN32) RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") target_link_options(corerun PRIVATE -fwasm-exceptions + -msimd128 -sEXIT_RUNTIME=1 -sINITIAL_MEMORY=134217728 -sENVIRONMENT=node,shell diff --git a/src/coreclr/hosts/corewasmrun/CMakeLists.txt b/src/coreclr/hosts/corewasmrun/CMakeLists.txt index 9cbe2320a35571..5d96f9cdf49754 100644 --- a/src/coreclr/hosts/corewasmrun/CMakeLists.txt +++ b/src/coreclr/hosts/corewasmrun/CMakeLists.txt @@ -16,7 +16,10 @@ target_include_directories(corewasmrun PRIVATE ../corerun ) -target_compile_options(corewasmrun PRIVATE -fwasm-exceptions) +target_compile_options(corewasmrun PRIVATE + -fwasm-exceptions + -msimd128 + ) set(JS_SYSTEM_NATIVE_BROWSER "${CLR_ARTIFACTS_OBJ_DIR}/native/browser-${CMAKE_BUILD_TYPE}-wasm/System.Native.Browser/libSystem.Native.Browser.js") @@ -30,6 +33,7 @@ set_target_properties(corewasmrun PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") target_link_options(corewasmrun PRIVATE -fwasm-exceptions + -msimd128 -sEXIT_RUNTIME=1 -sINITIAL_MEMORY=134217728 -sSTACK_SIZE=5MB diff --git a/src/coreclr/inc/switches.h b/src/coreclr/inc/switches.h index cb258ed46ded3d..93f6a13980f4ce 100644 --- a/src/coreclr/inc/switches.h +++ b/src/coreclr/inc/switches.h @@ -43,7 +43,7 @@ #define GC_STATS #endif -#if defined(TARGET_X86) || defined(TARGET_ARM) || defined(TARGET_BROWSER) +#if defined(TARGET_X86) || defined(TARGET_ARM) || defined(TARGET_WASM) #define USE_LAZY_PREFERRED_RANGE 0 #elif defined(TARGET_64BIT) diff --git a/src/coreclr/pal/CMakeLists.txt b/src/coreclr/pal/CMakeLists.txt index 01ddee53d35d88..b086e20850b9e2 100644 --- a/src/coreclr/pal/CMakeLists.txt +++ b/src/coreclr/pal/CMakeLists.txt @@ -9,8 +9,14 @@ include_directories(${COREPAL_SOURCE_DIR}/../inc) if (NOT CLR_CMAKE_TARGET_BROWSER) add_compile_options(-fexceptions) else() - add_compile_options(-fwasm-exceptions) - add_link_options(-fwasm-exceptions -sEXIT_RUNTIME=1) + add_compile_options( + -fwasm-exceptions + -msimd128 + ) + add_link_options( + -fwasm-exceptions + -msimd128 + ) endif() add_subdirectory(src) diff --git a/src/native/corehost/browserhost/sample/CMakeLists.txt b/src/native/corehost/browserhost/sample/CMakeLists.txt index 7f1d30ff7a099b..3a385623fde844 100644 --- a/src/native/corehost/browserhost/sample/CMakeLists.txt +++ b/src/native/corehost/browserhost/sample/CMakeLists.txt @@ -3,7 +3,6 @@ # this is just a incomplete sample app deployment # WASM-TODO: implement proper in-tree project via MSBuild and WASM SDK -# WASM-TODO: deploy *.js.map when available set(SAMPLE_ASSETS index.html main.mjs