使用刚更新的 AGENTS.md 和 align-linuxcnc 加速规则执行
结论:按 align-linuxcnc 先确认干净基线,避免 source-map-only 和 smoke 扩展;增强 WASM runtime link probe,覆盖 LinuxCNC src/emc/rs274ngc/gcodemodule.cc 与 src/emc/task/taskclass.cc 的 _task=0 preview 边界和 builtin_modules interpreter/emccanon 表结构。\n\n测试结论:./test-linuxcnc-wasm-runtime-link.sh、./test-native.sh、./test-linuxcnc-source-link.sh 均通过。
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
#include "cnc_sim_api.h"
|
||||
#include "boost/python/object.hpp"
|
||||
#include "hal.h"
|
||||
#include "libnml/nml/stat_msg.hh"
|
||||
|
||||
@@ -9,6 +10,14 @@
|
||||
#include <vector>
|
||||
#include <wordexp.h>
|
||||
|
||||
extern int _task;
|
||||
|
||||
extern "C" {
|
||||
extern PyObject *PyInit_interpreter(void);
|
||||
extern PyObject *PyInit_emccanon(void);
|
||||
extern struct _inittab builtin_modules[];
|
||||
}
|
||||
|
||||
// LinuxCNC source basis: src/emc/rs274ngc/rs274ngc_pre.cc provides read(),
|
||||
// execute(), and wordexp() paths; interp_convert.cc converts G0, G2, and M30.
|
||||
// src/emc/rs274ngc/interp_namedparams.cc calls the HAL lookup functions
|
||||
@@ -129,6 +138,23 @@ bool nml_status_constructors_match_linuxcnc() {
|
||||
status._state == -1;
|
||||
}
|
||||
|
||||
bool builtin_modules_match_linuxcnc_preview_runtime() {
|
||||
// LinuxCNC source basis: src/emc/rs274ngc/gcodemodule.cc defines _task=0
|
||||
// for preview and registers interpreter/emccanon builtin module entries;
|
||||
// src/emc/task/taskclass.cc uses the same builtin module table shape.
|
||||
return _task == 0 &&
|
||||
builtin_modules[0].name &&
|
||||
std::strcmp(builtin_modules[0].name, "interpreter") == 0 &&
|
||||
builtin_modules[0].initfunc == PyInit_interpreter &&
|
||||
builtin_modules[0].initfunc() == nullptr &&
|
||||
builtin_modules[1].name &&
|
||||
std::strcmp(builtin_modules[1].name, "emccanon") == 0 &&
|
||||
builtin_modules[1].initfunc == PyInit_emccanon &&
|
||||
builtin_modules[1].initfunc() == nullptr &&
|
||||
builtin_modules[2].name == nullptr &&
|
||||
builtin_modules[2].initfunc == nullptr;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
int main() {
|
||||
@@ -147,6 +173,9 @@ int main() {
|
||||
if (!nml_status_constructors_match_linuxcnc()) {
|
||||
return 9;
|
||||
}
|
||||
if (!builtin_modules_match_linuxcnc_preview_runtime()) {
|
||||
return 10;
|
||||
}
|
||||
|
||||
std::vector<CncSimEvent> events;
|
||||
CncSimHandle *sim = cnc_sim_create();
|
||||
|
||||
Reference in New Issue
Block a user