mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-05-27 22:45:57 +00:00
Add a build option to create a WebAssembly static library (#10184)
* add p50 in test * Add a build option to create a WebAssembly static library Co-authored-by: Yulong Wang <yulongw@microsoft.com>
This commit is contained in:
parent
62eab67f79
commit
b038f4e56f
6 changed files with 251 additions and 61 deletions
|
|
@ -147,6 +147,7 @@ option(onnxruntime_USE_MPI "Build with MPI support" OFF)
|
|||
|
||||
# build WebAssembly
|
||||
option(onnxruntime_BUILD_WEBASSEMBLY "Enable this option to create WebAssembly byte codes" OFF)
|
||||
option(onnxruntime_BUILD_WEBASSEMBLY_STATIC_LIB "Enable this option to create WebAssembly static library" OFF)
|
||||
option(onnxruntime_ENABLE_WEBASSEMBLY_THREADS "Enable this option to create WebAssembly byte codes with multi-threads support" OFF)
|
||||
option(onnxruntime_ENABLE_WEBASSEMBLY_EXCEPTION_CATCHING "Enable this option to turn on exception catching" OFF)
|
||||
option(onnxruntime_ENABLE_WEBASSEMBLY_EXCEPTION_THROWING "Enable this option to turn on exception throwing even if the build disabled exceptions support" OFF)
|
||||
|
|
|
|||
|
|
@ -1,15 +1,85 @@
|
|||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
file(GLOB_RECURSE onnxruntime_webassembly_src CONFIGURE_DEPENDS
|
||||
"${ONNXRUNTIME_ROOT}/wasm/api.cc"
|
||||
)
|
||||
function(bundle_static_library bundled_target_name)
|
||||
function(recursively_collect_dependencies input_target)
|
||||
set(input_link_libraries LINK_LIBRARIES)
|
||||
get_target_property(input_type ${input_target} TYPE)
|
||||
if (${input_type} STREQUAL "INTERFACE_LIBRARY")
|
||||
set(input_link_libraries INTERFACE_LINK_LIBRARIES)
|
||||
endif()
|
||||
get_target_property(public_dependencies ${input_target} ${input_link_libraries})
|
||||
foreach(dependency IN LISTS public_dependencies)
|
||||
if(TARGET ${dependency})
|
||||
get_target_property(alias ${dependency} ALIASED_TARGET)
|
||||
if (TARGET ${alias})
|
||||
set(dependency ${alias})
|
||||
endif()
|
||||
get_target_property(type ${dependency} TYPE)
|
||||
if (${type} STREQUAL "STATIC_LIBRARY")
|
||||
list(APPEND static_libs ${dependency})
|
||||
endif()
|
||||
|
||||
source_group(TREE ${REPO_ROOT} FILES ${onnxruntime_webassembly_src})
|
||||
get_property(library_already_added GLOBAL PROPERTY ${target_name}_static_bundle_${dependency})
|
||||
if (NOT library_already_added)
|
||||
set_property(GLOBAL PROPERTY ${target_name}_static_bundle_${dependency} ON)
|
||||
recursively_collect_dependencies(${dependency})
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
set(static_libs ${static_libs} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
add_executable(onnxruntime_webassembly
|
||||
${onnxruntime_webassembly_src}
|
||||
)
|
||||
foreach(target_name IN ITEMS ${ARGN})
|
||||
list(APPEND static_libs ${target_name})
|
||||
recursively_collect_dependencies(${target_name})
|
||||
endforeach()
|
||||
|
||||
list(REMOVE_DUPLICATES static_libs)
|
||||
|
||||
set(bundled_target_full_name
|
||||
${CMAKE_BINARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${bundled_target_name}${CMAKE_STATIC_LIBRARY_SUFFIX})
|
||||
|
||||
file(WRITE ${CMAKE_BINARY_DIR}/${bundled_target_name}.ar.in
|
||||
"CREATE ${bundled_target_full_name}\n" )
|
||||
|
||||
foreach(target IN LISTS static_libs)
|
||||
file(APPEND ${CMAKE_BINARY_DIR}/${bundled_target_name}.ar.in
|
||||
"ADDLIB $<TARGET_FILE:${target}>\n")
|
||||
endforeach()
|
||||
|
||||
file(APPEND ${CMAKE_BINARY_DIR}/${bundled_target_name}.ar.in "SAVE\n")
|
||||
file(APPEND ${CMAKE_BINARY_DIR}/${bundled_target_name}.ar.in "END\n")
|
||||
|
||||
file(GENERATE
|
||||
OUTPUT ${CMAKE_BINARY_DIR}/${bundled_target_name}.ar
|
||||
INPUT ${CMAKE_BINARY_DIR}/${bundled_target_name}.ar.in)
|
||||
|
||||
set(ar_tool ${CMAKE_AR})
|
||||
if (CMAKE_INTERPROCEDURAL_OPTIMIZATION)
|
||||
set(ar_tool ${CMAKE_CXX_COMPILER_AR})
|
||||
endif()
|
||||
|
||||
add_custom_command(
|
||||
COMMAND ${ar_tool} -M < ${CMAKE_BINARY_DIR}/${bundled_target_name}.ar
|
||||
OUTPUT ${bundled_target_full_name}
|
||||
COMMENT "Bundling ${bundled_target_name}"
|
||||
VERBATIM)
|
||||
|
||||
add_custom_target(bundling_target ALL DEPENDS ${bundled_target_full_name})
|
||||
foreach(target_name IN ITEMS ${ARGN})
|
||||
add_dependencies(bundling_target ${target_name})
|
||||
endforeach()
|
||||
|
||||
add_library(${bundled_target_name} STATIC IMPORTED)
|
||||
foreach(target_name IN ITEMS ${ARGN})
|
||||
set_target_properties(${bundled_target_name}
|
||||
PROPERTIES
|
||||
IMPORTED_LOCATION ${bundled_target_full_name}
|
||||
INTERFACE_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:${target_name},INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
endforeach()
|
||||
add_dependencies(${bundled_target_name} bundling_target)
|
||||
endfunction()
|
||||
|
||||
if (NOT onnxruntime_ENABLE_WEBASSEMBLY_THREADS)
|
||||
add_compile_definitions(
|
||||
|
|
@ -22,68 +92,127 @@ endif()
|
|||
|
||||
target_compile_options(onnx PRIVATE -Wno-unused-parameter -Wno-unused-variable)
|
||||
|
||||
target_link_libraries(onnxruntime_webassembly PRIVATE
|
||||
nsync_cpp
|
||||
${PROTOBUF_LIB}
|
||||
onnx
|
||||
onnx_proto
|
||||
onnxruntime_common
|
||||
onnxruntime_flatbuffers
|
||||
onnxruntime_framework
|
||||
onnxruntime_graph
|
||||
onnxruntime_mlas
|
||||
onnxruntime_optimizer
|
||||
onnxruntime_providers
|
||||
onnxruntime_session
|
||||
onnxruntime_util
|
||||
re2::re2
|
||||
)
|
||||
if (onnxruntime_BUILD_WEBASSEMBLY_STATIC_LIB)
|
||||
bundle_static_library(onnxruntime_webassembly
|
||||
nsync_cpp
|
||||
${PROTOBUF_LIB}
|
||||
onnx
|
||||
onnx_proto
|
||||
onnxruntime_common
|
||||
onnxruntime_flatbuffers
|
||||
onnxruntime_framework
|
||||
onnxruntime_graph
|
||||
onnxruntime_mlas
|
||||
onnxruntime_optimizer
|
||||
onnxruntime_providers
|
||||
onnxruntime_session
|
||||
onnxruntime_util
|
||||
re2::re2
|
||||
)
|
||||
|
||||
set(EXPORTED_RUNTIME_METHODS "['stackAlloc','stackRestore','stackSave','UTF8ToString','stringToUTF8','lengthBytesUTF8']")
|
||||
file(GLOB_RECURSE onnxruntime_webassembly_test_src CONFIGURE_DEPENDS
|
||||
"${ONNXRUNTIME_ROOT}/test/wasm/test_main.cc"
|
||||
"${ONNXRUNTIME_ROOT}/test/wasm/test_inference.cc"
|
||||
)
|
||||
|
||||
set_target_properties(onnxruntime_webassembly PROPERTIES LINK_FLAGS " \
|
||||
-s \"EXPORTED_RUNTIME_METHODS=${EXPORTED_RUNTIME_METHODS}\" \
|
||||
-s WASM=1 \
|
||||
-s NO_EXIT_RUNTIME=0 \
|
||||
-s ALLOW_MEMORY_GROWTH=1 \
|
||||
-s MODULARIZE=1 \
|
||||
-s EXPORT_ALL=0 \
|
||||
-s LLD_REPORT_UNDEFINED \
|
||||
-s VERBOSE=0 \
|
||||
-s NO_FILESYSTEM=1 \
|
||||
-s MALLOC=${onnxruntime_WEBASSEMBLY_MALLOC} \
|
||||
--closure 1 \
|
||||
--no-entry")
|
||||
source_group(TREE ${REPO_ROOT} FILES ${onnxruntime_webassembly_test_src})
|
||||
|
||||
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
set_property(TARGET onnxruntime_webassembly APPEND_STRING PROPERTY LINK_FLAGS " -s ASSERTIONS=2 -s SAFE_HEAP=1 -s STACK_OVERFLOW_CHECK=1 -s DEMANGLE_SUPPORT=1")
|
||||
add_executable(onnxruntime_webassembly_test
|
||||
${onnxruntime_webassembly_test_src}
|
||||
)
|
||||
|
||||
set_target_properties(onnxruntime_webassembly_test PROPERTIES LINK_FLAGS
|
||||
"-s ALLOW_MEMORY_GROWTH=1 -s \"EXPORTED_RUNTIME_METHODS=['FS']\" --preload-file ${CMAKE_CURRENT_BINARY_DIR}/testdata@/testdata -s EXIT_RUNTIME=1"
|
||||
)
|
||||
|
||||
target_link_libraries(onnxruntime_webassembly_test PUBLIC
|
||||
onnxruntime_webassembly
|
||||
GTest::gtest
|
||||
)
|
||||
|
||||
find_program(NODE_EXECUTABLE node required)
|
||||
if (NOT NODE_EXECUTABLE)
|
||||
message(FATAL_ERROR "Node is required for a test")
|
||||
endif()
|
||||
|
||||
add_test(NAME onnxruntime_webassembly_test
|
||||
COMMAND ${NODE_EXECUTABLE} onnxruntime_webassembly_test.js
|
||||
WORKING_DIRECTORY $<TARGET_FILE_DIR:onnxruntime_webassembly_test>
|
||||
)
|
||||
else()
|
||||
set_property(TARGET onnxruntime_webassembly APPEND_STRING PROPERTY LINK_FLAGS " -s ASSERTIONS=0 -s SAFE_HEAP=0 -s STACK_OVERFLOW_CHECK=0 -s DEMANGLE_SUPPORT=0")
|
||||
endif()
|
||||
file(GLOB_RECURSE onnxruntime_webassembly_src CONFIGURE_DEPENDS
|
||||
"${ONNXRUNTIME_ROOT}/wasm/api.cc"
|
||||
)
|
||||
|
||||
# Set link flag to enable exceptions support, this will override default disabling exception throwing behavior when disable exceptions.
|
||||
if (onnxruntime_ENABLE_WEBASSEMBLY_EXCEPTION_THROWING)
|
||||
set_property(TARGET onnxruntime_webassembly APPEND_STRING PROPERTY LINK_FLAGS " -s DISABLE_EXCEPTION_THROWING=0")
|
||||
endif()
|
||||
source_group(TREE ${REPO_ROOT} FILES ${onnxruntime_webassembly_src})
|
||||
|
||||
if (onnxruntime_ENABLE_WEBASSEMBLY_PROFILING)
|
||||
set_property(TARGET onnxruntime_webassembly APPEND_STRING PROPERTY LINK_FLAGS " --profiling --profiling-funcs")
|
||||
endif()
|
||||
add_executable(onnxruntime_webassembly
|
||||
${onnxruntime_webassembly_src}
|
||||
)
|
||||
|
||||
if (onnxruntime_ENABLE_WEBASSEMBLY_THREADS)
|
||||
if (onnxruntime_ENABLE_WEBASSEMBLY_SIMD)
|
||||
set_property(TARGET onnxruntime_webassembly APPEND_STRING PROPERTY LINK_FLAGS " -s EXPORT_NAME=ortWasmSimdThreaded -s USE_PTHREADS=1")
|
||||
set_target_properties(onnxruntime_webassembly PROPERTIES OUTPUT_NAME "ort-wasm-simd-threaded")
|
||||
target_link_libraries(onnxruntime_webassembly PRIVATE
|
||||
nsync_cpp
|
||||
${PROTOBUF_LIB}
|
||||
onnx
|
||||
onnx_proto
|
||||
onnxruntime_common
|
||||
onnxruntime_flatbuffers
|
||||
onnxruntime_framework
|
||||
onnxruntime_graph
|
||||
onnxruntime_mlas
|
||||
onnxruntime_optimizer
|
||||
onnxruntime_providers
|
||||
onnxruntime_session
|
||||
onnxruntime_util
|
||||
re2::re2
|
||||
)
|
||||
|
||||
set(EXPORTED_RUNTIME_METHODS "['stackAlloc','stackRestore','stackSave','UTF8ToString','stringToUTF8','lengthBytesUTF8']")
|
||||
|
||||
set_target_properties(onnxruntime_webassembly PROPERTIES LINK_FLAGS " \
|
||||
-s \"EXPORTED_RUNTIME_METHODS=${EXPORTED_RUNTIME_METHODS}\" \
|
||||
-s WASM=1 \
|
||||
-s NO_EXIT_RUNTIME=0 \
|
||||
-s ALLOW_MEMORY_GROWTH=1 \
|
||||
-s MODULARIZE=1 \
|
||||
-s EXPORT_ALL=0 \
|
||||
-s LLD_REPORT_UNDEFINED \
|
||||
-s VERBOSE=0 \
|
||||
-s NO_FILESYSTEM=1 \
|
||||
-s MALLOC=${onnxruntime_WEBASSEMBLY_MALLOC} \
|
||||
--closure 1 \
|
||||
--no-entry")
|
||||
|
||||
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
set_property(TARGET onnxruntime_webassembly APPEND_STRING PROPERTY LINK_FLAGS " -s ASSERTIONS=2 -s SAFE_HEAP=1 -s STACK_OVERFLOW_CHECK=1 -s DEMANGLE_SUPPORT=1")
|
||||
else()
|
||||
set_property(TARGET onnxruntime_webassembly APPEND_STRING PROPERTY LINK_FLAGS " -s EXPORT_NAME=ortWasmThreaded -s USE_PTHREADS=1")
|
||||
set_target_properties(onnxruntime_webassembly PROPERTIES OUTPUT_NAME "ort-wasm-threaded")
|
||||
set_property(TARGET onnxruntime_webassembly APPEND_STRING PROPERTY LINK_FLAGS " -s ASSERTIONS=0 -s SAFE_HEAP=0 -s STACK_OVERFLOW_CHECK=0 -s DEMANGLE_SUPPORT=0")
|
||||
endif()
|
||||
else()
|
||||
if (onnxruntime_ENABLE_WEBASSEMBLY_SIMD)
|
||||
set_property(TARGET onnxruntime_webassembly APPEND_STRING PROPERTY LINK_FLAGS " -s EXPORT_NAME=ortWasmSimd")
|
||||
set_target_properties(onnxruntime_webassembly PROPERTIES OUTPUT_NAME "ort-wasm-simd")
|
||||
|
||||
# Set link flag to enable exceptions support, this will override default disabling exception throwing behavior when disable exceptions.
|
||||
if (onnxruntime_ENABLE_WEBASSEMBLY_EXCEPTION_THROWING)
|
||||
set_property(TARGET onnxruntime_webassembly APPEND_STRING PROPERTY LINK_FLAGS " -s DISABLE_EXCEPTION_THROWING=0")
|
||||
endif()
|
||||
|
||||
if (onnxruntime_ENABLE_WEBASSEMBLY_PROFILING)
|
||||
set_property(TARGET onnxruntime_webassembly APPEND_STRING PROPERTY LINK_FLAGS " --profiling --profiling-funcs")
|
||||
endif()
|
||||
|
||||
if (onnxruntime_ENABLE_WEBASSEMBLY_THREADS)
|
||||
if (onnxruntime_ENABLE_WEBASSEMBLY_SIMD)
|
||||
set_property(TARGET onnxruntime_webassembly APPEND_STRING PROPERTY LINK_FLAGS " -s EXPORT_NAME=ortWasmSimdThreaded -s USE_PTHREADS=1")
|
||||
set_target_properties(onnxruntime_webassembly PROPERTIES OUTPUT_NAME "ort-wasm-simd-threaded")
|
||||
else()
|
||||
set_property(TARGET onnxruntime_webassembly APPEND_STRING PROPERTY LINK_FLAGS " -s EXPORT_NAME=ortWasmThreaded -s USE_PTHREADS=1")
|
||||
set_target_properties(onnxruntime_webassembly PROPERTIES OUTPUT_NAME "ort-wasm-threaded")
|
||||
endif()
|
||||
else()
|
||||
set_property(TARGET onnxruntime_webassembly APPEND_STRING PROPERTY LINK_FLAGS " -s EXPORT_NAME=ortWasm")
|
||||
set_target_properties(onnxruntime_webassembly PROPERTIES OUTPUT_NAME "ort-wasm")
|
||||
if (onnxruntime_ENABLE_WEBASSEMBLY_SIMD)
|
||||
set_property(TARGET onnxruntime_webassembly APPEND_STRING PROPERTY LINK_FLAGS " -s EXPORT_NAME=ortWasmSimd")
|
||||
set_target_properties(onnxruntime_webassembly PROPERTIES OUTPUT_NAME "ort-wasm-simd")
|
||||
else()
|
||||
set_property(TARGET onnxruntime_webassembly APPEND_STRING PROPERTY LINK_FLAGS " -s EXPORT_NAME=ortWasm")
|
||||
set_target_properties(onnxruntime_webassembly PROPERTIES OUTPUT_NAME "ort-wasm")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
|
@ -301,6 +301,7 @@ It should be able to consumed by both from projects that uses NPM packages (thro
|
|||
#### Reduced WebAssembly artifacts
|
||||
|
||||
By default, the WebAssembly artifacts from onnxruntime-web package allows use of both standard ONNX models (.onnx) and ORT format models (.ort). There is an option to use a minimal build of ONNX Runtime to reduce the binary size, which only supports ORT format models. See also [ORT format model](https://onnxruntime.ai/docs/tutorials/mobile/overview.html) for more information.
|
||||
|
||||
#### Reduced JavaScript bundle file fize
|
||||
|
||||
By default, the main bundle file `ort.min.js` of ONNX Runtime Web contains all features. However, its size is over 500kB and for some scenarios we want a smaller sized bundle file, if we don't use all the features. The following table lists all available bundles with their support status of features.
|
||||
|
|
@ -313,6 +314,9 @@ By default, the main bundle file `ort.min.js` of ONNX Runtime Web contains all f
|
|||
|ort.wasm.min.js|148.56|44KB|X|O|O|O|X|
|
||||
|ort.wasm-core.min.js|40.56KB|12.74KB|X|O|X|X|X|
|
||||
|
||||
#### Build ONNX Runtime as a WebAssembly static library
|
||||
|
||||
When `--build_wasm_static_lib` is given instead of `--build_wasm`, it builds a WebAssembly static library of ONNX Runtime and creates a `libonnxruntime_webassembly.a` file at a build output directory. Developers who have their own C/C++ project and build it as WebAssembly with ONNX Runtime, this build option would be useful. This static library is not published by a pipeline, so a manual build is required if necessary.
|
||||
|
||||
## onnxruntime-react-native
|
||||
|
||||
|
|
|
|||
42
onnxruntime/test/wasm/test_inference.cc
Normal file
42
onnxruntime/test/wasm/test_inference.cc
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "core/session/onnxruntime_cxx_api.h"
|
||||
|
||||
TEST(WebAssemblyTest, test) {
|
||||
Ort::Env ort_env;
|
||||
Ort::Session session{ort_env, "testdata/mul_1.onnx", Ort::SessionOptions{nullptr}};
|
||||
auto memory_info = Ort::MemoryInfo::CreateCpu(OrtDeviceAllocator, OrtMemTypeCPU);
|
||||
|
||||
std::array<float, 6> input_data{1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f};
|
||||
std::array<int64_t, 2> input_shape{3, 2};
|
||||
Ort::Value input_tensor = Ort::Value::CreateTensor<float>(memory_info,
|
||||
input_data.data(), input_data.size(),
|
||||
input_shape.data(), input_shape.size());
|
||||
|
||||
std::array<float, 6> output_data{};
|
||||
std::array<int64_t, 2> output_shape{3, 2};
|
||||
Ort::Value output_tensor = Ort::Value::CreateTensor<float>(memory_info,
|
||||
output_data.data(), output_data.size(),
|
||||
output_shape.data(), output_shape.size());
|
||||
|
||||
const char* input_names[] = {"X"};
|
||||
const char* output_names[] = {"Y"};
|
||||
|
||||
session.Run(Ort::RunOptions{nullptr}, input_names, &input_tensor, 1, output_names, &output_tensor, 1);
|
||||
|
||||
std::array<float, 6> expected_data{1.0f, 4.0f, 9.0f, 16.0f, 25.0f, 36.0f};
|
||||
std::vector<int64_t> expected_shape{3, 2};
|
||||
|
||||
auto type_info = output_tensor.GetTensorTypeAndShapeInfo();
|
||||
ASSERT_EQ(type_info.GetShape(), expected_shape);
|
||||
auto total_len = type_info.GetElementCount();
|
||||
ASSERT_EQ(total_len, expected_data.size());
|
||||
|
||||
float* result = output_tensor.GetTensorMutableData<float>();
|
||||
for (size_t i = 0; i != total_len; ++i) {
|
||||
ASSERT_EQ(expected_data[i], result[i]);
|
||||
}
|
||||
}
|
||||
9
onnxruntime/test/wasm/test_main.cc
Normal file
9
onnxruntime/test/wasm/test_main.cc
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
::testing::InitGoogleTest(&argc, argv);
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
|
|
@ -355,6 +355,7 @@ def parse_arguments():
|
|||
|
||||
# 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("--enable_wasm_simd", action='store_true', help="Enable WebAssembly SIMD")
|
||||
parser.add_argument(
|
||||
"--disable_wasm_exception_catching", action='store_true',
|
||||
|
|
@ -822,6 +823,7 @@ def generate_build_tree(cmake_path, source_dir, build_dir, cuda_home, cudnn_home
|
|||
"-Donnxruntime_ENABLE_MEMORY_PROFILE=" + ("ON" if args.enable_memory_profile else "OFF"),
|
||||
"-Donnxruntime_ENABLE_CUDA_LINE_NUMBER_INFO=" + ("ON" if args.enable_cuda_line_info else "OFF"),
|
||||
"-Donnxruntime_BUILD_WEBASSEMBLY=" + ("ON" if args.build_wasm else "OFF"),
|
||||
"-Donnxruntime_BUILD_WEBASSEMBLY_STATIC_LIB=" + ("ON" if args.build_wasm_static_lib else "OFF"),
|
||||
"-Donnxruntime_ENABLE_WEBASSEMBLY_SIMD=" + ("ON" if args.enable_wasm_simd else "OFF"),
|
||||
"-Donnxruntime_ENABLE_WEBASSEMBLY_EXCEPTION_CATCHING=" + ("OFF" if args.disable_wasm_exception_catching
|
||||
else "ON"),
|
||||
|
|
@ -2056,6 +2058,9 @@ def main():
|
|||
if args.nnapi_min_api < 27:
|
||||
raise BuildError("--nnapi_min_api should be 27+")
|
||||
|
||||
if args.build_wasm_static_lib:
|
||||
args.build_wasm = True
|
||||
|
||||
if args.build_wasm:
|
||||
if not args.disable_wasm_exception_catching and args.disable_exceptions:
|
||||
# When '--disable_exceptions' is set, we set '--disable_wasm_exception_catching' as well
|
||||
|
|
|
|||
Loading…
Reference in a new issue