G84 runtests were failing locally because the spindle was not started in
the test NGC files, and an invalid spindle state (i.e. not stopped, CW or
CCW) was ignored in the interp.
Unit tests for interp are now broken up into:
* tests_main.cc, which defines some common resources and the main function.
* test_interp_basics.cc, which has the initial batch of unit tests
It's trivial to add more test_XXX files as needed to cover more interp
test cases.
The meson build system is expanded a bit:
* meson.build files in subdirectories list files / include directories
(relative to that subdir) for later use. These build files should NOT
include any dependencies (so they can be included in any order)
* top-level meson.build specifies everything else (deps, libraries,
targets, etc.) after including the subdir files
* Some kludgy mock files are used to pave over stray missing symbols not
really needed for unit tests
The meson build could eventually be expanded to replace the existing autotools / make build if
desired (there are guides on how to do this), or scrapped and replaced
with CMake 3 if need be.
The strstore function is just a means to make sure that a const char *
is not deleted prematurely (it also does some caching to avoid creating
duplicate strings).
Having a separate set of strings between pyplugin and librs274 may
increase memory used slightly (since strings will no longer be shared).
Uses a simple meson build file to hackily build and run the unit test
executable. Eventually, the shortcuts taken in the build file could be
fixed up (i.e. with proper object file dependencies, build flags, etc.)