按建议,继续下一步工作

结论:已将 LinuxCNC TP 源码纳入 wasm-port 的可复现 vendor 清单和 native probe 构建,新增真实 tpCreate/tpAddLine/tpRunCycle 线性运动验证,并通过 native probes 全量验证。
This commit is contained in:
2026-06-07 07:39:26 +08:00
parent 078f1f6f8e
commit e328394184
72 changed files with 27200 additions and 0 deletions

View File

@@ -27,6 +27,8 @@ COMMON_FLAGS=(
-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/libnml/posemath"
)
@@ -47,6 +49,11 @@ MINIMAL_LINK_FLAGS=(
-Wl,--gc-sections
)
TP_FLAGS=(
"${COMMON_FLAGS[@]}"
-fpermissive
)
write_command_file() {
local file="$1"
shift
@@ -251,6 +258,48 @@ STATE_PROBE_SOURCES=(
"$WRAP_DIR/linuxcnc_interp_state_probe.cpp"
)
TP_API_PROBE_SOURCES=(
"$WRAP_DIR/linuxcnc_tp_api_probe.cpp"
)
TP_CORE_SOURCES=(
"$VENDOR_DIR/src/emc/tp/tp.c"
"$VENDOR_DIR/src/emc/tp/tc.c"
"$VENDOR_DIR/src/emc/tp/tcq.c"
"$VENDOR_DIR/src/emc/tp/spherical_arc.c"
"$VENDOR_DIR/src/emc/tp/blendmath.c"
"$VENDOR_DIR/src/emc/tp/sp_scurve.c"
"$VENDOR_DIR/src/emc/tp/ruckig_wrapper.c"
"$VENDOR_DIR/src/emc/tp/cruckig/block.c"
"$VENDOR_DIR/src/emc/tp/cruckig/brake.c"
"$VENDOR_DIR/src/emc/tp/cruckig/calculator.c"
"$VENDOR_DIR/src/emc/tp/cruckig/cruckig.c"
"$VENDOR_DIR/src/emc/tp/cruckig/input_parameter.c"
"$VENDOR_DIR/src/emc/tp/cruckig/output_parameter.c"
"$VENDOR_DIR/src/emc/tp/cruckig/profile.c"
"$VENDOR_DIR/src/emc/tp/cruckig/roots.c"
"$VENDOR_DIR/src/emc/tp/cruckig/trajectory.c"
"$VENDOR_DIR/src/emc/tp/cruckig/position_first_step1.c"
"$VENDOR_DIR/src/emc/tp/cruckig/position_first_step2.c"
"$VENDOR_DIR/src/emc/tp/cruckig/position_second_step1.c"
"$VENDOR_DIR/src/emc/tp/cruckig/position_second_step2.c"
"$VENDOR_DIR/src/emc/tp/cruckig/position_third_step1.c"
"$VENDOR_DIR/src/emc/tp/cruckig/position_third_step2.c"
"$VENDOR_DIR/src/emc/tp/cruckig/velocity_second_step1.c"
"$VENDOR_DIR/src/emc/tp/cruckig/velocity_second_step2.c"
"$VENDOR_DIR/src/emc/tp/cruckig/velocity_third_step1.c"
"$VENDOR_DIR/src/emc/tp/cruckig/velocity_third_step2.c"
"$VENDOR_DIR/src/emc/nml_intf/emcpose.c"
"$VENDOR_DIR/src/libnml/posemath/posemath.cc"
"$VENDOR_DIR/src/libnml/posemath/_posemath.c"
"$VENDOR_DIR/src/libnml/posemath/sincos.c"
)
TP_RUNTIME_PROBE_SOURCES=(
"${TP_CORE_SOURCES[@]}"
"$WRAP_DIR/linuxcnc_tp_api_probe.cpp"
)
INTERP_CORE_SOURCES=(
"$VENDOR_DIR/src/emc/rs274ngc/modal_state.cc"
"$VENDOR_DIR/src/emc/rs274ngc/interp_array.cc"
@@ -307,6 +356,28 @@ build_binary_target \
STATE_PROBE_SOURCES \
NO_LINK_FLAGS
build_binary_target \
linuxcnc_tp_api_probe \
"$BUILD_DIR/linuxcnc_tp_api_probe" \
TP_FLAGS \
TP_RUNTIME_PROBE_SOURCES \
NO_LINK_FLAGS
if [[ "$(tr -d '[:space:]' < "$BUILD_DIR/linuxcnc_tp_api_probe.exitcode")" == "0" ]]; then
set +e
"$BUILD_DIR/linuxcnc_tp_api_probe" \
>"$BUILD_DIR/linuxcnc_tp_api_probe.run.stdout.log" \
2>"$BUILD_DIR/linuxcnc_tp_api_probe.run.stderr.log"
TP_API_RUN_RC=$?
set -e
echo "$TP_API_RUN_RC" > "$BUILD_DIR/linuxcnc_tp_api_probe.run.exitcode"
else
rm -f \
"$BUILD_DIR/linuxcnc_tp_api_probe.run.exitcode" \
"$BUILD_DIR/linuxcnc_tp_api_probe.run.stdout.log" \
"$BUILD_DIR/linuxcnc_tp_api_probe.run.stderr.log"
fi
build_binary_target \
linuxcnc_namedparam_harness \
"$BUILD_DIR/linuxcnc_namedparam_harness" \