Usually, back-end output and runtime are closely tied and hardly independent. In order to avoid the dispersion of the development effort by having multiple back-end/engine combination, we have introduced a standard API between produced C++ code and engine. This means that the regular back-end can be used with several engines, provided that these engines only rely on the published API.
Currently, we have two standard engines:
Need for a documentation about this API.