Cthulhu
0.2.10
Cthulhu compiler collection
|
The cthulhu framework has 3 tiers of integration.
Only uses the Common library module, in this form cthulhu can be used via a meson subproject or pkgconfig via cthulhu-common
Tier 2 has access to Common library, Compiler runtime, and Support libraries for languages, plugins, and frontends. In this form cthulhu can be consumed as either a meson subproject or via pkgconfig as cthulhu-runtime
+ cthulhu-support
. These dependencies require cthulhu-common
.
If a frontend supports dynamic loading of modules you can provide an out of tree module to it and it can load it. This requires cthulhu to be built and consumed as a shared library, static libraries cause duplication of global state, which causes issues with allocators.
For a module to be consumed by the loader it must provide at least one of the following symbols:
const language_t *lang_main(void)
const plugin_t *plugin_main(void)
const target_t *target_main(void)
Refer to Driver helper, and Compiler runtime mediator. for more information about the exact details of these types.
Static loading requires writing an in-tree module and building + registering it through meson.
Installing cthulhu onto your local system can be performed with meson
Note that by default these are no relocatable. More about this at the meson docs.