Skip to content

Commit

Permalink
Base commit for using EMSDK 3.1.74 (LTO disabled)
Browse files Browse the repository at this point in the history
  • Loading branch information
fs-eire committed Jan 14, 2025
1 parent 444fceb commit aad3c79
Show file tree
Hide file tree
Showing 7 changed files with 66 additions and 11 deletions.
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@
[submodule "cmake/external/emsdk"]
path = cmake/external/emsdk
url = https://github.com/emscripten-core/emsdk.git
branch = 3.1.59
branch = 3.1.74
2 changes: 1 addition & 1 deletion cgmanifests/generated/cgmanifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"component": {
"type": "git",
"git": {
"commitHash": "d52c46520124845b1e0e0525f2759299d840143f",
"commitHash": "3d6d8ee910466516a53e665b86458faa81dae9ba",
"repositoryUrl": "https://github.com/emscripten-core/emsdk.git"
},
"comments": "git submodule at cmake/external/emsdk"
Expand Down
6 changes: 3 additions & 3 deletions cmake/adjust_global_compile_flags.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
# (2) "-flto=thin" does not work correctly for wasm-ld.
# we don't set onnxruntime_ENABLE_LTO because it appends flag "-flto=thin"
# instead, we manually set CMAKE_CXX_FLAGS "-flto"
string(APPEND CMAKE_C_FLAGS " -flto")
string(APPEND CMAKE_CXX_FLAGS " -flto")
#string(APPEND CMAKE_C_FLAGS " -flto")
#string(APPEND CMAKE_CXX_FLAGS " -flto")
endif()

if (onnxruntime_ENABLE_WEBASSEMBLY_DEBUG_INFO)
Expand Down Expand Up @@ -372,4 +372,4 @@ endif()

if (onnxruntime_USE_EXTENSIONS)
include_directories(${REPO_ROOT}/include/onnxruntime/core/session)
endif()
endif()
2 changes: 1 addition & 1 deletion cmake/external/emsdk
Submodule emsdk updated 43 files
+31 −37 .circleci/config.yml
+17 −17 .flake8
+39 −0 .github/workflows/create-release.yml
+78 −0 .github/workflows/tag-release.yml
+4 −3 README.md
+35 −9 bazel/README.md
+23 −6 bazel/deps.bzl
+19 −17 bazel/emscripten_deps.bzl
+3 −3 bazel/emscripten_toolchain/BUILD.bazel
+0 −0 bazel/emscripten_toolchain/default_config
+7 −6 bazel/emscripten_toolchain/link_wrapper.py
+13 −3 bazel/emscripten_toolchain/toolchain.bzl
+22 −13 bazel/emscripten_toolchain/wasm_cc_binary.bzl
+105 −0 bazel/revisions.bzl
+1 −0 bazel/test_secondary_lto_cache/.bazelrc
+4 −0 bazel/test_secondary_lto_cache/.gitignore
+19 −0 bazel/test_secondary_lto_cache/BUILD
+1 −0 bazel/test_secondary_lto_cache/MODULE.bazel
+30 −0 bazel/test_secondary_lto_cache/WORKSPACE
+6 −0 bazel/test_secondary_lto_cache/hello-world.cc
+95 −1 bazel/toolchains.bzl
+2 −2 docker/Dockerfile
+31 −1 emscripten-releases-tags.json
+1 −11 emsdk
+0 −21 emsdk.bat
+1 −9 emsdk.ps1
+67 −35 emsdk.py
+2 −0 emsdk_env.fish
+30 −324 emsdk_manifest.json
+16 −8 scripts/create_release.py
+44 −0 scripts/get_emscripten_revision_info.py
+25 −0 scripts/get_release_info.py
+1 −1 scripts/update_bazel_workspace.py
+15 −11 scripts/update_node.py
+12 −22 scripts/update_python.py
+19 −0 scripts/zip.py
+1 −1 test/test.bat
+7 −7 test/test.py
+0 −7 test/test_activation.ps1
+6 −0 test/test_bazel.ps1
+7 −6 test/test_bazel.sh
+7 −6 test/test_bazel_mac.sh
+0 −3 test/test_path_preservation.ps1
55 changes: 55 additions & 0 deletions cmake/onnxruntime_webassembly.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -466,4 +466,59 @@ jsepDownload:_pp_")
endif()

set_target_properties(onnxruntime_webassembly PROPERTIES OUTPUT_NAME ${target_name} SUFFIX ".mjs")

#
# The following POST_BUILD script is a workaround for enabling:
# - using onnxruntime-web with Multi-threading enabled when import from CDN
# - using onnxruntime-web when consumed in some frameworks like Vite
#
# In the use case mentioned above, the file name of the script may be changed. So we need to replace the line:
# `new Worker(new URL("ort-wasm-*.mjs", import.meta.url),`
# with
# `new Worker(new URL(import.meta.url),`
#
# This behavior is introduced in https://github.com/emscripten-core/emscripten/pull/22165. Since it's unlikely to be
# reverted, and there is no config to disable this behavior, we have to use a post-build script to workaround it.
#

# Generate a script to do the post-build work
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/wasm_post_build.js "
const fs = require('fs');
const path = require('path');
// node wasm_post_build.js <mjsFilePath>
const mjsFilePath = process.argv[2];
let contents = fs.readFileSync(mjsFilePath).toString();
const regex = 'new Worker\\\\(new URL\\\\(\".+?\", ?import\\\\.meta\\\\.url\\\\),';
const matches = [...contents.matchAll(new RegExp(regex, 'g'))];
if (matches.length !== 1) {
throw new Error(
`Unexpected number of matches for \"${regex}\" in \"${filepath}\": ${matches.length}.`,
);
}
// Replace the only occurrence.
contents = contents.replace(
new RegExp(regex),
`new Worker(new URL(import.meta.url),`,
);
fs.writeFileSync(mjsFilePath, contents);
"
)

