I've been spending the past few hours reading up on and playing with Icarus, commonly known as Icarus Verilog, which is an open source Verilog compiler/simulator package much like GHDL is for VHDL. There are some differences: Icarus is written in C++ instead of Ada, and it compiles to an intermediate language called VPP which is then executed/simulated by a standalone utility, 'vpp'.
Good design throughout, but the really nice part is new: Icarus/VPP now supports VHDL-to-VPP compilation! The VHDL support isn't finished yet, but I am going to try to leverage what is there and see if I can replace GHDL with Icarus for use with Controlix, as the primary compiler, because it would make porting Controlix to bare-metal hardware easier. The reason for this is that porting the 'vpp' utility would be all that would be needed and it is also C++ code, much easier to statically link than Ada.
The 'vpp' source code is small enough that I should be able to test the feasibility of this idea quickly, and if so I will be able to then (also quickly) try out the Icarus trunk from the GitHub repo on the Controlix source. One sticky point is VHPI - it will probably be necessary to refactor that interface's use cases into some sort of bounce buffer which can be mapped through one of the special device I/O primitives that VPP supports so I can fake a basic device interface for the POSIX target and just mux/demux device I/O and memory access through the hardware memory map in the bare-metal case.
Wish me luck....