@@ -62,6 +62,8 @@ ELSEIF(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
6262 SET (ORT_TARGET_PROCESSOR "arm64" )
6363ELSEIF (CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64le" )
6464 SET (ORT_TARGET_PROCESSOR "ppc64" )
65+ ELSEIF (CMAKE_SYSTEM_NAME STREQUAL "Emscripten" )
66+ SET (ORT_TARGET_PROCESSOR "wasm" )
6567ELSEIF (NOT ORT_TARGET_PROCESSOR MATCHES "^(x86(_64)?|arm64|riscv(32|64|128)|Hexagon|ppc64)$" )
6668 SET (ORT_TARGET_PROCESSOR "${CMAKE_SYSTEM_PROCESSOR} " )
6769ELSE ()
@@ -90,18 +92,21 @@ onnxruntime_fetchcontent_makeavailable(googlexnnpack)
9092set (XNNPACK_DIR ${googlexnnpack_SOURCE_DIR} )
9193set (XNNPACK_INCLUDE_DIR ${XNNPACK_DIR} /include )
9294
93- set (onnxruntime_EXTERNAL_LIBRARIES_XNNPACK XNNPACK xnnpack-microkernels-prod pthreadpool)
95+ set (onnxruntime_EXTERNAL_LIBRARIES_XNNPACK XNNPACK pthreadpool)
9496if (ORT_TARGET_PROCESSOR MATCHES "^arm64.*" AND NOT CMAKE_C_COMPILER_ID STREQUAL "MSVC" )
9597 list (APPEND onnxruntime_EXTERNAL_LIBRARIES_XNNPACK kleidiai)
9698endif ()
99+ if (NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten" )
100+ list (APPEND onnxruntime_EXTERNAL_LIBRARIES_XNNPACK xnnpack-microkernels-prod)
101+ endif ()
97102
98103# the XNNPACK CMake setup doesn't include the WASM kernels so we have to manually set those up
99104if (CMAKE_SYSTEM_NAME STREQUAL "Emscripten" )
100105 # See source lists in _deps/googlexnnpack-src/BUILD.bazel for wasm_prod_microkernels
101106 message ("Adding WebAssembly Source Files to XNNPACK" )
102107 set (wasm_srcs "" )
103108
104- file (READ "${XNNPACK_DIR} /BUILD.bazel " xnnpack_bazel_config)
109+ file (READ "${XNNPACK_DIR} /build_srcs.bzl " xnnpack_bazel_config)
105110
106111 # Replace newlines with semicolon so that it is treated as a list by CMake
107112 # Also replace '[' and ']' so the bazel source lists don't get parsed as a nested list by cmake
@@ -139,19 +144,26 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
139144 GetSrcListFromBazel("TABLE_SRCS" table_srcs)
140145 list (APPEND wasm_srcs ${operator_srcs} ${table_srcs} )
141146
142- # kernels
143- list (APPEND wasm_srcs ${XNNPACK_DIR} /src/amalgam/gen/scalar.c)
144- list (APPEND wasm_srcs ${XNNPACK_DIR} /src/amalgam/gen/wasm.c)
147+ set (microkernel_src "" )
148+
149+ include (${XNNPACK_DIR} /cmake/gen/scalar_microkernels.cmake)
150+ list (APPEND microkernel_src ${PROD_SCALAR_MICROKERNEL_SRCS} )
151+ list (APPEND microkernel_src ${PROD_WASM_MICROKERNEL_SRCS} )
145152
146153 if (onnxruntime_ENABLE_WEBASSEMBLY_RELAXED_SIMD)
147- list (APPEND wasm_srcs ${XNNPACK_DIR} /src/amalgam/gen/wasmsimd.c)
148- list (APPEND wasm_srcs ${XNNPACK_DIR} /src/amalgam/gen/wasmrelaxedsimd.c)
154+ include (${XNNPACK_DIR} /cmake/gen/wasmsimd_microkernels.cmake)
155+ include (${XNNPACK_DIR} /cmake/gen/wasmrelaxedsimd_microkernels.cmake)
156+ list (APPEND microkernel_src ${PROD_WASMSIMD_MICROKERNEL_SRCS} )
157+ list (APPEND microkernel_src ${PROD_WASMRELAXEDSIMD_MICROKERNEL_SRCS} )
149158 target_compile_options (XNNPACK PRIVATE "-msimd128" )
150159 target_compile_options (XNNPACK PRIVATE "-mrelaxed-simd" )
151160 elseif (onnxruntime_ENABLE_WEBASSEMBLY_SIMD)
152- list (APPEND wasm_srcs ${XNNPACK_DIR} /src/amalgam/gen/wasmsimd.c)
161+ include (${XNNPACK_DIR} /cmake/gen/wasmsimd_microkernels.cmake)
162+ list (APPEND microkernel_src ${PROD_WASMSIMD_MICROKERNEL_SRCS} )
153163 target_compile_options (XNNPACK PRIVATE "-msimd128" )
154164 endif ()
165+ list (TRANSFORM microkernel_src PREPEND "${XNNPACK_DIR} /" )
166+ list (APPEND wasm_srcs ${microkernel_src} )
155167
156168 message (DEBUG "wasm_srcs: ${wasm_srcs} \n " )
157169 target_sources (XNNPACK PRIVATE ${wasm_srcs} )
0 commit comments