按推荐建议,继续执行

结论:将 vendored LinuxCNC 轨迹规划器、cruckig、posemath 源文件纳入直接编译探针,并通过 native 验证,继续确保核心功能来源于 LinuxCNC 源程序。
This commit is contained in:
2026-06-07 17:02:45 +08:00
parent c4d5f26166
commit 18ee97b9b5
3 changed files with 115 additions and 0 deletions

View File

@@ -459,6 +459,14 @@ Current verified progress:
`rs274ngc_pre.cc`. `rs274ngc_pre.cc` is compiled with the existing
standalone `UNIT_TEST`/`LINUXCNC_STANDALONE_USE_RS274_PRE_STATE` boundary
that isolates Python runtime integration from the browser simulation core.
- `tools/build_native_probes.sh` now includes direct source compile probes
for the vendored LinuxCNC trajectory-planner and posemath files used by
`linuxcnc_tp_api_probe`: `tp.c`, `tc.c`, `tcq.c`, `spherical_arc.c`,
`blendmath.c`, `sp_scurve.c`, `ruckig_wrapper.c`, the selected
`cruckig/*.c` sources, `emcpose.c`, `posemath.cc`, `_posemath.c`, and
`sincos.c`. These probes use the same `TP_FLAGS` as the standalone TP
harness, including the existing `-fpermissive` boundary required by
upstream enum conversions in `tp.c`.
## Phase 4: Port INI Parsing Without Editing Upstream

View File

@@ -34,6 +34,39 @@ check_exitcode() {
check_exitcode linuxcnc_interp_state_probe
check_exitcode linuxcnc_tp_api_probe
check_exitcode linuxcnc_tp_api_probe.run
for name in \
linuxcnc_tp_tp_source_probe \
linuxcnc_tp_tc_source_probe \
linuxcnc_tp_tcq_source_probe \
linuxcnc_tp_spherical_arc_source_probe \
linuxcnc_tp_blendmath_source_probe \
linuxcnc_tp_sp_scurve_source_probe \
linuxcnc_tp_ruckig_wrapper_source_probe \
linuxcnc_cruckig_block_source_probe \
linuxcnc_cruckig_brake_source_probe \
linuxcnc_cruckig_calculator_source_probe \
linuxcnc_cruckig_cruckig_source_probe \
linuxcnc_cruckig_input_parameter_source_probe \
linuxcnc_cruckig_output_parameter_source_probe \
linuxcnc_cruckig_profile_source_probe \
linuxcnc_cruckig_roots_source_probe \
linuxcnc_cruckig_trajectory_source_probe \
linuxcnc_cruckig_position_first_step1_source_probe \
linuxcnc_cruckig_position_first_step2_source_probe \
linuxcnc_cruckig_position_second_step1_source_probe \
linuxcnc_cruckig_position_second_step2_source_probe \
linuxcnc_cruckig_position_third_step1_source_probe \
linuxcnc_cruckig_position_third_step2_source_probe \
linuxcnc_cruckig_velocity_second_step1_source_probe \
linuxcnc_cruckig_velocity_second_step2_source_probe \
linuxcnc_cruckig_velocity_third_step1_source_probe \
linuxcnc_cruckig_velocity_third_step2_source_probe \
linuxcnc_emcpose_source_probe \
linuxcnc_posemath_source_probe \
linuxcnc_posemath_c_source_probe \
linuxcnc_sincos_source_probe; do
check_exitcode "$name"
done
check_exitcode linuxcnc_namedparam_harness
check_exitcode linuxcnc_namedparam_harness.run
check_exitcode linuxcnc_interp_minimal_harness

View File

@@ -300,6 +300,72 @@ TP_RUNTIME_PROBE_SOURCES=(
"$WRAP_DIR/linuxcnc_tp_api_probe.cpp"
)
TP_SOURCE_PROBE_NAMES=(
linuxcnc_tp_tp_source_probe
linuxcnc_tp_tc_source_probe
linuxcnc_tp_tcq_source_probe
linuxcnc_tp_spherical_arc_source_probe
linuxcnc_tp_blendmath_source_probe
linuxcnc_tp_sp_scurve_source_probe
linuxcnc_tp_ruckig_wrapper_source_probe
linuxcnc_cruckig_block_source_probe
linuxcnc_cruckig_brake_source_probe
linuxcnc_cruckig_calculator_source_probe
linuxcnc_cruckig_cruckig_source_probe
linuxcnc_cruckig_input_parameter_source_probe
linuxcnc_cruckig_output_parameter_source_probe
linuxcnc_cruckig_profile_source_probe
linuxcnc_cruckig_roots_source_probe
linuxcnc_cruckig_trajectory_source_probe
linuxcnc_cruckig_position_first_step1_source_probe
linuxcnc_cruckig_position_first_step2_source_probe
linuxcnc_cruckig_position_second_step1_source_probe
linuxcnc_cruckig_position_second_step2_source_probe
linuxcnc_cruckig_position_third_step1_source_probe
linuxcnc_cruckig_position_third_step2_source_probe
linuxcnc_cruckig_velocity_second_step1_source_probe
linuxcnc_cruckig_velocity_second_step2_source_probe
linuxcnc_cruckig_velocity_third_step1_source_probe
linuxcnc_cruckig_velocity_third_step2_source_probe
linuxcnc_emcpose_source_probe
linuxcnc_posemath_source_probe
linuxcnc_posemath_c_source_probe
linuxcnc_sincos_source_probe
)
TP_SOURCE_PROBE_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"
)
INTERP_CORE_SOURCES=(
"$VENDOR_DIR/src/emc/rs274ngc/modal_state.cc"
"$VENDOR_DIR/src/emc/rs274ngc/interp_array.cc"
@@ -378,6 +444,14 @@ else
"$BUILD_DIR/linuxcnc_tp_api_probe.run.stderr.log"
fi
for index in "${!TP_SOURCE_PROBE_NAMES[@]}"; do
build_object_target \
"${TP_SOURCE_PROBE_NAMES[$index]}" \
"$BUILD_DIR/${TP_SOURCE_PROBE_NAMES[$index]}.o" \
"${TP_SOURCE_PROBE_SOURCES[$index]}" \
TP_FLAGS
done
build_binary_target \
linuxcnc_namedparam_harness \
"$BUILD_DIR/linuxcnc_namedparam_harness" \