This is a step towards making the initialize and terminate calls be generated by CMake, which in turn is towards making it possible to disable plugins at configuration time.
The other alternative discussed was static initializers, but that requires a non-portable linker flag that will prevent the linker from performing dead code elimination.
For this path I just did the ScriptInterpreter plugins. If everyone is on board with the approach I plan to land this in two patches, one with the macros as shown here and another patch where CMake generates the macro expansion for us.
no semicolon here. That the macro invocation will be forced to look more like a function call.