find_program(NODE_EXECUTABLE node required)
if (NOT NODE_EXECUTABLE)
message(FATAL_ERROR "Node is required to run the post-build script")
endif()

add_custom_command(
TARGET onnxruntime_webassembly
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E echo "Backup file at $<TARGET_FILE_NAME:onnxruntime_webassembly>.bak"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "$<TARGET_FILE_NAME:onnxruntime_webassembly>" "$<TARGET_FILE_NAME:onnxruntime_webassembly>.bak"
COMMAND ${CMAKE_COMMAND} -E echo "Performing workaround for $<TARGET_FILE_NAME:onnxruntime_webassembly>"
COMMAND ${NODE_EXECUTABLE} "${CMAKE_CURRENT_BINARY_DIR}/wasm_post_build.js" "$<TARGET_FILE_NAME:onnxruntime_webassembly>"
)
endif()
2 changes: 1 addition & 1 deletion tools/ci_build/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -478,7 +478,7 @@ def convert_arg_line_to_args(self, arg_line):
# WebAssembly build
parser.add_argument("--build_wasm", action="store_true", help="Build for WebAssembly")
parser.add_argument("--build_wasm_static_lib", action="store_true", help="Build for WebAssembly static library")
parser.add_argument("--emsdk_version", default="3.1.59", help="Specify version of emsdk")
parser.add_argument("--emsdk_version", default="3.1.74", help="Specify version of emsdk")

parser.add_argument("--enable_wasm_simd", action="store_true", help="Enable WebAssembly SIMD")
parser.add_argument("--enable_wasm_threads", action="store_true", help="Enable WebAssembly multi-threads support")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,15 +86,15 @@ jobs:
- script: |
set -ex
cd '$(Build.SourcesDirectory)/cmake/external/emsdk'
./emsdk install 3.1.59 ccache-git-emscripten-64bit
./emsdk activate 3.1.59 ccache-git-emscripten-64bit
./emsdk install 3.1.74 ccache-git-emscripten-64bit
./emsdk activate 3.1.74 ccache-git-emscripten-64bit
displayName: 'emsdk install and activate ccache for emscripten'
- ${{if eq(parameters.WithCache, false)}}:
- script: |
set -ex
cd '$(Build.SourcesDirectory)/cmake/external/emsdk'
./emsdk install 3.1.59
./emsdk activate 3.1.59
./emsdk install 3.1.74
./emsdk activate 3.1.74
displayName: 'emsdk install and activate ccache for emscripten'
- template: build-linux-wasm-step.yml
Expand Down

0 comments on commit aad3c79

Please sign in to comment.