You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fire-llvm is a Clang plugin that can be used to turn ordinary C++ functions and
objects into command line interfaces (CLIs) similarly to
python-fire.
Basic example
Given the following source file calc.cc:
#include<fire-llvm/fire.hpp>structCalculator
{
intadd(int a, int b)
{
return a + b;
}
intsub(int a, int b)
{
return a - b;
}
};
Calculator calc;
intmain()
{
fire::fire_llvm(calc);
}
run clang++ -Xclang -load -Xclang $FIRE_LLVM_PLUGIN -Xclang -add-plugin -Xclang fire -I fire-llvm/include calc.cc -o calc to create an executable
calc. Here, $FIRE_LLVM_PLUGIN should expand to the location of the shared
object created when building this plugin (see Installation).
Alternatively, if you're building calc with CMake you could use the
fire_llvm_config function:
For more examples, take a look at the tests in the tests directory.
Installation
To build fire-llvm you will need the LLVM development libraries. I have tested
this with Clang/LLVM version 11 and 12. Minor tweaks might be needed for other
versions.
To build the plugin, run:
mkdir build
cd build
cmake .. -DCMAKE_CXX_COMPILER=clang++
make
where clang++ should have version 11 or 12. This will create the plugin under
build/fire-llvm/plugin/libfire-llvm-plugin.so. Due to some CMake wonkiness
the build will likely fail if you try to run several make jobs in parallel with
-j.