按规划持续工作
结论:已接通 vendored LinuxCNC interp_remap.cc 的 NGC REMAP 描述符解析路径,新增 native harness 验证 xyzac/xyzbc 的 M428/M429/M430 映射,未实现自写 M 码语义。
This commit is contained in:
@@ -58,6 +58,12 @@ MINIMAL_FLAGS=(
|
||||
-DLINUXCNC_STANDALONE_USE_RS274_PRE_STATE
|
||||
)
|
||||
|
||||
REMAP_RUNTIME_FLAGS=(
|
||||
"${MINIMAL_FLAGS[@]}"
|
||||
-DLINUXCNC_VENDOR_DIR=\"$VENDOR_DIR\"
|
||||
-include "$SHIM_DIR/linuxcnc_remap_compile_compat.hh"
|
||||
)
|
||||
|
||||
INTERP_BASE_FLAGS=(
|
||||
"${MINIMAL_FLAGS[@]}"
|
||||
-DEMC2_HOME=\"/standalone\"
|
||||
@@ -661,6 +667,36 @@ INDEXER_HARNESS_SOURCES=(
|
||||
"$WRAP_DIR/linuxcnc_indexer_harness.cpp"
|
||||
)
|
||||
|
||||
REMAP_PARSE_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/interp_remap.cc"
|
||||
"$VENDOR_DIR/src/emc/rs274ngc/rs274ngc_pre.cc"
|
||||
"$VENDOR_DIR/src/emc/tooldata/tooldata_common.cc"
|
||||
"$WRAP_DIR/linuxcnc_hal_adapter.cpp"
|
||||
"$WRAP_DIR/linuxcnc_emc_status_runtime.cpp"
|
||||
"$WRAP_DIR/linuxcnc_interp_python_edge_stubs.cpp"
|
||||
"$WRAP_DIR/linuxcnc_runtime_state_stubs.cpp"
|
||||
"$WRAP_DIR/linuxcnc_tool_adapter.cpp"
|
||||
"$WRAP_DIR/linuxcnc_interp_minimal_runtime.cpp"
|
||||
"$VENDOR_DIR/src/emc/ini/inifile.cc"
|
||||
"$WRAP_DIR/linuxcnc_remap_parse_harness.cpp"
|
||||
)
|
||||
|
||||
build_binary_target \
|
||||
linuxcnc_ini_probe \
|
||||
"$BUILD_DIR/linuxcnc_ini_probe" \
|
||||
@@ -1223,6 +1259,29 @@ else
|
||||
"$BUILD_DIR/linuxcnc_interp_init_harness.run.stderr.log"
|
||||
fi
|
||||
|
||||
build_binary_target \
|
||||
linuxcnc_remap_parse_harness \
|
||||
"$BUILD_DIR/linuxcnc_remap_parse_harness" \
|
||||
REMAP_RUNTIME_FLAGS \
|
||||
REMAP_PARSE_SOURCES \
|
||||
MINIMAL_LINK_FLAGS \
|
||||
-lfmt
|
||||
|
||||
if [[ "$(tr -d '[:space:]' < "$BUILD_DIR/linuxcnc_remap_parse_harness.exitcode")" == "0" ]]; then
|
||||
set +e
|
||||
"$BUILD_DIR/linuxcnc_remap_parse_harness" \
|
||||
>"$BUILD_DIR/linuxcnc_remap_parse_harness.run.stdout.log" \
|
||||
2>"$BUILD_DIR/linuxcnc_remap_parse_harness.run.stderr.log"
|
||||
REMAP_PARSE_RUN_RC=$?
|
||||
set -e
|
||||
echo "$REMAP_PARSE_RUN_RC" > "$BUILD_DIR/linuxcnc_remap_parse_harness.run.exitcode"
|
||||
else
|
||||
rm -f \
|
||||
"$BUILD_DIR/linuxcnc_remap_parse_harness.run.exitcode" \
|
||||
"$BUILD_DIR/linuxcnc_remap_parse_harness.run.stdout.log" \
|
||||
"$BUILD_DIR/linuxcnc_remap_parse_harness.run.stderr.log"
|
||||
fi
|
||||
|
||||
build_binary_target \
|
||||
linuxcnc_indexer_harness \
|
||||
"$BUILD_DIR/linuxcnc_indexer_harness" \
|
||||
|
||||
@@ -19,6 +19,7 @@ find \
|
||||
xargs -0 grep -nE '^[[:space:]]*([A-Za-z_][A-Za-z0-9_:<>~*&[:space:]]+[[:space:]]+)?Interp::[A-Za-z_~][A-Za-z0-9_]*[[:space:]]*\(' > "$TMP_FILE" || true
|
||||
|
||||
ALLOWED_STUB_FILE="$ROOT_DIR/runtime/core/linuxcnc_wrap/linuxcnc_interp_edge_stubs.cpp"
|
||||
ALLOWED_PYTHON_STUB_FILE="$ROOT_DIR/runtime/core/linuxcnc_wrap/linuxcnc_interp_python_edge_stubs.cpp"
|
||||
|
||||
is_allowed_interp_stub() {
|
||||
local line="$1"
|
||||
@@ -37,7 +38,11 @@ is_allowed_interp_stub() {
|
||||
"$ALLOWED_STUB_FILE":*Interp::add_parameters\(* | \
|
||||
"$ALLOWED_STUB_FILE":*Interp::pycall\(* | \
|
||||
"$ALLOWED_STUB_FILE":*Interp::py_execute\(* | \
|
||||
"$ALLOWED_STUB_FILE":*Interp::py_reload\(*)
|
||||
"$ALLOWED_STUB_FILE":*Interp::py_reload\(* | \
|
||||
"$ALLOWED_PYTHON_STUB_FILE":*Interp::is_pycallable\(* | \
|
||||
"$ALLOWED_PYTHON_STUB_FILE":*Interp::pycall\(* | \
|
||||
"$ALLOWED_PYTHON_STUB_FILE":*Interp::py_execute\(* | \
|
||||
"$ALLOWED_PYTHON_STUB_FILE":*Interp::py_reload\(*)
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user