新增解释器核心WASM验证
结论:已建立基于LinuxCNC解释器源码的最小WASM核心构建和minimal_linear夹具验证,并接入host smoke。
This commit is contained in:
77
wasm-port/tools/build_wasm_core.sh
Executable file
77
wasm-port/tools/build_wasm_core.sh
Executable file
@@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
VENDOR_DIR="$ROOT_DIR/vendor/linuxcnc"
|
||||
WRAP_DIR="$ROOT_DIR/runtime/core/linuxcnc_wrap"
|
||||
SHIM_DIR="$ROOT_DIR/runtime/core/shims"
|
||||
INCLUDE_DIR="$ROOT_DIR/runtime/core/include"
|
||||
OUT_DIR="$ROOT_DIR/build/wasm/core"
|
||||
|
||||
mkdir -p "$OUT_DIR"
|
||||
|
||||
COMMON_FLAGS=(
|
||||
-std=c++20
|
||||
-O2
|
||||
-D_GNU_SOURCE
|
||||
-DM_PI=3.14159265358979323846
|
||||
-DOBJECT_FWD_DWA2002724_HPP
|
||||
-DUNIT_TEST
|
||||
-DLINUXCNC_STANDALONE_USE_RS274_PRE_STATE
|
||||
-DEMC2_HOME=\"/standalone\"
|
||||
-include "$SHIM_DIR/linuxcnc_wasm_compat.hh"
|
||||
-I"$WRAP_DIR"
|
||||
-I"$SHIM_DIR"
|
||||
-I"$INCLUDE_DIR"
|
||||
-I"$VENDOR_DIR/src"
|
||||
-I"$VENDOR_DIR/src/rtapi"
|
||||
-I"$VENDOR_DIR/src/emc"
|
||||
-I"$VENDOR_DIR/src/emc/nml_intf"
|
||||
-I"$VENDOR_DIR/src/emc/motion"
|
||||
-I"$VENDOR_DIR/src/emc/tp"
|
||||
-I"$VENDOR_DIR/src/emc/kinematics"
|
||||
-I"$VENDOR_DIR/src/emc/ini"
|
||||
-I"$VENDOR_DIR/src/libnml/posemath"
|
||||
)
|
||||
|
||||
INTERP_CORE_SOURCES=(
|
||||
"$VENDOR_DIR/src/emc/rs274ngc/modal_state.cc"
|
||||
"$VENDOR_DIR/src/emc/rs274ngc/interp_array.cc"
|
||||
"$VENDOR_DIR/src/emc/rs274ngc/interp_internal.cc"
|
||||
"$VENDOR_DIR/src/emc/rs274ngc/interp_read.cc"
|
||||
"$VENDOR_DIR/src/emc/rs274ngc/interp_check.cc"
|
||||
"$VENDOR_DIR/src/emc/rs274ngc/interp_arc.cc"
|
||||
"$VENDOR_DIR/src/emc/rs274ngc/interp_inverse.cc"
|
||||
"$VENDOR_DIR/src/emc/rs274ngc/interp_execute.cc"
|
||||
"$VENDOR_DIR/src/emc/rs274ngc/interp_convert.cc"
|
||||
"$VENDOR_DIR/src/emc/rs274ngc/interp_cycles.cc"
|
||||
"$VENDOR_DIR/src/emc/rs274ngc/interp_g7x.cc"
|
||||
"$VENDOR_DIR/src/emc/rs274ngc/interp_queue.cc"
|
||||
"$VENDOR_DIR/src/emc/rs274ngc/interp_find.cc"
|
||||
"$VENDOR_DIR/src/emc/rs274ngc/interp_namedparams.cc"
|
||||
"$VENDOR_DIR/src/emc/rs274ngc/interp_write.cc"
|
||||
"$VENDOR_DIR/src/emc/rs274ngc/interp_o_word.cc"
|
||||
"$VENDOR_DIR/src/emc/rs274ngc/rs274ngc_pre.cc"
|
||||
"$WRAP_DIR/linuxcnc_hal_adapter.cpp"
|
||||
"$WRAP_DIR/linuxcnc_emc_status_runtime.cpp"
|
||||
"$WRAP_DIR/linuxcnc_interp_edge_stubs.cpp"
|
||||
"$WRAP_DIR/linuxcnc_runtime_state_stubs.cpp"
|
||||
"$WRAP_DIR/linuxcnc_tool_adapter.cpp"
|
||||
"$WRAP_DIR/linuxcnc_interp_minimal_runtime.cpp"
|
||||
"$WRAP_DIR/linuxcnc_wasm_posix_stubs.cpp"
|
||||
"$VENDOR_DIR/src/emc/ini/inifile.cc"
|
||||
)
|
||||
|
||||
emcc \
|
||||
"${COMMON_FLAGS[@]}" \
|
||||
"${INTERP_CORE_SOURCES[@]}" \
|
||||
"$WRAP_DIR/linuxcnc_interp_wasm.cpp" \
|
||||
-o "$OUT_DIR/linuxcnc_interp.js" \
|
||||
-s MODULARIZE=1 \
|
||||
-s EXPORT_ES6=1 \
|
||||
-s ENVIRONMENT=web,node \
|
||||
-s ALLOW_MEMORY_GROWTH=1 \
|
||||
-s STACK_SIZE=2MB \
|
||||
-s NO_EXIT_RUNTIME=1 \
|
||||
-s EXPORTED_FUNCTIONS='["_malloc","_free","_lcinterp_run_program","_lcinterp_free_string"]' \
|
||||
-s EXPORTED_RUNTIME_METHODS='["UTF8ToString","stringToUTF8","lengthBytesUTF8"]'
|
||||
Reference in New Issue
Block a user