IDA-specific plugins that extend the idacpp REPL. Built on top of clinglite's
generic plugin infrastructure (clinglite/plugins/common/clinglite_plugin_helpers.cmake).
Generic platform plugins (linux, winsdk) live in clinglite. This directory contains only IDA-specific plugins.
| Directory | Type | Description |
|---|---|---|
common/ |
Framework | Thin wrappers around clinglite helpers + public API header |
ida_sdk/ |
Built-in | IDA SDK header list — always enabled, loads first |
idax/ |
Extension | C++23 IDA SDK wrapper (-DPLUGIN_IDAX_SRC_DIR=<path>) |
qt6/ |
Extension | Qt6 support — Core, Gui, Widgets (-DPLUGIN_QT6=ON) |
See clinglite/plugins/template/ for a detailed walkthrough.
- Copy the template to
plugins/<your-name>/ - Rename placeholders (
<PLUGIN_NAME>,<plugin_name>) - Use
idacpp_register_plugin()/idacpp_plugin_extend_pch()for IDA dispatch - Use
clinglite_plugin_generate_pch_bridge()/clinglite_plugin_make_shared()directly - Enable with
-DPLUGIN_<YOUR_NAME>_SRC_DIR=<path>
- Discovery:
plugins/CMakeLists.txtscans for*/CMakeLists.txtand includes each directory whosePLUGIN_<NAME>variable isON. - Registration: Each plugin calls
idacpp_register_plugin()(thin wrapper around clinglite's_clinglite_plugin_register_impl(IDACPP, ...)). - Dispatch:
clinglite_generate_plugin_dispatch(IDACPP ...)generatesplugin_dispatch.cppwithidacpp::plugins::setupAll(). - PCH assembly: Merges clinglite plugin + idacpp plugin PCH contributions.
- Runtime:
clinglite::plugins::setupAll()runs first (generic plugins), thenidacpp::plugins::setupAll()(IDA-specific plugins).
| Function | Source | Purpose |
|---|---|---|
idacpp_register_plugin() |
idacpp wrapper | Register with IDACPP dispatch |
idacpp_plugin_extend_pch() |
idacpp wrapper | Add to IDACPP PCH contributions |
clinglite_plugin_generate_pch_bridge() |
clinglite | Generate bridge header |
clinglite_plugin_make_shared() |
clinglite | Wrap static→shared for JIT |
clinglite_generate_plugin_dispatch() |
clinglite | Generate dispatch .cpp |
- clinglite plugins — generic (linux, winsdk) via
clinglite::plugins::setupAll() - ida_sdk (built-in) — IDA SDK headers and libraries via
idalib_setup.cpp - idacpp plugins — IDA-specific (qt6, idax) via
idacpp::plugins::setupAll()
- Plugin cmake variables use the
PLUGIN_<NAME>_prefix - Setup functions:
<name>_plugin_setup(clinglite::Interpreter&, clinglite::PluginSetupOptions&) - All setup operations should be idempotent (safe to call with or without PCH)
- Plugins that layer on top of
pro.huseclinglite_plugin_generate_pch_bridge()