结论:已将核心 LinuxCNC interpreter 源接入 standalone native 编译链接路径,移除 minimal runtime 中的手写 convert_g 行为,并通过 native probe 验证。
199 lines
6.8 KiB
Bash
Executable File
199 lines
6.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
VENDOR_DIR="$ROOT_DIR/vendor/linuxcnc"
|
|
BUILD_DIR="$ROOT_DIR/build/native"
|
|
WRAP_DIR="$ROOT_DIR/runtime/core/linuxcnc_wrap"
|
|
SHIM_DIR="$ROOT_DIR/runtime/core/shims"
|
|
INCLUDE_DIR="$ROOT_DIR/runtime/core/include"
|
|
MINIMAL_GCODE_FIXTURE="$ROOT_DIR/tests/fixtures/gcode/minimal_linear.ngc"
|
|
|
|
mkdir -p "$BUILD_DIR"
|
|
|
|
rm -f \
|
|
"$BUILD_DIR/linuxcnc_ini_probe" \
|
|
"$BUILD_DIR/linuxcnc_interp_state_probe" \
|
|
"$BUILD_DIR/linuxcnc_interp_state_probe.exitcode" \
|
|
"$BUILD_DIR/linuxcnc_interp_state_probe.stdout.log" \
|
|
"$BUILD_DIR/linuxcnc_interp_state_probe.stderr.log" \
|
|
"$BUILD_DIR/linuxcnc_namedparam_harness" \
|
|
"$BUILD_DIR/linuxcnc_namedparam_harness.exitcode" \
|
|
"$BUILD_DIR/linuxcnc_namedparam_harness.stdout.log" \
|
|
"$BUILD_DIR/linuxcnc_namedparam_harness.stderr.log" \
|
|
"$BUILD_DIR/linuxcnc_interp_minimal_harness" \
|
|
"$BUILD_DIR/linuxcnc_interp_minimal_harness.exitcode" \
|
|
"$BUILD_DIR/linuxcnc_interp_minimal_harness.stdout.log" \
|
|
"$BUILD_DIR/linuxcnc_interp_minimal_harness.stderr.log" \
|
|
"$BUILD_DIR/linuxcnc_interp_minimal_harness.run.exitcode" \
|
|
"$BUILD_DIR/linuxcnc_interp_minimal_harness.run.stdout.log" \
|
|
"$BUILD_DIR/linuxcnc_interp_minimal_harness.run.stderr.log" \
|
|
"$BUILD_DIR/linuxcnc_rs274_compile_probe.o" \
|
|
"$BUILD_DIR/linuxcnc_rs274_compile_probe.exitcode" \
|
|
"$BUILD_DIR/linuxcnc_rs274_compile_probe.stdout.log" \
|
|
"$BUILD_DIR/linuxcnc_rs274_compile_probe.stderr.log" \
|
|
"$BUILD_DIR/linuxcnc_interp_convert_source_probe.o" \
|
|
"$BUILD_DIR/linuxcnc_interp_convert_source_probe.exitcode" \
|
|
"$BUILD_DIR/linuxcnc_interp_convert_source_probe.stdout.log" \
|
|
"$BUILD_DIR/linuxcnc_interp_convert_source_probe.stderr.log"
|
|
|
|
g++ -std=c++20 -O2 \
|
|
-D_GNU_SOURCE \
|
|
-DM_PI=3.14159265358979323846 \
|
|
-DOBJECT_FWD_DWA2002724_HPP \
|
|
-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/libnml/posemath" \
|
|
"$VENDOR_DIR/src/emc/ini/inifile.cc" \
|
|
"$WRAP_DIR/linuxcnc_ini_probe.cpp" \
|
|
-lfmt \
|
|
-o "$BUILD_DIR/linuxcnc_ini_probe"
|
|
|
|
set +e
|
|
g++ -std=c++20 -O2 \
|
|
-D_GNU_SOURCE \
|
|
-DM_PI=3.14159265358979323846 \
|
|
-DOBJECT_FWD_DWA2002724_HPP \
|
|
-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/libnml/posemath" \
|
|
"$WRAP_DIR/linuxcnc_interp_state_probe.cpp" \
|
|
-o "$BUILD_DIR/linuxcnc_interp_state_probe" \
|
|
>"$BUILD_DIR/linuxcnc_interp_state_probe.stdout.log" \
|
|
2>"$BUILD_DIR/linuxcnc_interp_state_probe.stderr.log"
|
|
STATE_RC=$?
|
|
set -e
|
|
|
|
echo "$STATE_RC" > "$BUILD_DIR/linuxcnc_interp_state_probe.exitcode"
|
|
|
|
set +e
|
|
g++ -std=c++20 -O2 \
|
|
-D_GNU_SOURCE \
|
|
-DM_PI=3.14159265358979323846 \
|
|
-DOBJECT_FWD_DWA2002724_HPP \
|
|
-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/libnml/posemath" \
|
|
"$VENDOR_DIR/src/emc/rs274ngc/modal_state.cc" \
|
|
"$WRAP_DIR/linuxcnc_runtime_state_stubs.cpp" \
|
|
"$WRAP_DIR/linuxcnc_namedparam_harness.cpp" \
|
|
"$VENDOR_DIR/src/emc/ini/inifile.cc" \
|
|
-lfmt \
|
|
-o "$BUILD_DIR/linuxcnc_namedparam_harness" \
|
|
>"$BUILD_DIR/linuxcnc_namedparam_harness.stdout.log" \
|
|
2>"$BUILD_DIR/linuxcnc_namedparam_harness.stderr.log"
|
|
NAMEDPARAM_RC=$?
|
|
set -e
|
|
|
|
echo "$NAMEDPARAM_RC" > "$BUILD_DIR/linuxcnc_namedparam_harness.exitcode"
|
|
|
|
set +e
|
|
g++ -std=c++20 -O2 -ffunction-sections -fdata-sections \
|
|
-Wl,--gc-sections \
|
|
-D_GNU_SOURCE \
|
|
-DM_PI=3.14159265358979323846 \
|
|
-DOBJECT_FWD_DWA2002724_HPP \
|
|
-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/libnml/posemath" \
|
|
"$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_write.cc" \
|
|
"$WRAP_DIR/linuxcnc_runtime_state_stubs.cpp" \
|
|
"$WRAP_DIR/linuxcnc_interp_minimal_runtime.cpp" \
|
|
"$WRAP_DIR/linuxcnc_interp_minimal_harness.cpp" \
|
|
-lfmt \
|
|
-o "$BUILD_DIR/linuxcnc_interp_minimal_harness" \
|
|
>"$BUILD_DIR/linuxcnc_interp_minimal_harness.stdout.log" \
|
|
2>"$BUILD_DIR/linuxcnc_interp_minimal_harness.stderr.log"
|
|
INTERP_MIN_RC=$?
|
|
set -e
|
|
|
|
echo "$INTERP_MIN_RC" > "$BUILD_DIR/linuxcnc_interp_minimal_harness.exitcode"
|
|
|
|
if [[ "$INTERP_MIN_RC" -eq 0 ]]; then
|
|
set +e
|
|
"$BUILD_DIR/linuxcnc_interp_minimal_harness" "$MINIMAL_GCODE_FIXTURE" \
|
|
>"$BUILD_DIR/linuxcnc_interp_minimal_harness.run.stdout.log" \
|
|
2>"$BUILD_DIR/linuxcnc_interp_minimal_harness.run.stderr.log"
|
|
INTERP_MIN_RUN_RC=$?
|
|
set -e
|
|
echo "$INTERP_MIN_RUN_RC" > "$BUILD_DIR/linuxcnc_interp_minimal_harness.run.exitcode"
|
|
fi
|
|
|
|
set +e
|
|
g++ -std=c++20 -O2 \
|
|
-D_GNU_SOURCE \
|
|
-DM_PI=3.14159265358979323846 \
|
|
-DOBJECT_FWD_DWA2002724_HPP \
|
|
-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/libnml/posemath" \
|
|
-c "$WRAP_DIR/linuxcnc_rs274_compile_probe.cpp" \
|
|
-o "$BUILD_DIR/linuxcnc_rs274_compile_probe.o" \
|
|
>"$BUILD_DIR/linuxcnc_rs274_compile_probe.stdout.log" \
|
|
2>"$BUILD_DIR/linuxcnc_rs274_compile_probe.stderr.log"
|
|
RS274_RC=$?
|
|
set -e
|
|
|
|
echo "$RS274_RC" > "$BUILD_DIR/linuxcnc_rs274_compile_probe.exitcode"
|
|
|
|
set +e
|
|
g++ -std=c++20 -O2 \
|
|
-D_GNU_SOURCE \
|
|
-DM_PI=3.14159265358979323846 \
|
|
-DOBJECT_FWD_DWA2002724_HPP \
|
|
-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/libnml/posemath" \
|
|
-c "$VENDOR_DIR/src/emc/rs274ngc/interp_convert.cc" \
|
|
-o "$BUILD_DIR/linuxcnc_interp_convert_source_probe.o" \
|
|
>"$BUILD_DIR/linuxcnc_interp_convert_source_probe.stdout.log" \
|
|
2>"$BUILD_DIR/linuxcnc_interp_convert_source_probe.stderr.log"
|
|
CONVERT_SOURCE_RC=$?
|
|
set -e
|
|
|
|
echo "$CONVERT_SOURCE_RC" > "$BUILD_DIR/linuxcnc_interp_convert_source_probe.exitcode"
|
|
echo "native probes complete"
|